1

(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 時間以上)。

4

1 に答える 1

0

ニューラル ネットワークの代わりに、検証モデルに線形判別分析 (LDA)を使用できます。トレーニングははるかに高速ですが、もちろん、非線形の関係を表すことはできません。遺伝的プログラミングを試しましたか?モデルの構築と機能の選択を同時に試行するため、機能選択が組み込まれています。分類も含む非常に強力な遺伝的プログラミング実装を備えたHeuristicLabを試すことができます。

于 2013-05-20T22:29:11.360 に答える