2017-10-14 6 views
2

は興味深いことに、私は両方のStackOverflowや他のサイトでこの程度異なった答えの多くを参照してください。私のトレーニングデータセットで作業している間トレインアンドテストデータを転用に使用できますか?

を、私は決定木モデルを使用して、特定の列の欠損値を帰属しました。だから私の質問です。転用のためのモデル(予測ではなく)を作成するのに、利用可能なすべてのデータ(Training & Test)を使用するのは公正でしょうか?また、テストセットの作業を開始したら、テストセットデータのみを使用するか、トレーニングセットで作成した同じ代償モデルを使用して代用するか、使用可能なすべてのデータを使用して代用モデルを再テストする必要がありますか?

予測モデルトレーニングに私のテストセットに触れていない限り、私は、代償のようなものの残りのデータを使っても大丈夫だと思います。しかし、それは根本的なルールを破るだろう。思考?

答えて

0

私はthis answer on cross-validatedに同意するだろう:

トレーニングとテストセット間の分裂が あなたが過去の情報を持っていて、将来的にテストするモデル を構築している状況を再現しようとする試みであるままのまだ不明な情報

データを前処理する方法は、場合によってはモデルのパフォーマンスに大きく影響することがあります。テストデータは、わからないサンプルのプロキシです。将来のすべてのデータを知っていたら、別の代償を実行しますか?はいの場合、テストデータの使用は不正です。もしそうでなければ、とにかくテストデータは必要ありません。したがって、モデルが構築されるまでは、テストデータには触れない方が良いでしょう。

0

トレーニングセットの処理を実行するときにテストセットの情報を使用しないでください。 @マキシムとリンクされた答えは正しいが、私は答えを増やしたい。

補完は、不完全なデータから推測して、不足しているエントリの可能性のある値を示そうとします。欠けている値を測定誤差の一種とみなすことは役に立ちます(このことの有用なデモンストレーションについては、this articleを参照してください)。このように、欠落は基礎となるデータ生成プロセスに関連していると考えられる理由があります。そのプロセスは、あなたのモデルを(もちろん、不完全ながらも)複製しようとしているものです。

あなたのモデルが一般化しやすいようにしたい場合は、私たち全員ではありません! - トレーニングセットに行う処理は、そのセットに含まれるデータの情報のみに依存することを確認することをお勧めします。

テスト、トレーニング、および検証セットの3つの分割方法を検討することをお勧めします。バリデーションセットはトレーニングセットからさらに抽出され、モデル自体の適合性をテストするために使用されます(ハイパーパラメータのチューニング時)。これは、部分的には、sklearnや他のパイプラインのようなクロスバリデーションの手順が何をするのかです。この場合、私はモデルが "知っている"データのモデルを評価しようとしているので、のCVスプリットよりもむしろフルスプリットセットではなく一般に実行します(そして、保持データは未知のプロキシです/将来のデータ)。しかし、テストセットとトレーニングセットの間に完全な壁を維持するのと同じように、これは一様であるとは思わなかったことに注意してください。

関連する問題