MatlabGPTIPSフレームワークを使用して分類の問題を解決しようとしています。これまでのところ、妥当なデータ表現と適応度関数を構築することができ、クラスあたりの平均精度は65%近くになりました。
私が今必要としているのは、2つの困難を伴ういくつかの助けです。
私のデータは偏っています。基本的に二項分類問題を解いていて、データの20%だけがクラス1に属し、残りの80%はクラス0に属しています。最初は適応度関数として予測の精度を使用しましたが、それは本当に悪かったです。私が今持っている最高のものは
Fitness = 0.5 *(PositivePredictiveValue + NegativePredictiveValue)-const * ComplexityOfSolution
データの偏りを修正するために関数を改善するにはどうすればよいですか。
- 2番目の問題は過剰適合です。データを3つの部分に分割しました:トレーニング(70%)、テスト(20%)、検証(10%)。トレーニングセットで各染色体をトレーニングし、テストセットでその適応度関数を評価します。このルーチンにより、母集団で最高の個人のテストデータで0.82の適合度に達することができます。しかし、検証データに対する同じ個人の結果はわずか60%です。新しい母集団が生成される前に、毎回最良の個人の検証チェックを追加しました。次に、検証セットの適合度とテストセットの適合度を比較します。差が5%を超える場合は、適応度関数のソリューションの複雑さに対するペナルティを増やします。しかし、それは役に立ちませんでした。また、各世代で検証が設定されたすべての個人を評価し、過剰適合した個人を削除することもできます。しかし、私はしません テストデータと検証データの違いを確認してください。ここで他に何ができますか?
アップデート:
私の2番目の質問では、素晴らしい記事「遺伝的プログラミングでの過剰適合の制御に関する実験」を見つけました。GPでの過剰適合の処理に関するいくつかの記事の著者のアイデアとともに、この問題に対する多くの異なるアプローチへの多くの参照を含む印象的なレビューがあります。今、私は自分の問題に対して試すことができるたくさんの新しいアイデアを持っています。残念ながら、データ内の不均衡なクラスの比率を考慮に入れる適切な適応度関数を選択することについては、まだ何も見つかりません。