2011-01-17 10 views
4

私の大学のプロジェクトには少し問題があります。遺伝的アルゴリズムを用いた文書の分類、

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

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

は、私がこれまで考えることに成功してきたものである(そのおそらく完全に間違って...)

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

これが正しいかどうかわかりませんが、いくつかのアドバイスがありますか。
非常に感謝しています!

+0

正確にシステムが達成する必要があるものについて正確に説明できますか? 「与えられたX初期データ、出力Y」のようなもの? – sinelaw

+0

私たちはXのカテゴリを持っています。私たちが与えたすべてのファイルを正しいカテゴリに入れる必要があります。 –

+1

システムを訓練する必要があります。たとえば、事前分類された文書の場合はデータベースがあり、遺伝的アルゴリズムは分類規則を発展させるためにそれを使用できます。 – sinelaw

答えて

3

Ivaneは、適切にGAの分類を文書化するために適用するために:

  1. あなたが進化できるコンポーネントのシステムに問題を軽減する必要があります。
  2. 1つのドキュメントでドキュメント分類のためのGAトレーニングを行うことはできません。

だから、あなたが説明してきた手順は、正しい軌道に乗っているが、私はあなたにいくつかの改善点をあげる:

  • は、トレーニングデータの十分な量を持って:あなたは、どの文書のセットが必要はすでに分類されており、遭遇する可能性のある文書の範囲を網羅するほど多様です。
  • これらのドキュメントのサブセット、つまりトレーニングデータセットを正しく分類するように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); 
} 

category = bestGA.Classify(document); 

これはすべての解決策ではありませんが、まあまあです。 Pozdravi、 Kiril

関連する問題