支持向量机是否仍被视为利基市场中的“最新技术”?


58

这个问题是我在另一个问题上看到的评论的回应。

评论是关于Coursera上的机器学习课程提纲的,并且遵循“如今SVM的使用率不高”的思路。

我本人只是刚刚完成了相关的讲座,而我对SVM的理解是它们是一种强大且高效的分类学习算法,并且在使用内核时,它们具有“利基”特性,涵盖了大约10到1000个特征,以及训练样本的数量可能在100到10,000之间。训练样本的限制是因为核心算法围绕优化从方形矩阵生成的结果进行了优化,该矩阵的尺寸基于训练样本的数量,而不是原始特征的数量。

因此,我看到的评论是否对课程进行了一些实际的改变,如果是这样,那是什么改变:一种同样涵盖SVM的“最佳点”的新算法,更好的CPU意味着SVM的计算优势不那么值得?抑或是评论者的意见或个人经验?

我尝试搜索例如“支持向量机过时了”,但没有发现任何暗示它们被抛弃的理由。

Wikipedia拥有:http : //en.wikipedia.org/wiki/Support_vector_machine#Issues。。。主要的症结似乎是难以解释模型。这使SVM可以很好地用于黑匣子预测引擎,但对于生成见解却不是那么好。我认为这不是主要问题,在选择合适的工作工具时(考虑到培训数据和学习任务的性质等),这只是一件小事。



6
我不明白-这不是应该在CrossValidated上发布的问题吗?对于DataScience和CrossValidated之间的关系,我仍然感到困惑。
fnl 2015年

@fnl:svm作为来自较少数学上的“纯”工程解决方案的分类器有一些竞争,因此我认为DataScience在此处进行比较的位置更好。虽然我分享您的困惑!
尼尔·斯莱特

Answers:


46

SVM是功能强大的分类器。它具有一些不错的优点(我猜这是其受欢迎程度的原因)...这些是:

  • 效率:仅支持向量在确定分类边界中起作用。训练集中的所有其他点都不需要存储在内存中。
  • 内核的功能:使用适当的内核,您可以将要素空间转换为更高的维度,从而使其线性可分离。内核的概念适用于任意对象,在这些对象上您可以借助内部乘积来定义一些相似性概念……因此SVM可以对任意对象(例如树,图形等)进行分类。

也有一些明显的缺点。

  • 参数敏感性:性能对正则化参数C的选择非常敏感,这会导致模型中的某些差异。
  • 高斯核的额外参数:高斯核的半径可能会对分类器的准确性产生重大影响。通常,必须进行网格搜索以找到最佳参数。LibSVM支持网格搜索。

SVM通常属于“稀疏内核机器”类别。在SVM情况下,稀疏向量是从最大余量准则中选择的支持向量。相关向量机(RVM)等其他稀疏向量机的性能优于SVM。下图显示了两者的比较性能。在图中,x轴显示来自两个类y = {0,1}的一维数据。混合模型定义为P(x | y = 0)= Unif(0,1)和P(x | y = 1)= Unif(.5,1.5)(Unif表示均匀分布)。从该混合物中采样了1000个点,并使用SVM和RVM估计后验。SVM的问题是预测值与真实对数赔率相差甚远。

RVM与SVM

当今非常流行的一种非常有效的分类器是“ 随机森林”。主要优点是:

  • 仅需调整一个参数(即森林中的树木数量)
  • 对参数完全不敏感
  • 可以轻松扩展到多个类别
  • 基于概率原则(在决策树的帮助下最大程度地增加互惠信息)

4
我并不是说要过分苛刻,但是SVM效率不高。在大多数情况下,它们具有立方复杂性,这就是为什么要逐步淘汰的原因。
印度2014年

2
是的,标准收敛方法需要O(n ^ 3)...但是我想我已经看到某个地方(可能是T. Joachims的主页)将其简化为O(n ^ 2)
Debasis

4
对于大多数实际问题,@ indico内核SVM训练的复杂度接近二次方。普氏的立方SMO已停用了一段时间。对于真正的大数据集来说,这仍然太高了,但是还不如您所描绘的那样糟糕。线性SVM高效,具有亚线性复杂度。
Marc Claesen 2014年

SVM的其他优点:1)不熟悉数据分析的人们可以很好地想象其内部工作原理。[并且在较小程度上:2)如果需要(非数据科学)专家进行实时交互式反馈,则线性SVM可以作为一种更快的选择-从而使专家可以更好地进行培训。]
tsttst 2016年

2
随机森林通常确实具有其他超参数,例如每棵树的最大要素数量和最大深度。还值得注意的是,SVM易于在资源受限的环境中投入生产-它们不需要太多内存即可对模型进行评分。
David Anderson

8

在回答这个问题的一个显著的区别做出是否是我们所谈论的线性支持向量机或非线性的,即,核化支持向量机。

线性SVM

当可以通过要素的线性关系来解释数据时,线性SVM在理论上和实践上都是很好的模型。它们比诸如线性(又称为最小二乘)回归之类的经典方法优越,因为它们很健壮,在某种意义上说,输入数据中的小扰动不会在模型中产生显着变化。这是通过尝试找到使数据点之间的边距最大化的线(超平面)来实现的。该最大余量超平面已显示出可以保证模型在不可见数据点上的泛化能力,这是其他机器学习方法所缺乏的理论特性。

线性SVM也可以解释为任何其他线性模型,因为每个输入要素的权重都直接影响模型输出。

线性SVM的训练速度非常快,显示了非常大的数据集的子线训练时间。这是通过使用随机梯度下降技术来实现的,这非常类似于当前的深度学习方法。

非线性SVM

非线性SVM仍然是线性模型,并且具有相同的理论优势,但是它们使用所谓的核技巧在扩大的空间上构建此线性模型。可见的结果是,结果模型可以对数据做出非线性决策。由于可以在数据点之间提供自定义的内核编码相似性,因此您可以利用问题知识来使内核专注于问题的相关部分。但是,有效地做到这一点可能很困难,因此,通常,几乎每个人都使用即插即用的高斯内核。

非线性SVM可以部分解释,因为它们告诉您哪些训练数据与预测相关,哪些与预测无关。对于其他方法(例如随机森林或深度网络),这是不可能的。

不幸的是,非线性SVM速度很慢。最新的算法是Sequential Minimal Optimization,它表现出二次性能,并且通过LIBSVM库在包括scikit-learn在内的许多机器学习库中广泛实现。

这些方法的普及

SVM确实不像以前那样流行:可以通过谷歌搜索SVM与随机森林或深度学习方法的研究论文或实现进行检查。尽管如此,它们在某些实际设置中还是很有用的,特别是在线性情况下。

另外,请记住,由于有免费午餐定理,因此在所有问题上,没有任何一种机器学习方法可以胜过其他任何方法。虽然某些方法通常可以更好地工作,但您总会发现不那么普遍的方法可以获得更好结果的数据集。

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.