我正在寻找一种替代分类树的方法,它可能会产生更好的预测能力。
我正在处理的数据具有解释变量和解释变量的因素。
我记得在这种情况下遇到过随机森林和神经网络,虽然以前从未尝试过,但是否还有其他适合此类建模任务的候选对象(显然是在 R 中)?
我正在寻找一种替代分类树的方法,它可能会产生更好的预测能力。
我正在处理的数据具有解释变量和解释变量的因素。
我记得在这种情况下遇到过随机森林和神经网络,虽然以前从未尝试过,但是否还有其他适合此类建模任务的候选对象(显然是在 R 中)?
我认为值得一试随机森林(randomForest);针对相关问题提供了一些参考资料:在机器学习中执行交叉验证时“最终”模型的特征选择;CART 模型可以变得健壮吗?. Boosting/bagging 使它们比单个 CART 更稳定,后者已知对小扰动非常敏感。一些作者认为它的性能与惩罚 SVM 或梯度提升机一样好(参见,例如 Cutler 等人,2009)。我认为它们肯定优于 NN。
Boulesteix 和 Strobl 在Optimal classifier selection andnegative bias in error rate estimation: an evidence study on high-dimensional prediction (BMC MRM 2009 9: 85)中对几个分类器进行了很好的概述。我在IV EAM 会议上听说了另一项很好的研究,应该在医学统计学中进行审查,
若昂·马洛科、迪娜·席尔瓦、曼努埃拉·格雷罗、亚历山大·德·门东萨。随机森林是否优于神经网络、支持向量机和判别分析分类器?老年认知障碍患者向痴呆演变的案例研究
我也喜欢caret包:它有据可查,可以比较不同分类器在同一数据集上的预测准确性。它在一些用户友好的功能中负责管理训练/测试样本、计算准确性等。
来自 Friedman 和 coll.的glmnet包实现了惩罚性 GLM(请参阅Journal of Statistical Software中的评论),因此您仍处于一个众所周知的建模框架中。
否则,您还可以查找基于关联规则的分类器(请参阅 CRAN Task View on Machine Learning或数据挖掘中的前 10 种算法,以简要介绍其中的一些)。
我想提一下我计划在 R 中重新实现的另一种有趣的方法(实际上,它是 Matlab 代码),它是Hervé Abdi 的判别对应分析。尽管最初是为了应对具有大量解释变量的小样本研究(最终分组为连贯的块)而开发的,但它似乎有效地将经典 DA 与数据缩减技术相结合。
参考
重要的是要记住,没有一种算法总是比其他算法更好。正如 Wolpert 和 Macready 所说,“任何两种算法在所有可能的问题上的性能平均时都是等效的。” (有关详细信息,请参阅维基百科。)
对于给定的应用程序,“最佳”应用程序通常是与您的应用程序在假设、可以处理的数据类型、可以表示的假设等方面最接近的应用程序。
因此,根据以下标准来描述您的数据是一个好主意:
通过回答这些问题,您可以消除一些算法并将其他算法识别为可能相关,然后可能最终得到一小组您明智地选择可能有用的候选方法。
很抱歉没有给你一个简单的答案,但我希望这对你有帮助!
对于多类分类,支持向量机也是一个不错的选择。我通常为此使用 R kernlab 包。
请参阅以下 JSS 论文以获得很好的讨论: http: //www.jstatsoft.org/v15/i09/
如前所述,随机森林是一种自然的“升级”,如今,SVM 通常是推荐使用的技术。
我想补充一点,切换到 SVM 往往会产生非常令人失望的结果。问题是,虽然像随机树这样的技术使用起来几乎是微不足道的,但 SVM 有点棘手。
当我第一次使用 SVM 时,我发现这篇论文非常宝贵(支持向量分类的实用指南)http://www.csie.ntu.edu.tw/~cjlin/papers/guide/guide.pdf
在 R 中,您可以使用 SVM 的 e1071 包,它链接到事实上的标准(至少在自由软件中!)libSVM 库。