9

最近、検証セットのインデックスを指定できるのfoldsパラメータについて知りました。xgb.cv次に、ヘルパー関数xgb.cv.mknfoldが 内で呼び出されxgb.cv、各フォールドの残りのインデックスが、それぞれのフォールドのトレーニング セットのインデックスになります。

質問: xgboost インターフェイスの任意のインターフェイスを介して、トレーニング インデックスと検証インデックスの両方を指定できますか?

私の主な動機は、時系列の相互検証を実行することであり、「非検証」インデックスがトレーニング データとして自動的に割り当てられることを望んでいません。私がやりたいことを説明する例:

# assume i have 100 strips of time-series data, where each strip is X_i
# validate only on 10 points after training
fold1:  train on X_1-X_10, validate on X_11-X_20
fold2:  train on X_1-X_20, validate on X_21-X_30
fold3:  train on X_1-X_30, validate on X_31-X_40
...

現在、foldsパラメーターを使用すると、残りの例を検証セットとして使用せざるを得なくなります。これは、残りのデータがトレーニング データを大幅に上回り、特にトレーニング データとは非常に異なる分布を持つ可能性があるため、推定誤差の分散を大幅に増加させます。以前の折り目。これが私が意味することです:

fold1:  train on X_1-X_10, validate on X_11-X100 # huge error
...

他のパッケージのソリューションが便利であれば (つまり、オープン ソース コードをこじ開ける必要がない場合)、元の xgboost 実装の効率を無効にしない限り、それらのソリューションを受け入れます。

4

2 に答える 2