最近、検証セットのインデックスを指定できるの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 実装の効率を無効にしない限り、それらのソリューションを受け入れます。