针对不平衡数据训练决策树


43

我是数据挖掘的新手,我正在尝试针对高度不平衡的数据集训练决策树。但是,我遇到了预测准确性较差的问题。

数据由学习课程的学生组成,班级变量是课程状态,具有两个值-撤回或当前。

  • 年龄
  • 种族
  • 性别
  • 课程
    ...
  • 课程状态

在数据集中,当前的实例多于撤回的实例。撤消的实例仅占实例总数的2%。

我希望能够建立一个模型,该模型可以预测一个人将来会退出的可能性。但是,当针对训练数据测试模型时,模型的准确性非常糟糕。

我在决策树中也遇到过类似的问题,决策树中的数据由一两个类控制。

我可以使用哪种方法来解决此问题并建立更准确的分类器?


4
要考虑的一件事是针对不同类型的错误分类更改惩罚条款。您没有说您正在使用什么软件,但是我相信所有好的树型软件都应该包括执行此操作的方法。
彼得·弗洛姆

Answers:


61

这是分类中一个有趣且非常频繁的问题-不仅在决策树中,而且在几乎所有分类算法中。

正如您从经验中发现的那样,由来自每个类别的不同数量的代表组成的训练集可能会导致分类器偏向多数类别。当应用于类似不平衡的测试集时,此分类器将得出乐观的准确性估算值。在极端情况下,分类器可能会将每个测试用例分配给多数类,从而达到与属于多数类的测试用例的比例相等的准确性。这是二进制分类中的一种众所周知的现象(并且自然扩展到多类设置)。

这是一个重要的问题,因为数据集不平衡可能会导致性能估算过高。反过来,这可能会导致有关算法执行效果胜于偶然性的重要性的错误结论。

关于该主题的机器学习文献基本上开发了三种解决方案策略。

  1. 您可以通过大型课程进行低采样或对小型课程进行过度采样来恢复训练集上的平衡,从而避免出现偏见。

  2. 或者,您可以再次修改错误分类的成本,如先前的答复所述,以防止偏差。

  3. ϕ:=1个2π++π-π+π-

精度与平衡精度

我建议至少结合使用上述两种方法。例如,您可以对少数派类别进行过度采样,以防止分类器获得偏爱多数派的偏见。然后,在评估分类器的性能时,可以用平衡精度代替精度。两种方法是互补的。当一起使用时,它们应该可以帮助您避免最初的问题并避免随之而来的错误结论。

如果您想对此进行跟进,我很乐意为文献提供其他参考。


3
Broder-感谢您提供详细信息。那真的很有帮助!我最初尝试使用SQL Server中的数据挖掘功能,但是,根据您的建议,我改用了R。我使用SMOTE算法重新平衡数据集,并尝试同时使用决策树和SVM。DT的平衡精度为81%,使用SVM时甚至更高。不过,有一个问题-我应该针对还包含重新平衡数据的数据集测试模型吗?还是应该针对更原始的数据进行测试?
chrisb 2012年

2
很高兴听到。关于你的问题:你不是要平衡你的测试数据。这将使您的性能评估产生偏差,因为您将对某些示例进行两次测试(在过采样的情况下),或者在测试中省略一些示例(在欠采样的情况下)。总而言之,您想平衡训练集(分别在每个交叉验证折叠内),然后对未修改的(可能不平衡的)测试数据进行测试。
凯·布罗德森

谢谢布罗德。这样做会使事情有所不同。平衡精度下降到约56%。在我的最佳模型上,灵敏度下降到17%(对应于我需要获得更好的预测的班级)。我认为这是有道理的,因为过采样的类是该类,因此这些示例将被多次计数。我将尝试增加训练数据集的平衡,以查看这是否有所不同。
chrisb 2012年

现在已经用不同比例的平衡数据进行了测试,我可以获得的最佳平衡精度是60%的Ada Boost。我正在努力确定什么是“好”。我的主要目的是预测可能退出课程的学生。以“提款”为我的积极班级,我一直在尝试最大限度地增加真正的积极项目(即提高敏感性)。重新平衡数据会损害假阴性的数量。对于我来说,60%似乎并不比随机好得多-但在这种情况下,我没有什么“好”基准。
chrisb 2012年

2
@chrisb,这是一个稍晚的评论。在切线上,您可以尝试使用Cox比例风险回归(cran.r-project.org/doc/contrib/Fox-Companion/…)来模拟学生的生存状况。您可能不需要缩减或过度采样。
朱巴卜2015年

8

以下四个想法可以帮助您解决此问题。

  1. 2P[RËC一世s一世Øñ[RËC一种P[RËC一世s一世Øñ+[RËC一种

  2. 使用决策树中的“ prior”参数来通知算法数据集中类的先验频率,即,如果1,000,0000数据集中存在1000个正数prior = c(0.001, 0.999)(在R中)。

  3. 在分类函数中使用“权重”参数来严厉惩罚极少见的阳性案例的错误分类算法

  4. 在某些分类算法中(例如rpart在R中)使用“成本”参数来定义对正阳性和负阴性错误分类的相对成本。您自然应该为稀有类别的错误分类设置高昂的成本。

我不赞成过度采样,因为它在数据集中引入了相关的观察,这违反了在统计和机器学习中做出的独立性假设。


2

我在最近的话题中给出了答案:

我们要做的是选择不同比例的样本。在上述示例中,将是1000个“是”情况,例如9000个“否”情况。这种方法提供了更稳定的模型。但是,必须在真实样本(具有1,000,000行的样本)上进行测试。

就提升率而言,不仅可以提供更稳定的方法,而且模型通常更好。

您可以将其搜索为“统计数据中的过度抽样”,第一个结果是非常好的:http//www.statssa.gov.za/isi2009/ScientificProgramme/IPMS/1621.pdf


1

添加到@Kay的答案中第一解决方案策略:综合少数群体过采样(SMOTE)通常比根据我的经验进行过采样或过采样要好,因为我认为这会在两者之间造成折衷。它使用多元预测变量空间上绘制的数据点创建少数类别的综合样本,并且它或多或少地获取该空间上相邻点之间的中点以创建新的综合点,从而平衡两个类别的大小。(不确定中点,此处算法的详细信息

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.