机器学习训练&测试数据拆分方法
Machine Learning Training & Test data split method
我是运行一个随机森林分类模型,一开始把数据分为train(80%)和test(20%)。然而,预测有太多误报,我认为这是因为训练数据中有太多噪音,所以我决定用不同的方法拆分数据,这就是我的做法。
因为我认为高误报是由于训练数据中的噪声,所以我让训练数据具有相同数量的目标变量。例如,如果我有 10,000 行的数据并且目标变量是 8,000 (0) 和 2,000 (1),我的训练数据总共是 4,000 行,包括 2,000 (0) 和 2,000 (1),这样训练数据现在有更多信号。
当我尝试这种新的拆分方法时,它通过将正召回率从 14% 提高到 70% 来更好地预测。
如果我在这里做错了什么,我很想听听您的反馈。我担心我的训练数据是否有偏差。
当训练集中每个 class 中的数据点数量不相等时,基线(随机预测)会发生变化。
关于嘈杂的数据,我想你的意思是 class 1 的训练点数比其他的多。这并不是真正的噪音。其实是偏见。
例如:你在训练集中有 10000 个数据点,8000 个 class 1 和 2000 个 class 0。我可以一直预测 class 0 并得到 80 % 准确度已经。这会导致偏差,0-1 class化的基线不会是 50%。
要消除这种偏差,您可以像以前那样有意地平衡训练集,或者您可以通过赋予与训练集中的点数成反比的权重来更改误差函数。
其实你做的是对的,这个过程类似于"Stratified sampling"。
在您的第一个模型中,模型的准确度非常低,模型在特征和目标之间没有足够的相关性以实现正 class(1)。此外,它的模型可能对负 class.This 有点过拟合"High bias -High variance"情况。
"Stratified sampling"无非是当你从一个大的人群中抽取样本数据时,你确保所有classes都会有一些大致相等的比例来使模型的训练假设更准确可靠。
在第二种情况下,模型能够将特征与目标之间的关系关联起来,正面和负面 class 特征可以很好地区分。
消除噪声是数据准备的一部分,显然应该在将数据放入模型之前完成。
我是运行一个随机森林分类模型,一开始把数据分为train(80%)和test(20%)。然而,预测有太多误报,我认为这是因为训练数据中有太多噪音,所以我决定用不同的方法拆分数据,这就是我的做法。
因为我认为高误报是由于训练数据中的噪声,所以我让训练数据具有相同数量的目标变量。例如,如果我有 10,000 行的数据并且目标变量是 8,000 (0) 和 2,000 (1),我的训练数据总共是 4,000 行,包括 2,000 (0) 和 2,000 (1),这样训练数据现在有更多信号。
当我尝试这种新的拆分方法时,它通过将正召回率从 14% 提高到 70% 来更好地预测。
如果我在这里做错了什么,我很想听听您的反馈。我担心我的训练数据是否有偏差。
当训练集中每个 class 中的数据点数量不相等时,基线(随机预测)会发生变化。
关于嘈杂的数据,我想你的意思是 class 1 的训练点数比其他的多。这并不是真正的噪音。其实是偏见。
例如:你在训练集中有 10000 个数据点,8000 个 class 1 和 2000 个 class 0。我可以一直预测 class 0 并得到 80 % 准确度已经。这会导致偏差,0-1 class化的基线不会是 50%。
要消除这种偏差,您可以像以前那样有意地平衡训练集,或者您可以通过赋予与训练集中的点数成反比的权重来更改误差函数。
其实你做的是对的,这个过程类似于"Stratified sampling"。 在您的第一个模型中,模型的准确度非常低,模型在特征和目标之间没有足够的相关性以实现正 class(1)。此外,它的模型可能对负 class.This 有点过拟合"High bias -High variance"情况。
"Stratified sampling"无非是当你从一个大的人群中抽取样本数据时,你确保所有classes都会有一些大致相等的比例来使模型的训练假设更准确可靠。
在第二种情况下,模型能够将特征与目标之间的关系关联起来,正面和负面 class 特征可以很好地区分。 消除噪声是数据准备的一部分,显然应该在将数据放入模型之前完成。