FioneのAutoMLに、余った学習時間で乱数シードを変えて学習し直す処理と、同じアルゴリズムの上位3候補をアンサンブルへ渡す改善案が出ています。
余った時間で異なるシードのモデルを平均する
最終的な全データ再学習を終えた後、時間とモデルサイズに余裕があれば、ブースティングや森林モデルを別のシードで追加学習します。予測値だけでなく、重要度や寄与度も平均します。Linearはシードを変えても同じ結果になるため繰り返しません。DeepLearningも全データへの最終再学習を行わない既存の扱いで、この追加再学習の対象外です。
提案コードの初期値はBAG_EXTRA=4で、通常の1回に最大4回を追加します。BAG_TIME_FACTOR=2.0により、追加学習へ進むには最初の再学習時間の2倍以上の残り時間を必要とします。追加される回数は残り時間やサイズで変わり、必ず5モデルになるわけではありません。これらは内部定数で、学習画面やTrainConfigに新しい設定項目を追加したものではありません。
各アルゴリズムの上位3試行を候補にする
TOP_TRIALS=3として、それぞれの探索の上位3試行までをアンサンブル選択に渡します。内部の候補名はFamily、Family#2、Family#3となり、リーダーボードもアルゴリズムごとに最大3行になります。すべての候補が最終モデルへ採用されるとは限りません。
一方、keep_cv_modelsで保持する交差検証モデルは各アルゴリズムの最良試行だけです。表示される全候補のモデルを保存する設定ではありません。
精度だけでなく予測時間とサイズを比較する
この案を含むコードの検証では、同じデータ分割と学習時間を使い、学習から分離したテストデータで損失と予測時間を比較します。TrainConfigの既定値はmax_runtime_secs=3600、nfolds=5、seed=0、keep_cv_models=falseです。追加学習のために時間制限を必ず延ばす必要があるという意味ではありません。
追加モデルが増えると保存サイズと予測コストが増えます。追加分は各メンバー40MiB、メンバー合計90MiBの制限を実測でも満たす場合だけ保持します。ただし既存処理には小さい候補がないときに制限超過の1メンバーを通知付きで残す経路があり、出力ファイルの絶対的な上限保証ではありません。追加再学習が失敗した場合はrefit_error通知を確認します。
PRの15データセット・3分割の比較では、両変更を合わせた損失改善は平均約0.45%と小さく、すべてのデータで向上したわけではありません。交差検証の表示値だけで判断せず、予測APIの応答時間、メモリー、保存容量まで含めて採用を判断します。