机器学习培训&测试数据拆分方法

时间:2016-07-28 15:00:09

标签: machine-learning scikit-learn training-data confusion-matrix

我正在运行随机森林分类模型,最初将数据分为火车(80%)和测试(20%)。然而,预测有太多假阳性,我认为这是因为训练数据中有太多的噪音,所以我决定用不同的方法分割数据,这就是我的做法。

由于我认为高误报是由于列车数据中的噪音所致,因此我使列车数据具有相同数量的目标变量。例如,如果我有10,000行数据且目标变量是8,000(0)和2,000(1),我的训练数据总共为4,000行,包括2,000(0)和2,000(1),这样训练数据现在有更多的信号。

当我尝试这种新的分裂方法时,它通过将召回正数从14%提高到70%来预测方式更好。

如果我在这里做错了什么,我很想听听你的意见。我担心如果我的训练数据有偏差。

2 个答案:

答案 0 :(得分:0)

当训练集中每个类的数据点数不等时,基线(随机预测)会发生变化。

根据嘈杂的数据,我认为你想要表示1级训练点的数量多于其他训练点数。这不是真正的噪音。这实际上是偏见。

例如:训练集中有10000个数据点,1级有8000个,0级有2000个。我可以一直预测0级并且已经达到80%的准确率。这导致0-1分类的偏差和基线不会是50%。

要消除此偏差,您可以有意识地平衡训练集,也可以通过赋予训练集中的点数成反比来改变误差函数。

答案 1 :(得分:0)

实际上,您所做的是正确的,此过程类似于“分层抽样” 。 在您的第一个模型中,该模型的准确性非常低,对于正类别(1),该模型没有在特征和目标之间获得足够的相关性。对于负类别,该模型也可能有些过拟合。这称为“高偏差-高方差情况。

“分层抽样”只不过是在从大量人口中抽取样本数据时,请确保所有类的比例大致相等,以使模型的训练假设更加准确和可靠。

在第二种情况下,模型能够将特征与目标之间的关系关联起来,正负类特征可以很好地区分。 消除噪声是数据准备的一部分,显然应该在将数据放入模型中之前完成。