H2OAutoMLのリーダーボード
H2O Auto MLの使い方を学び始めたばかりで、バイナリ分類モデルを試しています。
モデルのランキングが実行ごとに変わる理由を理解しようとしています。
トップ5モデルはトップ5のままですが、モデルはわずかに上位または下位にシフトします。
DRFは1回は2位でしたが、もう1回は3位でした。
変化を引き起こすと私が推測できる理由はいくつかあります。
- アルゴリズムへのシードは毎回変更されます
- リーダーボードフレームが割り当てられていません
- RFには、プロセスの一部としてランダムサンプリングが含まれ、その結果、毎回異なるツリーが構築されます。
- リーダーボードは変更されません。データ/コードに対するその他の変更が変更の原因となります。
これをもっとよく理解するのを手伝ってくれませんか。
回答
シードを設定していないようですので、そこから始めてください。固有のランダム性を持つアルゴリズム(XGBoost、GBM、ランダムフォレストなど)が毎回同じ回答を生成するためには、(少なくとも)ランダムシードを設定する必要があります。 H2O AutoMLには、単一のseed引数(すべての個々のアルゴリズムにパイプダウンされます)があり、毎回同じ値に設定すると、ほとんどのモデルは繰り返し実行しても同じになります。デフォルトでは、AutoMLはランダムなフォールドを使用した相互検証も行うため、これにより、毎回同じフォールドが使用されることも保証されます。
いくつかの注意点があります。シードを設定しても、H2Oディープラーニングは(デフォルトでは)再現できないため、これらのモデルは常に変更されます。「すべてのモデル」のスタックアンサンブルは、他の多数のモデルに加えてディープラーニングモデルを使用するため、最終的なアンサンブルも再現できません。
最後に、のmax_models代わりにmax_runtime_secsを使用してAutoMLの実行時間を制御する必要があります。そうしないと、後続の実行でリーダーボード(およびすべてのモデルスタックアンサンブル)で異なる数のモデルを取得する可能性があります。