我尝试了从Kaggle获取的欺诈样本数据进行实验。
样本包含284807笔交易,其中497笔属于一类,其余属于另一类,比例为0.172%。存在数据不平衡的问题,我想测试简单的随机欠采样效果如何。我将样本分成20份,并通过精确率-召回率曲线下的面积进行检查。
我使用了线性回归和决策树。线性回归的表现如预期:插入图片描述
但决策树似乎表现得非常出色:插入图片描述
我们有非常高的精确率和召回率,而欠采样反而使其变差。为什么这两种模型之间会有如此大的差异?
回答:
首先,一般来说,简单的决策树模型并不能很好地解决数据不平衡问题。模型的表现与数据集的实际分布密切相关。
有几种情况可能会导致决策树模型能够解决不平衡问题,你可以检查一下你提到的情况是否与以下情况一致:
- 少数类数据全部位于特征空间的一个区域。决策树的训练过程是一个递归过程,算法会持续选择最优的分区属性,生成分支和节点,直到满足以下条件:1)当前节点包含的样本全部属于同一类别,无需再分;2)属性集为空,或者所有样本在所有属性值上都相同,无法再分;3)当前节点包含的样本集为空,无法再分。因此,如果少数类数据全部位于特征空间的一个区域,那么所有样本将被划分到一个节点中,在预测时,如果测试集也有这样的特征分布,那么就会得到一个很好的分类器。
- 你使用的是采用成本敏感学习的决策树。如果你的决策是成本敏感的,那么少数类样本的错误分类成本将高于多数类样本的错误分类成本。
如果你使用集成学习,模型表现会很好,但那不是决策树,而是随机森林或梯度提升决策树。
对于使用线性回归的简单分类器,例如逻辑回归,面对不平衡问题时,表现几乎肯定会很差。这是因为,在训练过程中,模型寻找的是使错误分类最少的超平面。结果,模型将所有样本归类为多数标签。