不平衡数据的二进制分类模型
-
16-10-2019 - |
题
我有一个具有以下规格的数据集:
- 带有193,176个样品的培训数据集,有2,821个阳性
- 带有82,887个样品的测试数据集,带有673个阳性
- 有10个功能。
我想执行二进制分类(0或1)。我面临的问题是数据非常不平衡。在标准化和扩展数据以及某些功能工程并使用几个不同的算法之后,这些是我可以实现的最佳结果:
mean square error : 0.00804710026904
Confusion matrix : [[82214 667]
[ 0 6]]
即只有6个正确的积极命中。这是使用逻辑回归。这是我尝试过的各种事情:
- 不同的算法,例如Randomforest,Deciestrete,SVM
- 更改参数值以调用函数
- 一些基于直觉的功能工程,包括复合功能
现在,我的问题是:
- 我该怎么做才能提高积极的命中次数?
- 在这种情况下,如何确定是否有过度合适? (我尝试绘图等)
- 在什么时候可以得出结论,这是否是我能拥有的最佳选择? (考虑到673中只有6次命中,这似乎很可悲)
- 有没有办法使积极的样本实例更重,从而改善了模式识别,从而导致更多打击?
- 哪些图形图可以帮助检测异常值或有关哪种模式最适合最佳的直觉?
我正在使用带Python的Scikit-Learn库,所有实现都是库函数。
编辑:
以下是其他一些算法的结果:
随机森林分类器(n_estimators = 100)
[[82211 667]
[ 3 6]]
决策树:
[[78611 635]
[ 3603 38]]
解决方案
由于您正在进行二进制分类,因此您是否尝试调整分类阈值?由于您的算法似乎相当不敏感,因此我会尝试降低它并检查是否有改进。
您可以随时使用 学习曲线, ,或一个模型参数与培训和验证错误的图,以确定您的模型是否过于拟合。在您的情况下,这似乎很合适,但这只是直觉。
好吧,最终取决于您的数据集以及您尝试过的不同模型。在这一点上,没有进一步的测试,就无法有明确的答案。
没有声称自己是该主题的专家,您可能会遵循许多不同的技术(提示:: Google上的第一个链接),但我认为您应该首先确保仔细选择成本功能,以代表您实际寻找的内容。
不确定您的意思是图案直觉,您能详细说明吗?
顺便说一句,您尝试的不同算法是什么结果?他们有什么不同吗?
其他提示
由于数据非常偏斜,因此在这种情况下,我们还可以在超采样数据后尝试模型培训。
Smote和Adasyn 是我们可以用来超过数据的一些技术。