2011-01-17 2 views
4

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

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

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

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

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

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

+0

Можете ли вы уточнить, чего именно должна достичь система? Что-то вроде «Учитывая X исходных данных, вывод Y»? – sinelaw

+0

У нас есть категории X. Система должна поместить все файлы, которые мы даем в правильной категории. –

+1

Вам необходимо обучить систему - например, если у вас есть база данных, если предварительно классифицированные документы, генетический алгоритм может использовать ее для разработки правил классификации. – sinelaw

ответ

3

Иван, чтобы правильно применять ГА к документу классификации:

  1. Вы должны свести задачу к системе компонентов, которые могут быть эволюционировали.
  2. Вы не можете проводить обучение 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); 

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

Смежные вопросы