4

大学向けのプロジェクトで少し問題があります。

遺伝的アルゴリズムを使用して文書分類を実装する必要があります。

私はこの例を見て、(たとえば) 遺伝的アルゴリズムの原理を理解しましたが、文書分類でそれらをどのように実装できるかはわかりません。フィットネス機能がわかりません。

これが私がこれまでになんとか考えたものです(おそらく完全に間違っています...)

カテゴリがあり、各カテゴリがいくつかのキーワードで説明されていることを受け入れます。
ファイルを単語に分割します。
ファイルからのランダムな単語で満たされた配列 (たとえば 100 個の配列ですが、ファイルのサイズによって異なります) から最初の母集団を作成します。
1:
集団内の各子供に最適なカテゴリを選択します (その中のキーワードを数えることによって)。
母集団内の 2 人の子供をそれぞれクロスオーバーします (各子供の半分を含む新しい配列) - "crossover" クロスオーバー
から残された残りの子供を、ファイルからランダムに使用されていない単語で埋めます - "evolution??"
新しい母集団からのランダムな子のランダムな単語を、ファイルからのランダムな単語に置き換えます (使用されているかどうかに関係なく) - "mutation"
最良の結果を新しい母集団にコピーします。
人口制限に達するか、カテゴリが十分な回数見つかるまで 1 に移動します。

これが正しいかどうかはわかりませんが、アドバイスをいただければ幸いです。
とても感謝しています!

4

2 に答える 2

3

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);

したがって、これは万能のソリューションではありませんが、適切なスタートを切ることができます。キリル・ポズドラヴィ

于 2011-01-17T20:55:21.663 に答える
2

Learning Classifier Systemsが役に立つ/興味深いと思うかもしれません。LCS は、分類問題を対象とした一種の進化的アルゴリズムです。Eiben & Smith のIntroduction to Evolutionary Computing にそれらに関する章があります。

于 2011-01-17T19:14:09.963 に答える