N〜5000のデータセットがあり、少なくとも1つの重要な変数で約1/2が欠落しています。主な分析方法は、コックス比例ハザードです。
複数の代入を使用する予定です。また、トレインとテストセットに分割します。
データを分割してから個別に代入するか、または代入してから分割する必要がありますか?
問題があれば、で使用PROC MI
しSAS
ます。
N〜5000のデータセットがあり、少なくとも1つの重要な変数で約1/2が欠落しています。主な分析方法は、コックス比例ハザードです。
複数の代入を使用する予定です。また、トレインとテストセットに分割します。
データを分割してから個別に代入するか、または代入してから分割する必要がありますか?
問題があれば、で使用PROC MI
しSAS
ます。
回答:
前処理または入力の前に分割する必要があります。
トレーニングとテストセットの区分は、過去の情報があり、将来のまだ未知の情報でテストするモデルを構築している状況を再現しようとする試みです。トレーニングセットが過去に取って代わり、テストセットが将来の場所なので、訓練されたモデルを一度だけテストすることができます。
過去/未来の類似性を念頭に置いて、これは、欠損値の代入など、データを前処理または処理するために行うことを意味します。トレーニングセットのみで行う必要があります。テストセットにも前処理または入力が必要な場合は、トレーニングセットに対して行ったことを思い出すことができるため、両方のセットで同じように実行できます。
コメントから追加:テストデータを使用してトレーニングデータに影響を与える場合、テストデータはモデルの構築に使用されるため、テストデータではなくなり、モデルの公正なテストを提供しません。オーバーフィッティングのリスクがあります。そもそもテストデータを分離するのはこれをやめさせるためです。
上記に追加するだけで、入力または任意のタイプの前処理の前に分割することもお勧めします。トレーニングデータを使用して何もテストデータによって通知されるべきではありません(類推は、未来が過去に影響を与えるべきではないということです)。その後、テストセットにも前処理または代入が必要な場合、トレーニングセットに行ったことを思い出すことができるため、両方のセットで同じように実行できます(例え、過去を使用して未来を予測することができます) 。
テストデータを使用して何らかの方法でトレーニングデータに影響を与える場合、テストデータはモデルの構築に使用されるため、テストデータではなくなり、モデルの公正なテストを提供しません。フィッティングを超えるリスクがあります。そもそもテストデータを分離するのは、これを思いとどまらせるためです。
rのキャレットパッケージはその設定で非常に便利だと思います。具体的には、その投稿が非常に役立つことがわかりましたhttps://topepo.github.io/caret/model-training-and-tuning.html