RBF SVM用例(对比逻辑回归和随机森林)


10

具有径向基函数内核的支持向量机是一种通用的监督分类器。

虽然我知道这些SVM的理论基础及其优点,但我不知道它们是首选方法的情况。那么,RBF SVM是否比其他ML技术优越呢?(无论是在得分方面,还是其他方面-诸如健壮性,入门容易性,可解释性等)

我在问,因为我的默认方法围绕逻辑回归(也许有些交互作用),随机森林和一些神经网络。我做ML的所有朋友(有些是Kaggle赢家)都不是SVM用户(但这可能是我所在社区的产物,或者是他们处理的问题)。

Answers:


8

我将尝试结合已发布的证据,个人经验和推测来回答这个问题。

A)公开的证据。

我唯一知道可以帮助回答该问题的论文是Delgado等,2014年-我们需要数百个分类器来解决现实世界中的分类问题吗?-JMLR,它在UCI的121个数据集上运行数百种不同的算法和实现。他们发现,尽管RBF SVM不是“最佳”算法(如果我没记错的话,它是随机森林),但它在前3名(或5名)中。

如果您认为他们选择的数据集是现实世界问题的“好样本”,那么SVM绝对是一种应该针对新问题尝试的算法,但应该首先尝试随机森林!

概括该结果的局限性在于,数据集几乎都是又高又瘦(n >> p),不是很稀疏-我认为对于RF来说应该更多的是问题,而不是很大(n和p)。

最后,仍然根据已发布的证据,我建议两个站点比较随机森林的不同实现:

B)个人经验。

我相信诸如Delgado等的论文对于机器学习社区都非常重要,因此我尝试在某些不同条件下复制它们的结果。我对100多个二进制数据集运行了15种不同的算法(来自Delgado的数据集)。我还认为,与选择超参数相比,我在选择时更加谨慎。

我的结果是,SVM是“最佳算法”(平均排名4.9)。我认为SVM通过了RF,因为原始数据集包含许多多类问题(我将在推测部分中进行讨论)应该是SVM的问题。

编辑(6月16日):

但是,RF是这样的方式更快,紧随其后的是GBM(5.8)第二届最好的算法(平均等级5.6),nnets(7.2),依此类推)。我没有在这些问题中尝试标准Logistic回归,但尝试了弹性网(L1和L2正则化LR),但效果不佳(平均排名8.3)〜

我尚未完成对结果的分析或撰写论文,因此我什至无法指向包含结果的技术报告。希望在几周后,我可以重新编辑此答案,并指向包含结果的技术报告。

该论文可在http://arxiv.org/abs/1606.00930上找到。经过全面分析,RF和SVM在预期错误率方面几乎相等,而SVM 最快(令我惊讶!)。我不再那么强调推荐RF(基于速度)。

因此,我的个人经验是,尽管SVM可以使您获得更高的准确性,但使用RF几乎总是一个更好的选择。

同样对于较大的问题,可能无法使用批处理SVM求解器(我从未使用过在线SVM求解器,例如LASVM或其他)。

最后,我只在一种情况下使用了逻辑回归。我正在对图像分类问题(例如-合并或不合并两个不同的图像描述以及描述的维数)进行一些“强烈”的特征工程。而且我使用逻辑回归在众多选择中进行选择(因为在LR中没有超参数搜索)。一旦我们确定了最佳功能(根据LR),便使用RF(选择最佳超参数)来获得最终的分类器。

C)投机

我从未认真研究过多类问题,但我的感觉是SVM在这些问题上不太好。问题不是一对一解决方案或一对一解决方案之间的问题,而是我所知道的所有实现都将对所有(OVO或OVA)分类器使用相同的超参数。为SVM选择正确的超参数非常昂贵,以至于我知道的任何现成的实现都不会搜索每个分类器。我推测这是SVM的问题(但不是RF的问题!!)。

再说一次,对于多类问题,我会直接去RF。


一个很好的答案!您是否有机会在复制Delgado等人的实验中撰写博客文章,笔记本或脚本?(调整参数,缩放比例变量通常与选择算法一样重要,因此如果没有这样的话,就很难对算法的优越性做出强烈要求。)
Piotr Migdal

2-520252102152-152-10.52-62-1.5230.51个2p

0

我没有足够的权限来发表评论,所以我只在这里提供输入/观察内容作为答案。

以我的经验,当二进制类达到平衡时,支持向量分类器(SVC)往往会达到同等水平或优于其他方法。对于不平衡的类,SVC的表现往往很差。

我并不经常处理多类问题,但是我也看到SVC对于多类问题也有一些不错的结果。

我注意到的另一件事是,二维性的诅咒似乎并没有像其他建模技术那样对SVC产生太大影响。换句话说,当我在模型中添加更多项时,与训练集相比,其他技术在测试(或保持)集上的表现开始很差。但是当我使用SVC时却没有那么多。由于这个原因,如果模型简约不是您的优先考虑,那么SVC可能是一个更好的选择,因为您可以输入很多术语而不会像其他方法那样过度拟合。

我对SVC的问题之一是,它没有隐式提供一种能够对观察结果进行排序的度量(如预测概率)。您可以使用Platt Scaling(在Python的sklearn.svm包中实现),但是我看到了一些不一致之处。(如果有人感兴趣,我可以分享详细信息。)

不知道这是否真的回答了您的问题,但这是我的观察。希望能有所帮助。


0

RF和(RBF)SVM背后有不同的理论,但是假设您有足够的数据,它们的性能相似。他们都可以学习复杂的功能,并且可以很好地处理嘈杂的,无用的变量和异常值。

如果您想为像kaggle之类的产品获得最佳结果,则无论如何,您都将集成多个模型,包括RF和SVM。

在非kaggle设置中,您可能会考虑实施模型,将其投入生产,进行预测,解释,向经理解释等难度。

如果您的数据量很少或正在处理维度问题,则绝对首选SVM(线性或高度正则化的RBF)。这样做的原因有两个,一个是更好地寻找最大余量超平面而不是特征上的最佳分割序列,而且通常也不需要复杂的边界,因为在高维空间中会有一些超平面仍然可以分离数据。另一个问题是,RF难以调整(需要调整的参数更多),因此您需要更多的数据。

另一个认为,交叉验证对于SVM(尤其是LOOCV)可能非常便宜且快速。由于只有少数几个样本是支持向量(并非总是如此),因此您不必在每次折叠时都对分类器进行重新训练,但前提是现在测试集中现在的数据以前是支持向量。这也可以使在线学习更加容易。

而且,存储支持向量可能比完整树要便宜。

建立概率模型通常比分类器更好。因此,首先要进行建模,然后再进行决策。在那种情况下,逻辑回归将是首选。而且,您仍然可以使用内核和正则化来使其表现出所需的效果。另外,您将不会使用RF回答以下问题:校正年龄,生活方式,性别和教育程度,喝酒会增加染上心脏病的机会吗?

我发现一些其他有趣的资源: https: //www.quora.com/What-are-the-advantages-of-different-classification-algorithms http://videolectures.net/solomon_caruana_wslmw/

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.