遺伝アルゴリズム(GA)に基づくR特徴選択

5203 ワード

遺伝アルゴリズム(GA)とは?GA中のGA.ソリューションはどのようなものですか?GAプロセスおよびそのキャリア.フィットネス機能.Rの遺伝アルゴリズムは自分で試してみます.概念について.画像タイトル
アニメーションソース:「筋肉ベースの両足動物運動」-Thomas Geijtenbek
[TwitterとLinkedInで私を見つけた]
プロジェクトの背後にある理念は、無限の可能性の間で決定するのに役立つ黒い箱を想像しています.その基準は、私たちが制定した問題を解決するために受け入れられるソリューション(時間と品質)を見つけることです.
遺伝アルゴリズムとは何ですか.遺伝アルゴリズム(GA)はチャールズダーウィンの自然選択思想に啓発された数学モデルである.
自然選択は数世代の中で最も適した人だけを残している.
想像してみてください.1900年には100匹のウサギがいました.今日の種群を見てみると、ウサギは祖先よりもテクニックがあり、食べ物を探すのが上手です.
GA中のGAは機械学習において,遺伝アルゴリズムの1つの用途は予測モデルを作成するために正確な数の変数を得ることである.
正しい変数サブセットを選択することは、論理と最適化を組み合わせる問題です.
この技術が他の技術よりも優れている利点は、最良の以前のソリューションから最良のソリューションを得ることができることである.時間の経過に伴う選択を改善できる進化アルゴリズム.
GAの考え方は,世代ごとに異なる解を組み合わせて,それぞれから最適遺伝子(変数)を抽出することである.このようにして、より適切な新しい人を創造することができます.
超同調パラメータ,関数の最大値(または最小値)の探索,または正しいニューラルネットワークアーキテクチャ(ニューラル進化)の探索など,GAの他の用途を見つけることができる.
特徴選択におけるGAGAの各可能な解決策、すなわち選択された変数は、全体として扱われるため、ターゲットに対して単独で変数をソートすることはない.
これは、変数がグループで実行できることを知っているため、重要です.
ソリューションはどのようなものですか?例を簡単に維持し、合計6つの変数があると仮定します.
1つの解決策は、var 2、var 4、var 5のような3つの変数を取ることができる.
別の解決策はvar 1およびvar 5であってもよい.
これらの解決策は、群れの中でいわゆる個体または染色体である.これらは私たちの問題の可能な解決策です.
遺伝学algortihmsワークフロー信用画像:Vijini Mallawaarachchi
画像から,解決策3は,c(1,0,1,0,1,1)の単一熱ベクトルとして表すことができる.各1は、その変数を含むソリューションを表します.この場合:var 1,var 3,var 5,var 6.
解決策4はc(1,1,0,1,1,0)であるが.
ベクターの各位置は遺伝子である.
GAプロセスとその演算子遺伝学AlgortihmsワークフローGAの基本思想は、異なる変数を表すいくつかのランダムで可能な解決策(populationと呼ばれる)を生成し、反復プロセスで最適な解決策を組み合わせることである.
この組合せは基本的なGA操作,すなわち選択,変異,および交差に従う.
選択:世代の中で最適な人を選択します(つまり、最高ROCのソリューションを提供します).クロス:2つのソリューションの遺伝子に基づいて2つの新しい個体を作成します.これらの子供は次の世代に現れます.突然変異:個体内で遺伝子をランダムに変化させる(すなわち、0〜1を反転させる).私たちの考えは、より速いウサギのような、すべての世代がより良い個体を見つけることができるということです.
遺伝アルゴリズムがどのように機能するかについてのVijini Mallawaarachchiの投稿をお勧めします.
これらの基本的な動作により、アルゴリズムは、ターゲットを最大化する方法でそれらを組み合わせることによって、可能な解決策を変更することができる.
フィットネス機能は、例えば、ROC曲線の下面積を最大化するソリューションと一致することを目標としている.これは適応度関数として定義される.
適応度関数は、より複雑に聞こえる場合に可能なソリューション(または染色体)を採用し、選択の有効性を評価します.
一般に、適応度関数は、単一熱ベクトルc(1,1,0,0,0)を用い、例えば、var 1和を有するランダム森林モデルvar 2を作成し、適合度値(ROC)を返す.
このコードの適合度値は、ROC value/number of variablesとして計算されます.このようにすることにより,このアルゴリズムは大量の変数罰解を利用する.Akaike情報基準やAICの考え方に似ています.
Rの遺伝アルゴリズム!私の目的は、その動作原理を理解しながら、適応度関数を変更するなど、新しい方法を試してみるためのきれいなコードを提供することです.これは重要な点です.
独自のデータセットで使用するには、data_を確認してください.x(データボックス)とdata_y(因子)とこのcustom_fitness機能は互換性があります.
主図書館GAはLuca Scruccaによって開発された.例については、ここを参照してください.
重要なヒント:次のコードは不完全です.この例を実行するためにリポジトリをクローンします.
data_x:入力データフレーム
data_y:目標変数(因子)
GAパラメータ
param_nBits=NcoIビット(データ_x)col_names = colnames(data_x)
#実行GA ga_GA_1 = ga(fitness = function(vars)custom_fitness(vars = vars,
                                                 data_x  =   data_x,
                                                 data_y  =  data_y,
                                                 p_sampling  =  0.7),#        
         type  =  “ binary”,#optimization    
         crossover = gabin_uCrossover,   #cross-over  
            =  3,#  Ñ  。        
         pmutation  =  0.03,#mutation rate prob
         popSize  =  50,#indivduals / solutions   
         nBits  =  param_nBits,#    
         names = col_names,#variable name
         run = 5,#max iter    (    )
         maxiter  =  50,#total runs generation
         monitor = plot,#          
         keepBest  =  TRUE,#          
         parallel  =  T,#      
         seed = 84211  #       

)#検査結果要約(ga_GA_1)——遺伝アルゴリズム————————————————————
GA設定:Type=binary人口規模=50数世代=50エリート主義=3交差確率=0.8突然変異確率=0.03
GA結果:反復数=17適合度関数値=0.2477393解=
 radius_mean  texture_mean  perimeter_mean  area_mean  smoothness_mean  compactness_mean

[ 1,] 0 1 0 0 0 1
 concavity_mean    points_mean  symmetry_mean  fractal_dimension_mean   ... 

[ 1,] 0 0 0 0
 symmetry_worst  fractal_dimension_worst

[1,]0 0#以下の行は、最終的および最適なソリューションの変数名best_を返します.vars_ga = col_names [ ga_GA_1 @ solution [ 1,] == 1 ]
#最適なソリューションの変数をチェックします.best_vars_Ga[1]「texture_mean」「compactness_mean」「area_worst」「concavity_worst」Rにおける遺伝アルゴリズム
青点:人口健康平均値.緑点:最高のフィットネス価値.注意:結果がそんなに速く期待しないでください.
最適な選択に基づいて精度を計算します!
get_accuracy_metric(data_tr_sample=data_x,target=data_y,best_vars_ga)[1]0.9508279精度は約95.08%であり、ROC値は0.95に近い(ROC=適応値*変数数、適応度関数のチェック).
解析結果はカットポイントなしで精度(採点データ)を解析するのは好きではありませんが、このKaggle投稿の結果と比較すると役に立ちます.
上記の投稿の著者らは,5変数に基づく再帰的特徴除去またはRFEを用いて類似の精度結果を得たが,我々の解は4変数を保持した.
自分で新しい適応度関数を試してみましょう.いくつかの解決策は依然として大量の変数を提供しており、平方変数の数を試してみることができます.
試してみるもう一つのことは、ROC値を取得するアルゴリズム、さらにはメトリック基準を変更するアルゴリズムです.
いくつかの構成は長い間続いています.モデリング前にクラスをバランスさせ、p_を使用samplingパラメータで再生します.サンプリング技術はモデルに重大な影響を及ぼすことができる.詳細については、モデルパフォーマンス投稿のサンプルサイズとクラスバランスを参照してください.
変異率やエリート主義をどう変えるのか.または他の交差方法を試しますか?
より多くの可能性のあるソリューション(時間コスト)をpopSizeで同時にテストします.
任意の見解や考えを勝手に共有して、選択を改善します.
この例を実行するためにリポジトリをクローンします.
概念遺伝アルゴリズムと深さ学習の間に平行関係が存在することについて,反復と改良の概念は時間の経過とともに類似している.
p_を追加しましたsamplingパラメータは速度を速めます.通常、目標を達成します.深さ学習で使用されるバッチの概念に似ています.もう一つの並列はGAパラメータrunとニューラルネットワークトレーニングにおける早期停止基準である.
しかし、最大の類似点は、2つの技術が自然を観察することにある.この2つの場合,人間はニューラルネットワークと遺伝学がどのように動作するかを観察し,その挙動を模倣した簡略化数学モデルを作成した.自然は数百万年の進化を遂げているのに、なぜ真似をしないのだろうか.