在分类问题中,我们关心标签在训练和验证集中的分布。在sklearn
中,stratify
中有train_test_split
选项,以确保标签在训练和验证集中的分布相似。
在回归问题中,假设我们要基于一系列功能来预测房价。我们是否需要关注火车和验证集中的房价分布?
如果是,我们如何在sklearn
中实现这一目标?
答案 0 :(得分:0)
强制功能在您的培训和验证集中具有相似的分布,假定您高度信任必须代表实际生活中遇到的数据(例如,在生产环境中为 的数据)的数据。 ),通常情况并非如此。
与测试分数相比,这样做实际上可以提高您的验证分数。
我建议您执行交叉验证(在sklearn中),而不是调整训练和验证集中的特征分布,这可能更能代表测试情况。
答案 1 :(得分:0)
此book('A。Geron,使用Scikit-Learn和TensorFlow进行动手机器学习,O'Reilly,2017年)在第2章中对此进行了出色的介绍性讨论。释义:
通常对于大型数据集,您不需要执行分层抽样:训练集应该可以公平地表示观察到的实例范围(当然,这是例外)。对于较小的数据集,如果您执行随机抽样并且适当地需要分层抽样,则可以引入抽样偏差(即,仅从预期目标属性预期范围的特定区域不成比例地记录数据)。
实际上,您需要通过合并此连续功能来创建新的分类功能。然后,您可以对该分类功能执行分层抽样。在训练数据之前,请确保删除此新的分类功能!
但是,要做到这一点,您需要对自己的特征有一个很好的了解,我怀疑对弱预测能力的特征进行分层采样是否有很多意义。我猜如果通过执行非随机采样在数据中引入一些意外偏差,甚至可能会造成危害。
带回家消息:
我的直觉是,连续特征的分层采样应始终是信息和理解的先导。就是说,如果您知道某个功能是目标变量的有力预测指标,并且还知道跨其值的采样是不均匀的,则您可能希望执行分层采样以确保在训练和验证集。