对于缺失值插补,为什么不使用测试数据的拟合来转换测试数据
For missing value imputation, why not use the fit from test data to transform test data
对于 python sklearn 中的缺失值插补,我理解为什么我们不能使用 validation/test 数据来拟合训练数据的插补器 - 由于泄漏。
但是,要对测试集中的缺失值进行插补,为什么不在测试集上使用拟合插补器,为什么要使用训练集中的插补器呢?如果我们对测试数据使用拟合并对测试数据进行转换,那么我们根本就没有使用测试进行训练。
假设我有一个简单的模型,试图使用 parents 薪水和线性回归来预测学生每月的开支。在火车集中,parents 薪水都在 100k - 250k 的范围内。所以,如果我使用 mean imputer,我可能会因为缺少 parents 薪水而得到大约 150k。因此,我将使用它来填充缺失的火车数据。
但是,如果在我的测试中,如果 parents salary 都在 60k -100k 范围内,则平均值将在 75k 左右,我可以用它来填充测试集中的缺失值,为什么使用 150k 值基于训练集。
在这里,如果我适合测试集,我只是用它来填充测试集上的缺失值,而不是在训练数据处理中使用它,所以为什么不这样做呢?
你绝对永远不会 应该在测试数据上拟合输入。您在此处应用的推理在机器学习工作流程方面存在缺陷。
我猜你想表达的意思是你在测试集中的观察与训练集中的观察非常不同,因此你的缺失值应该根据其他更相似的测试值来估算。这可能意味着您一开始就没有随机分割训练和测试样本……这确实是监督学习的先决条件。
您的模型经过训练后,很可能用于现实世界的预测……例如……预测学生 John Doe 的每月开支。如果 John Doe 有缺失值怎么办?那么很明显,您的输入器应该采用训练集的值(这就是训练集的用途)。通过使用测试集评估您的模型,您想评估您的模型预测新结果(如 John Doe 的结果)的能力,因此您也应该在测试阶段模仿此过程。
对于 python sklearn 中的缺失值插补,我理解为什么我们不能使用 validation/test 数据来拟合训练数据的插补器 - 由于泄漏。
但是,要对测试集中的缺失值进行插补,为什么不在测试集上使用拟合插补器,为什么要使用训练集中的插补器呢?如果我们对测试数据使用拟合并对测试数据进行转换,那么我们根本就没有使用测试进行训练。
假设我有一个简单的模型,试图使用 parents 薪水和线性回归来预测学生每月的开支。在火车集中,parents 薪水都在 100k - 250k 的范围内。所以,如果我使用 mean imputer,我可能会因为缺少 parents 薪水而得到大约 150k。因此,我将使用它来填充缺失的火车数据。
但是,如果在我的测试中,如果 parents salary 都在 60k -100k 范围内,则平均值将在 75k 左右,我可以用它来填充测试集中的缺失值,为什么使用 150k 值基于训练集。
在这里,如果我适合测试集,我只是用它来填充测试集上的缺失值,而不是在训练数据处理中使用它,所以为什么不这样做呢?
你绝对永远不会 应该在测试数据上拟合输入。您在此处应用的推理在机器学习工作流程方面存在缺陷。
我猜你想表达的意思是你在测试集中的观察与训练集中的观察非常不同,因此你的缺失值应该根据其他更相似的测试值来估算。这可能意味着您一开始就没有随机分割训练和测试样本……这确实是监督学习的先决条件。
您的模型经过训练后,很可能用于现实世界的预测……例如……预测学生 John Doe 的每月开支。如果 John Doe 有缺失值怎么办?那么很明显,您的输入器应该采用训练集的值(这就是训练集的用途)。通过使用测试集评估您的模型,您想评估您的模型预测新结果(如 John Doe 的结果)的能力,因此您也应该在测试阶段模仿此过程。