多くの特徴量から有効な特徴量を選択する方法として遺伝的アルゴリズムを使いました。
前回のランダムシャッフル法だと2のn乗回の中から偶然見つける感じでしたが、
遺伝的アルゴリズムを使うと優秀な遺伝子同士の交叉から新しい遺伝子世代を作り進化させます。
つまりAIを進化させるのに生物の進化のまねをさせます。
1)特徴量リストAの個数をn個とする
2)Aのn個の要素を1個づつ取り出して
選択する=1 選択しない=0
とする遺伝子型のリストをBとする
3)個体集団Bの遺伝子をm個(1世代)初期化
4)世代ループ開始
5) 個体集団の個体の評価ループm回開始
6) 遺伝子Bから特徴量リストAを得る
7) 特徴量Aで学習・予測・評価
8) m個のBの評価からエリート遺伝子を選択
9) エリート遺伝子を交叉させ子供遺伝子を作成
10) 次世代集団を現行、エリート、子供集団から作成
11) 次世代集団に突然変異を加える
12) 進化の状況を表示
13) 現世代を次世代に入れ替える(m回で終了)
14)世代ループ終了
15)最後の世代のベスト1位を表示
16)ベスト1位のモデルを保存
50世代で進化させた結果の答えがこれです。
少しずつRMSEが進化(減少)したことが分かりますが、特徴量40個からは
まだまだ精度甘いので新しく特徴量を見つける作業に入ります。
見つけたら、この遺伝的アルゴリズム(GA)で特徴量を選択してLightGBMで
モデルを作るので、特徴量を選択の試行錯誤の必要が無くなります。
AI作成の自動化ができるのではないかと思います。
「AI競馬」私も序章で出ています。