我有一个数据集,我正在尝试预测目标变量。
Col1 Col2 Col3 Col4 Col5
1 2 23 11 1
2 22 12 14 1
22 11 43 38 3
14 22 25 19 3
12 42 11 14 1
22 11 43 38 2
1 2 23 11 4
2 22 12 14 2
22 11 43 38 3
我提供了一个示例数据,但我的有数千条以类似方式分布的记录。在这里,Col1、Col2、Col3、Col4 是我的特征,Col5 是目标变量。因此预测应该是 1、2、3 或 4,因为这些是我的目标变量值。我曾尝试使用随机森林、决策树等算法进行预测。
在这里,如果您看到,与 4 相比,值 1,2 和 3 出现的次数更多。因此,在预测时,我的模型更偏向于 1 2 和 3,而我对 4 的预测数量较少(只有 1 个预测当我看到混淆矩阵时,从数千条记录中获取 policy4)。
为了使我的模型泛化,我随机删除了属于 1,2 和 3 值的相等百分比的数据。我按 Col5 中的每个值进行分组,然后删除一定的百分比,这样我就减少了记录数。现在我可以看到准确率百分比有所增加,并且混淆矩阵中值 4 的预测也有合理增加。
这是正确的处理方法(从模型有偏差的那些组中随机删除数据)吗?
我尝试了内置的 python 算法,如 Adaboost、使用 sklearn 的 GradientBoost 技术。我读到这些算法用于处理不平衡类。但是我无法成功提高我的准确性,而是通过随机删除数据,我可以看到一些改进。
这种减少是欠采样技术吗?这是欠采样的正确方法吗?
如果我的随机删除错误,sklearn 中是否有任何预定义的包或我可以在 python 中实现的任何逻辑来完成这项工作?
此外,我还了解了 SMOTE 技术,它处理过采样。我应该为价值 4 试试这个吗?我们可以使用python中的任何内置包来做到这一点吗?如果有人在这种情况下帮助我,那就太好了。