前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用随机森林:在121数据集上测试179个分类器

使用随机森林:在121数据集上测试179个分类器

作者头像
molybdenum
发布2018-02-02 10:31:58
2K0
发布2018-02-02 10:31:58

如果你不知道用什么方法去解决你的问题,你应该尝试一些

也许,你只需要尝试随机森林,或者是高斯支持向量机

在最近的研究中,这两个算法与近200种其他算法在100多个数据集上的平均值相比较,它们的效果最好。

在这篇文章中,我们将回顾这个研究,并考虑一些测试算法在我们机器学习问题上的应用。

我们是否需要数百个分类器?
我们是否需要数百个分类器?

我们是否需要数百个分类器Thomas Leth-Olsen的 照片,保留了一些权利

我们是否需要数百个分类器?

论文的标题是“ 我们是否需要数百个分类器来解决真实的世界分类问题?“,并于2014年10月在”机器学习研究杂志 “上发表。

在本文中,作者通过了121个标准数据集评估了来自UCI机器学习库的 来自17个类别(族)的179个分类器。

作为一种口味,这里列出了所研究的算法族以及每个族中算法的数量。

  • 判别分析(DA):20个分类器
  • 贝叶斯(BY)方法:6个分类器
  • 神经网络(NNET):21个分类器
  • 支持向量机(SVM):10个分类器
  • 决策树(DT):14个分类器。
  • 基于规则的方法(RL):12个分类器。
  • 提升(BST):20个分类器
  • 装袋(BAG):24个分类器
  • 堆叠(STC):2个分类器。
  • 随机森林(RF):8个分类器。
  • 其他乐团(OEN):11个分类器。
  • 广义线性模型(GLM):5个分类器。
  • 最近邻法(NN):5个分类器。
  • 偏最小二乘和主成分回归(PLSR):6
  • Logistic和多项式回归(LMR):3个分类器。
  • 多元自适应回归样条(MARS):2个分类器
  • 其他方法(OM):10个分类器。

这是一个巨大的研究。

一些算法在计算最后的得分前被调整,并且使用4则交叉验证来评估算法。

他们发现随机森林(特别是R中的并行随机森林)和高斯支持向量机(特别是来自libSVM)的表现最好。

从论文摘要:

最有可能是最好的分类器是随机森林(RF)版本,其中最好的(在R中实现并通过插入符号访问)在84.3%的数据集中精度超过90%,最大达到了94.1%。

关于本文的HackerNews讨论中,Kaggle的Ben Hamner对袋装决策树的深刻表现进行了确凿的评论:

这与我们运行数百个Kaggle比赛的经验是一致的:对于大多数分类问题,合奏决策树(随机森林,梯度提升机器等)在一些数据类别变化时表现的最好。

获取免费的算法思维导图

方便的机器学习算法思维导图示例
方便的机器学习算法思维导图示例

我已经创建了一个按照类型组织的60多个算法的方便的思维导图。

下载它,打印并使用它

免费下载

要非常小心地准备数据

有些算法仅适用于分类数据,其他算法需要数值型数据。一些算法可以处理你扔给它们的任何东西。UCI机器中的数据集通常是标准化的,但是不足以在原始状态下用于这样的研究。

这已经在“ 关于为分类器准备数据的论述一文中指出。

在这篇评论中,作者指出,被测试的相关数据集中的分类数据被系统地转换成数值,但是以一种可能阻碍一些算法进行测试的方式。

由于将分类属性转换为数值和对所执行的数据集进行标准化,所以高斯支持向量机可能表现良好。

不过,我赞扬作者在接受这个挑战方面的勇气,这些愿意接受后续研究的人士可能会解决这些问题。

作者还指出,看起来像公民科学努力的OpenML项目面临同样的挑战。

为什么要这样的研究?

这个沿着无自由午餐定理(NFLT)的方向进行的研究很容易被唾弃。

当所有问题的平均值相同时,所有算法的性能是相同的。

我不喜欢这个说法。NFLT要求你没有先验知识。你不知道你正在做什么问题,或者你正在尝试什么算法。这些条件是不实际的。

在本文中,作者列出了该项目的四个目标:

  • 为选定的数据集合选择全局最佳分类器
  • 根据其准确性对每个分类器和家族进行排序
  • 对于每个分类器,要确定其达到最佳准确度的概率,以及其准确度与最佳准确度之间的差异
  • 要评估改变数据集属性(复杂性,#模式,#类和#输入)的分类器行为,

研究的作者承认,我们想要解决的实际问题是所有可能问题的一个子集,有效算法的数量不是无限的,而是可以管理的。

本文是一个声明,确实我们可能有一些关于一套已知(但很小)问题的最常用(或实现)算法套件的能力。(很像20世纪90年代中期的STATLOG项目

实践中:选择一个中间地带

在开始之前,您无法知道哪个算法(或算法配置)在您的问题上表现良好,甚至是最好。

你必须尝试多种算法,你必须在那些展示他们挑选问题结构的能力上加倍努力。

我称之为“ 点检”,并又强烈意愿将数据驱动方式去运用到机器学习上

在这项研究的背景下,点检是介于选择你最喜欢的算法和测试所有知道的算法之间的中间地带。

  1. 选择你最喜欢的算法。快速但受限于任何你最喜爱的算法或库恰好是对这个问题合适的。
  2. 点检查十几种算法。一个平衡的方法能使你注意到表现更好的算法。
  3. 测试所有已知/实现的算法。十分耗时的方法,但是有时候能给出意外的结果。

你使用什么方法取决于你掌握的时间和资源。请记住,在一个问题上试用算法只是通过问题的工作过程的一步。

测试所有算法需要一个强大的测试工具。这不能被低估。

当我过去尝试过这些时,我发现大多数算法都会挑出问题中的大部分结构。我发现他是一个头重脚轻的分布,并且在重的头部的区别总是非常次要的。

这是一个你想变得有意义的小区别。因此,您需要在没有数据遗漏(交叉验证折叠内的数据缩放/变换等)的情况下,投入大量的前期时间来设计强大的测试工具(交叉验证,很多折叠,也许是单独的验证数据集)

现在我认为这是理所当然的应用问题。我甚至不关心哪个算法出现了。我把精力集中在数据准备和整合足够好的现有模型上

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 我们是否需要数百个分类器?
  • 获取免费的算法思维导图
  • 要非常小心地准备数据
  • 为什么要这样的研究?
  • 实践中:选择一个中间地带
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档