machine-learning - 为什么决策树在不平衡数据上表现得很好?

标签 machine-learning linear-regression decision-tree

我尝试了从 kaggle 进行欺诈采样。

样本共有 284807 笔交易,其中 497 笔为一类,其余为另一类,比例为 0.172%。 存在不平衡问题,我想测试简单的随机欠采样如何工作。我将样本分成 20 个部分,并检查精确率-召回率曲线下的区域。

我采用了线性回归和决策树。 线性回归按预期工作: enter image description here

但决策树似乎工作得很完美:enter image description here

我们有非常高的精确度和召回率,而欠采样会使它们变得更糟。为什么两个模型差别这么大?

最佳答案

首先,一般来说,简单的决策树模型并不能很好地解决不平衡问题。模型的性能与数据集的实际分布密切相关。

有几种情况会导致决策树模型解决不平衡问题,您可以检查一下您在问题中提到的情况是否与以下情况一致:

  1. 少数数据都在特征空间的一个区域。决策树的训练过程是一个递归过程,算法会不断选择最优的划分属性,生成分支和节点,直到满足: 1)当前节点包含的样本全部属于同一类别,不需要划分 2)属性集为空,或者所有样本中所有属性值都相同,无法划分 3)当前节点节点包含的样本集为空,无法划分。所以如果少数数据都在特征空间的一个区域,那么所有样本都会被划分到一个节点中,而在预测时,如果测试集也是这样的特征分布,就能得到一个好的分类器。
  2. 您正在使用采用成本敏感学习的决策树。如果您的决策是成本敏感的,则少数类样本的错误分类将比多数类样本的错误分类具有更高的成本。

如果使用集成学习,模型会表现良好,但那不是决策树,而是 RF 或 GBDT

对于使用线性回归的简单分类器,例如逻辑回归,在面对不平衡问题时,性能几乎肯定很差。这是因为,在训练中,模型正在寻找一个使错误分类最少的超平面。因此,模型将所有样本分类到大多数标签中。

关于machine-learning - 为什么决策树在不平衡数据上表现得很好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46104173/

相关文章:

tensorflow - SOM 神经元的聚类

r - 如何从 lm 输出显示引用电平?

python-3.x - linerrud 数据集上的线性回归

machine-learning - 损失和准确性-这些学习曲线是否合理?

machine-learning - 5000条评论的个人情感分析平均值与5000条评论串联的情感分析相同吗?

machine-learning - 具有余弦距离的 K 均值

python - Patsy 版本和 Dummy 列表版本之间使用 Statsmodels 进行线性回归的差异

python - 决策树重复类名

algorithm - 在决策树中寻找非单调区域

python - 报告 scikit-learn 中 DecisionTreeClassifier 的学习树的深度和叶子数量