如果你不知道用什么方法去解决你的问题,你应该尝试一些
也许,你只需要尝试随机森林,或者是高斯支持向量机。
在最近的研究中,这两个算法与近200种其他算法在100多个数据集上的平均值相比较,它们的效果最好。
在这篇文章中,我们将回顾这个研究,并考虑一些测试算法在我们机器学习问题上的应用。
我们是否需要数百个分类器Thomas Leth-Olsen的 照片,保留了一些权利
论文的标题是“ 我们是否需要数百个分类器来解决真实的世界分类问题?“,并于2014年10月在”机器学习研究杂志 “上发表。
在本文中,作者通过了121个标准数据集评估了来自UCI机器学习库的 来自17个类别(族)的179个分类器。
作为一种口味,这里列出了所研究的算法族以及每个族中算法的数量。
这是一个巨大的研究。
一些算法在计算最后的得分前被调整,并且使用4则交叉验证来评估算法。
他们发现随机森林(特别是R中的并行随机森林)和高斯支持向量机(特别是来自libSVM)的表现最好。
从论文摘要:
最有可能是最好的分类器是随机森林(RF)版本,其中最好的(在R中实现并通过插入符号访问)在84.3%的数据集中精度超过90%,最大达到了94.1%。
在关于本文的HackerNews的讨论中,Kaggle的Ben Hamner对袋装决策树的深刻表现进行了确凿的评论:
这与我们运行数百个Kaggle比赛的经验是一致的:对于大多数分类问题,合奏决策树(随机森林,梯度提升机器等)在一些数据类别变化时表现的最好。
我已经创建了一个按照类型组织的60多个算法的方便的思维导图。
下载它,打印并使用它
有些算法仅适用于分类数据,其他算法需要数值型数据。一些算法可以处理你扔给它们的任何东西。UCI机器中的数据集通常是标准化的,但是不足以在原始状态下用于这样的研究。
这已经在“ 关于为分类器准备数据的论述 ” 一文中指出。
在这篇评论中,作者指出,被测试的相关数据集中的分类数据被系统地转换成数值,但是以一种可能阻碍一些算法进行测试的方式。
由于将分类属性转换为数值和对所执行的数据集进行标准化,所以高斯支持向量机可能表现良好。
不过,我赞扬作者在接受这个挑战方面的勇气,这些愿意接受后续研究的人士可能会解决这些问题。
作者还指出,看起来像公民科学努力的OpenML项目面临同样的挑战。
这个沿着无自由午餐定理(NFLT)的方向进行的研究很容易被唾弃。
当所有问题的平均值相同时,所有算法的性能是相同的。
我不喜欢这个说法。NFLT要求你没有先验知识。你不知道你正在做什么问题,或者你正在尝试什么算法。这些条件是不实际的。
在本文中,作者列出了该项目的四个目标:
研究的作者承认,我们想要解决的实际问题是所有可能问题的一个子集,有效算法的数量不是无限的,而是可以管理的。
本文是一个声明,确实我们可能有一些关于一套已知(但很小)问题的最常用(或实现)算法套件的能力。(很像20世纪90年代中期的STATLOG项目)
在开始之前,您无法知道哪个算法(或算法配置)在您的问题上表现良好,甚至是最好。
你必须尝试多种算法,你必须在那些展示他们挑选问题结构的能力上加倍努力。
我称之为“ 点检”,并又强烈意愿将数据驱动方式去运用到机器学习上。
在这项研究的背景下,点检是介于选择你最喜欢的算法和测试所有知道的算法之间的中间地带。
你使用什么方法取决于你掌握的时间和资源。请记住,在一个问题上试用算法只是通过问题的工作过程的一步。
测试所有算法需要一个强大的测试工具。这不能被低估。
当我过去尝试过这些时,我发现大多数算法都会挑出问题中的大部分结构。我发现他是一个头重脚轻的分布,并且在重的头部的区别总是非常次要的。
这是一个你想变得有意义的小区别。因此,您需要在没有数据遗漏(交叉验证折叠内的数据缩放/变换等)的情况下,投入大量的前期时间来设计强大的测试工具(交叉验证,很多折叠,也许是单独的验证数据集)
现在我认为这是理所当然的应用问题。我甚至不关心哪个算法出现了。我把精力集中在数据准备和整合足够好的现有模型上