为什么决策树在处理不平衡数据时表现出色?

我尝试了从Kaggle获取的欺诈样本数据进行实验。

样本包含284807笔交易,其中497笔属于一类,其余属于另一类,比例为0.172%。存在数据不平衡的问题,我想测试简单的随机欠采样效果如何。我将样本分成20份,并通过精确率-召回率曲线下的面积进行检查。

我使用了线性回归和决策树。线性回归的表现如预期:插入图片描述

但决策树似乎表现得非常出色:插入图片描述

我们有非常高的精确率和召回率,而欠采样反而使其变差。为什么这两种模型之间会有如此大的差异?


回答:

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

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

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

如果你使用集成学习,模型表现会很好,但那不是决策树,而是随机森林或梯度提升决策树。

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

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注