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

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

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

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

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

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

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

Ответы [ 2 ]

3 голосов
/ 17 января 2011

Иван, чтобы правильно применить 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);

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

2 голосов
/ 17 января 2011

Вы можете найти Learning Classifier Systems полезной / интересной. LCS - это тип эволюционного алгоритма, предназначенного для задач классификации. О них есть глава в Eiben & Smith 'Введение в эволюционные вычисления

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...