私は次の問題に直面しています。異常スコアに応じて、いくつかの操作のランキングを作成できるシステムがあります。パフォーマンスを向上させるために、最も異常な操作が最初の位置に表示されるように、特徴選択を実行する遺伝的アルゴリズムを実装しました。私が行っているのは、正確に特徴選択ではありません。バイナリ変数を使用しておらず、合計が1に等しい0-1の間の浮動変数を使用しているためです。
現在、私は50世代にわたって200人の人口を持っています。私は評価関数としてシステム自体を使用しており、真陽性率を使用して、最初のN個の位置に出現する異常な操作の数を数えてソリューションの品質を評価します(Nは異常な操作の数です)。次に、オペレーターとして、均一なクロスオーバーと私は突然変異のために個人の細胞の値を変更します。もちろん、合計が1になるように個人を修正するためのチェックを行うたびに、最後にエリート主義を使用して、これまでの最良の解決策を長期にわたって保存します。
1つの機能の値が非常に高いことがわかりました。これはしばしば重要ですが、常にではありません。これにより、他の機能の値が非常に低くなります。GAが過剰適合しているのではないかと思います。良い停止基準を見つけるのを手伝ってもらえますか?
遺伝的アルゴリズムとプログラミングの過剰適合は大きな問題であり、私を含め、現在GPコミュニティの研究の焦点となっています。研究のほとんどは、遺伝的プログラミングと分類/回帰モデルの進化を目的としていますが、それはあなたの問題にも関係している可能性があります。あなたを助けるかもしれない(そして私も一緒に働いている)いくつかの論文があります:
scholar.google.comでタイトルを検索すると、論文(最初の2つはPDFで直接)を見つけることができます。
基本的に、すべての論文が扱うのは、進化を指示するためにトレーニングデータのサブセットのみを使用し、世代ごとにこのサブセットを(ランダムに)変更するというアイデアです(1世代のすべての個人に同じサブセットを使用)。興味深いことに、実験では、このサブセットが小さいほど、単一要素のサブセットのみを使用するという極端な場合まで、過剰適合が少なくなることが示されています。論文はこのアイデアに取り組み、いくつかの調整(完全なデータセットとサブセットの切り替えなど)で拡張します。しかし、最初に言ったように、これはすべて、特徴選択ではなく、(多かれ少なかれ)シンボリック回帰を目的としています。
私はかつて別のアプローチを試しました(これも遺伝的プログラミングによるシンボリック回帰のために)-トレーニングデータのサブセット(たとえば半分)を使用して進化を推進します(つまりフィットネスのために)が、「これまでのところ最良の」解決策は残りのトレーニングデータの結果。過剰適合はそれほど重要ではありませんでした。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加