Классификация документов с использованием генетических алгоритмов

У меня небольшая проблема с моим проектом для университета.

Мне нужно реализовать классификацию документов с использованием генетического алгоритма.

Я просмотрел этот пример и (скажем так) понял принципы генетических алгоритмов, но я не уверен, как они могут быть реализованы в классификации документов. Не могу разобраться с фитнес-функцией.

Вот что мне удалось придумать до сих пор (это, вероятно, совершенно неправильно...)

Примите тот факт, что у меня есть категории, и каждая категория описывается некоторыми ключевыми словами.
Разделите файл на слова.
Создайте первую совокупность из массивов (например, 100 массивов, но это будет зависеть от размера файла), заполненных случайные слова из файла.
1:
Выберите лучшую категорию для каждого ребенка в совокупности (путем подсчета ключевых слов в ней).
Пересеките каждые 2 ребенка в совокупности (новый массив, содержащий половину каждого детей) - "кроссовер"
Заполнить остальные дети, оставшиеся от кроссовера, случайными неиспользованными словами из файла - "эволюция??"
Заменить случайные слова в случайном потомке из новой популяции случайным словом из файл (используемый или нет) - "мутация"
Скопируйте лучшие результаты в новую совокупность.
Переходите к 1, пока не будет достигнуто некоторое ограничение совокупности или какая-либо категория не будет найдена достаточное количество раз

Я не уверен, что это правильно, и буду рад получить несколько советов, ребята.
Большое спасибо!


person Ivan Nikolchov    schedule 17.01.2011    source источник
comment
Можете ли вы уточнить, чего именно должна достичь система? Что-то вроде заданных исходных данных X, выходных данных Y?   -  person sinelaw    schedule 17.01.2011
comment
У нас есть X категорий. Система должна поместить все файлы, которые мы ей даем, в правильную категорию.   -  person Ivan Nikolchov    schedule 17.01.2011
comment
Вам необходимо обучить систему — например, если у вас есть база данных с предварительно классифицированными документами, генетический алгоритм может использовать ее для разработки правил классификации.   -  person sinelaw    schedule 17.01.2011


Ответы (2)


Ivane, чтобы правильно применить GA к классификации документов:

  1. Вы должны свести проблему к системе компонентов, которые можно развивать.
  2. Вы не можете пройти обучение GA для классификации документов по одному документу.

Итак, шаги, которые вы описали, находятся на правильном пути, но я дам вам некоторые улучшения:

  • Имейте достаточное количество обучающих данных: вам нужен набор документов, которые уже классифицированы и достаточно разнообразны, чтобы охватить диапазон документов, с которыми вы, вероятно, столкнетесь.
  • Научите GA правильно классифицировать подмножество этих документов, также известное как набор обучающих данных.
  • В каждом поколении проверяйте свой лучший образец по набору данных проверки и прекращайте обучение, если точность проверки начинает снижаться.

Итак, что вы хотите сделать, это:

prevValidationFitness = default;
currentValidationFitness = default;
bestGA = default;

while(currentValidationFitness.IsBetterThan( prevValidationFitness ) )
{
    prevValidationFitness = currentValidationFitness;

    // Randomly generate a population of GAs
    population[] = randomlyGenerateGAs();

    // Train your population on the training data set
    bestGA = Train(population);

    // Get the validation fitness fitness of the best GA 
    currentValidationFitness = Validate(bestGA);

    // Make your selection (i.e. half of the population, roulette wheel selection, or random selection)
    selection[] = makeSelection(population);

    // Mate the specimens in the selection (each mating involves a crossover and possibly a mutation)
    population = mate(selection);
}

Всякий раз, когда вы получаете новый документ (тот, который ранее не был классифицирован), теперь вы можете классифицировать его с помощью своего лучшего GA:

category = bestGA.Classify(document);

Так что это не окончательное решение, но оно должно дать вам достойное начало. Поздрави, Кирилл

person Kiril    schedule 17.01.2011

Вы можете найти Системы классификаторов полезными/интересными. LCS — это тип эволюционного алгоритма, предназначенный для задач классификации. О них есть глава в книге Эйбена и Смита Introduction to Evolutionary Computing. .

person Dan Dyer    schedule 17.01.2011