具有更好的预测(例如CV)性能的分类树的替代方案?


23

我正在寻找分类树的替代方法,它可能会产生更好的预测能力。

我正在处理的数据对于解释变量和解释变量都有影响。

我记得在这种情况下遇到过随机森林和神经网络,尽管以前从未尝试过,但是是否有另一个很好的候选人来进行这种建模任务(显然是在R中)?


5
不要理会神经网络,这是一种过时的技术。

1
@mbq您仍然支持此声明吗?
rhombidodecahedron

@rhombidodecahedron当然,和2010年的NN一起玩,你会同意的。此外,我怀疑任何DL模型都无法将任何具有(大概)如此小的数据的数据带到表中。

Answers:


25

我认为值得尝试一下Random Forests(randomForest); 针对相关问题提供了一些参考资料:在机器学习中执行交叉验证时“最终”模型的特征选择可以使CART模型健壮吗?。增强/装袋使它们比单个CART更稳定,而CART对小扰动非常敏感。一些作者认为它的性能不如SVM或Gradient Boosting Machines(参见Cutler等,2009)。我认为它们肯定胜过NN。

Boulesteix和Strobl很好地概述了最佳分类器选择中的几个分类器以及错误率估计中的负偏差:有关高维预测的实证研究(BMC MRM 2009 9:85)。我在IV EAM会议上听说过另一项很好的研究,该研究应在《医学统计学》中进行审查,

JoãoMaroco,Dina Silva,Manuela Guerreiro,Alexandre deMendonça。随机森林是否优于神经网络,支持向量机和判别分析分类器?老年认知功能障碍患者向痴呆发展的案例研究

我也喜欢插入符号包:它有充分的文档证明,可以在同一数据集上比较不同分类器的预测准确性。它通过一些用户友好的功能来管理培训/测试样本,计算准确性等。

来自Friedman和coll。的glmnet软件包实现了惩罚性的GLM(请参阅Journal of Statistics Software中的评论),因此您仍将使用著名的建模框架。

否则,您也可以寻找基于关联规则的分类器(有关其中一些的简要介绍,请参见CRAN Task View on Machine Learning数据挖掘中前10个算法)。

我想提一下我计划在R(实际上是Matlab代码)中重新实现的另一种有趣的方法,即HervéAbdi的判别对应分析。尽管最初是为应对具有许多解释变量的小样本研究而开发的(最终归类为连贯的块),但它似乎可以有效地将经典DA与数据约简技术结合起来。

参考文献

  1. 卡特勒(A.Cutler),博士卡特勒(Cutler)和JR(史蒂文斯)(2009)。《基于树的方法》,《癌症研究中的高维数据分析》,Li,X. and Xu,R.(eds。),第83-101页,Springer。
  2. Y. Saeys,I。Inza和P.Larrañaga(2007)。生物信息学中的特征选择技术综述。生物信息学,23(19):2507-2517。

2
+1好答案。我也同意插入符号的建议。
Shane 2010年

12

重要的是要记住,没有一种算法总是比其他算法更好。正如Wolpert和Macready所说,“在所有可能出现的问题上取平均性能时,任何两种算法都是等效的。” (有关详细信息,请参阅Wikipedia。)

对于给定的应用程序,“最佳”应用程序通常是根据其做出的假设,可以处理的数据类型,可以代表的假设等方面最接近您的应用程序的应用程序。

因此,根据以下标准来表征数据是一个好主意:

  • 我有一个很大的数据集还是一个适中的数据集?
  • 尺寸高吗?
  • 变量是数字变量(连续/离散)还是符号变量,还是混合变量,和/或是否可以根据需要对变量进行转换?
  • 变量是否可能在很大程度上是独立的或相当依赖的?
  • 可能存在多余,嘈杂或不相关的变量吗?
  • 我是否希望能够检查生成的模型并尝试理解它?

通过回答这些问题,您可以消除一些算法并将其他算法识别为潜在的相关算法,然后最终得到一小撮您已经明智地选择有用的候选方法。

抱歉,给您一个简单的答案,不过,希望如此对您有所帮助!


2
+1喜欢报价。(“在所有可能出现的问题中
取其

8

对于多类分类,支持向量机也是一个不错的选择。我通常为此使用R kernlab软件包。

请参阅以下JSS论文以进行良好的讨论:http : //www.jstatsoft.org/v15/i09/


@Tal这是SVM RF的一个公平(或我认为如此)的评论:随机森林和支持向量机的全面比较,用于基于微阵列的癌症分类,j.mp / ab7U8V。我也喜欢kernlabe1071
chl

2
@chl从SVM学习的角度来看,我不喜欢这篇论文,重复随机算法(RF)只是一个垃圾而已。附录2还显示了将SVM工作流程应用于RF可能有多糟糕。但是我同意,由于内核技巧(普通的RF没有,虽然一般来说它并不意味着它不具备),几乎可以将SVM调整为优于RF,但是优化工作却呈指数增长。

@mbq确实,这是一个好点。
chl 2010年

3

如前所述,随机森林是一种自然的“升级”,如今,SVM通常是推荐使用的技术。

我想补充一点,就是不切换到SVM会产生非常令人失望的结果。事实是,虽然使用随机树之类的技术几乎微不足道,但SVM却有些棘手。

当我第一次使用SVM(支持向量经典化实用指南)时,我发现本文具有无价的价值

在R中,您可以将e1071软件包用于SVM,它与事实上的标准(至少在免费软件中!)libSVM库链接。


2
kernlab还使用libsvm进行优化,因此在这个意义上并没有太大区别(尽管它更加灵活)。
Shane 2010年

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.