(mxn) m インスタンスのバイナリ データセットと m >> n の n 個のフィーチャがあります。また、ターゲットの変数またはクラスの属性もあり、これもバイナリです。遺伝的アルゴリズムを使用して特徴選択を行いたい。GA では 0/1 の文字列を使用することにしました。機能が選択されていない場合は 0、機能が選択されている場合は 1 です。ランダムな K セットのビット文字列を生成しました。したがって、これらのビット列の各 K は、可能な機能の選択を表します。フィットネス関数を開発するために、これらの K 個の機能セット (モデル) のそれぞれでニューラル ネットワークをトレーニングし、別の検証セットの精度に基づいて、モデルごとにこのフィットネス関数を作成しました:-
fitness=tradeoffk*Valacc+(1-tradeoffk)*(ones(no_of_models,1)*n-featSel)/maxFeat;
このフィットネス関数は、トレーニングに渡される特徴の数 (featSel) と、ニューラル ネットワークが報告する検証精度との間のトレードオフのようなものです。0.5、0.2、0.8 のようにさまざまな値を tradeoffk に設定します。
GAを10回繰り返しました。各反復は 20 世代にわたって行われ、フィットネス関数がどのように成長するかを確認しようとしました。ただし、フィットネス機能に大きな変化はありません。GA では、一般にフィットネス関数は成長してから安定すると予想されますが、ここではごくわずかしか成長しません。
たとえば、これはこれらの反復の 1 つの出力例です:-
gen=001 avgFitness=0.808 maxFitness=0.918
gen=002 avgFitness=0.808 maxFitness=0.918
gen=003 avgFitness=0.815 maxFitness=0.918
gen=004 avgFitness=0.815 maxFitness=0.918
gen=005 avgFitness=0.817 maxFitness=0.918
gen=006 avgFitness=0.818 maxFitness=0.918
gen=007 avgFitness=0.818 maxFitness=0.918
gen=008 avgFitness=0.819 maxFitness=0.918
gen=009 avgFitness=0.819 maxFitness=0.918
gen=010 avgFitness=0.819 maxFitness=0.918
gen=011 avgFitness=0.819 maxFitness=0.918
gen=012 avgFitness=0.819 maxFitness=0.918
gen=013 avgFitness=0.819 maxFitness=0.918
gen=014 avgFitness=0.819 maxFitness=0.918
gen=015 avgFitness=0.819 maxFitness=0.918
gen=016 avgFitness=0.819 maxFitness=0.918
gen=017 avgFitness=0.819 maxFitness=0.918
また、ニューラル ネットワークのトレーニングには多くの時間がかかります (20 世代で 2 時間以上)。