FioneのAutoML開発版で探索と派生特徴量の設定を確認する

FioneのAutoML開発版に、探索が早く終わりすぎる問題の修正、モデル種類の追加、派生特徴量の自動選別が入りました。従来のPython刷新の紹介に続き、今回は学習条件と結果の評価に関わる変更を整理します。

探索の初期値とモデルの種類が変わる

従来の探索では、Optunaの最初のランダム試行中に改善停止の判定が働き、十分に探索できない場合がありました。修正後はモデル種類ごとの最初の10試行を停滞の判定から除き、stopping_roundsの初期値も3から10へ変更します。時間上限やmax_modelsなど別の停止条件は引き続き働くため、試行回数が固定で保証されるわけではありません。

LightGBM、XGBoost、CatBoost、ExtraTreesにRandomForest、Linear、DeepLearningが加わります。Linearは分類でロジスティック回帰、回帰でリッジ回帰、DeepLearningは2層のMLPです。H2Oと同じ実装や学習結果になるという意味ではなく、アンサンブルもGLMによるスタックではありません。

派生特徴量は初期値で有効

feature_engineeringの初期値はtrueです。学習画面の該当チェック項目で有効・無効を選びます。エンジンをPythonから利用する検証では、例えば次のように無効化できます。targetは実データの目的列へ置き換えます。

from fione.engine.config import TrainConfig
config = TrainConfig(target="label", feature_engineering=False)

候補には文字列の語や形、カテゴリや数値の頻度、行単位の件数、日付の要素と差、数値列の組み合わせ、グループ平均、クラスタなどがあります。特徴量の値を作る処理自体は目的変数を読みません。ただし採否の判断には予測誤差を使います。

最大約2万行のサンプルと小さなLightGBMで候補群を比較し、平均損失の0.1%と差の標準誤差3倍を超える改善があり、分割の70%以上で改善することなどを求めます。さらに別の分割で最終確認します。選別に使う時間は残り時間の最大10%で、確認を完了できなかった候補は採用されません。短い実行で派生特徴量が追加されなくても、それだけで異常とはいえません。

精度と資源消費は手元のデータで比較する

探索が早く終わらなくなる分、以前より時間を使う場合があります。PR内の測定でも新モデル種類による明確な改善は出ておらず、派生特徴量の改善は小さいものでした。有効・無効を同じ条件で比較し、学習に使わないテストデータで評価します。採否判定と交差検証が同じ行を使うため、交差検証のスコアはやや楽観的です。

LinearとDeepLearningはone-hot展開したデータが1億セルを超える場合、通常の全モデル探索から通知付きで外れます。全データをメモリーに読むため、モデル種類が増えても大規模データを無制限に扱えるわけではありません。複数列から作った特徴量の寄与度・重要度は元の列へ等分され、因果関係を示すものでもありません。

関連PR

コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です