- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我知道SVM被认为是“ANN杀手”,因为它们会自动选择表示形式的复杂性并找到全局最优值(有关某些SVM的赞扬说法,请参见here)。
但是,在这里我还不清楚-所有这些优势的主张是否仅适用于两级决策问题的情况,还是会更进一步? (我假设它们适用于非线性可分离类,否则没人会在意)
因此,我想清除一些案例的样本:
最佳答案
在许多类上,SVM是否比ANN更好? 您可能是在指这样一个事实,即SVM本质上是一类或两类分类器。的确如此,并且没有办法修改SVM算法来分类两个以上的类。
SVM的基本特征是分离的最大边距超平面,其位置是通过使其与支持 vector 的距离最大来确定的。然而,SVM通常被用于多类分类,这是通过围绕多个SVM分类器的处理包装来完成的,这些分类器以“一对多”模式工作-即,将训练数据显示给对这些实例进行分类的第一个SVM为“I类”或“非I类”。然后,将第二类中的数据显示给第二个SVM,将其分类为“II类”或“非II类”,依此类推。实际上,这很好。因此,正如您所期望的,与其他分类器相比,SVM的优越分辨率不仅限于两类数据。
据我所知,文献报道的研究证实了这一点,例如,在题为标题的论文Sex with Support Vector Machines中,与SVM相比,报道了SVM的性别识别(男性/女性)分辨率明显好于12平方像素图像。一组传统的线性分类器; SVM也胜过RBF NN和大型集成RBF NN。但是似乎有很多类似的证据表明SVM在多类问题中的优越性能:例如,SVM在protein-fold recognition和time-series forecasting中的性能优于NN。
从过去十年左右的时间里阅读这些文献给我的印象是,大多数精心设计的研究都是由熟练配置和使用这两种技术的人员使用,并且使用足以抵抗分类的数据来引起分辨率方面的有意义的差异,报告了SVM相对于NN的优越性能。但是,正如您的问题所暗示的那样,性能差异在某种程度上似乎是特定于 Realm 的。
例如,在阿拉伯文字中,NN在作者识别的comparative study中胜过SVM;在比较信用评级预测的study中,两个分类器在分辨率上没有明显的区别。在高能粒子分类的study中报告了类似的结果。
我从学术文献中不止一个source中获悉,随着训练数据量的减少,SVM优于NN。
最后,可以从这些比较研究的结果中得出结论的程度很有限。例如,在一项比较SVM和NN在时间序列预测中的准确性的研究中,研究者reported认为SVM确实优于传统的(在分层节点上进行反向传播)NN,但是SVM的性能与传统NN的性能大致相同。 RBF(径向基函数)NN。
[SVM是否比ANN更好? SVM不在在线设置中使用(即增量训练)。 SVM的本质是分离的超平面,其位置由少量支持 vector 确定。因此,原则上,即使单个附加数据点也可以显着影响此超平面的位置。
在强化学习之类的半监督情况下如何? 直到OP对这个答案发表评论之前,我都不知道以这种方式使用的神经网络或SVM,但是他们知道。
SVM中使用最广泛的半监督变体称为Transductive SVM(TSVM),首先由 Vladimir Vapnick (发现/发明了传统SVM的人)提到。除了所谓的技术外,我对这种技术几乎一无所知,并且遵循转导原理(大致是横向推理-即从训练数据到测试数据的推理)。显然,TSV是text classification Realm 中的首选技术。
是否有更好的无监督SVM版本? 我认为SVM不适合无监督学习。分离基于支持 vector 确定的最大余量超平面的位置。这很容易是我自己有限的理解,但是如果这些支持 vector 未标记(即,如果您事先不知道要分离的内容),我将看不到会发生什么。无监督算法的一个关键用例是没有标签的数据或有标签的数据,并且这种情况极不平衡。例如在线欺诈;在这里,您的训练数据中可能只有几个标记为“欺诈性帐户”的数据点(通常准确性有问题),而其余的99%以上标记为“非欺诈”。在这种情况下,一类分类器(SVM的典型配置)是一个不错的选择。特别是,训练数据由标记为“非欺诈”和“不合格”的实例(或其他一些标签来表明它们不在类(class)中)组成,换句话说,是“在决策边界内”和“在决策边界外” 。”
最后,我想提一提的是,在“发现” 20年后,SVM是ML库中根深蒂固的成员。实际上,与其他最新分类器相比,始终如一的出色分辨率已得到充分证明。
他们的血统既是其在众多严格控制的研究中记录的卓越性能的功能,也是其概念上的优雅。考虑到后一点,考虑到多层感知器(MLP)通常是出色的分类器,但它们是由数值优化例程驱动的,该例程在实践中很少会找到全局最小值。此外,该解决方案没有概念意义。另一方面,构建SVM分类器的核心数字优化实际上确实找到了全局最小值。更重要的是,该解决方案是实际的决策边界。
不过,我认为SVM的声誉在过去几年中有所下降。
我怀疑的主要原因是NetFlix竞争。 NetFlix强调了矩阵分解的基本技术的分辨能力,甚至更加强调了组合分类器的能力。人们在NetFlix之前很早就组合了分类器,但更多地将其作为一种偶然性技术,而不是将分类器设计作为一种属性。此外,许多组合分类器的技术非常易于理解和实现。相比之下,SVM不仅很难编码(我认为,这是迄今为止在代码中实现的最困难的ML算法),而且也难以配置和实现为预编译的库-例如,必须选择内核,结果对如何重新缩放/标准化数据等非常敏感。
关于machine-learning - 什么时候应该使用支持向量机而不是人工神经网络?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6699222/
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
我刚刚开始使用 Arduino,对更多高级内容几乎一无所知。这看起来很简单。现在我是一个通常喜欢将两个设备集成在一起的人,所以我想知道我是否可以使用计算机的键盘或连接到 Arduino 板上的两个硬件
Hadoop上是否有支持 vector 机的实现? 我正在寻找使我能够训练然后在Hadoop之上测试SVM模型的代码。 最佳答案 有人正在使用BSP在Apache Hama之上进行实现,该实现基本上是
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
我想用 Java 编写一个“智能监视器”,它会在它检测到即将出现的性能问题时发出警报。我的 Java 应用正在将结构化格式的数据写入日志文件: | | 因此,例如,如果我有一个执行时间为 812
我在 Cappuccino 中遇到这种错误 TypeError: Result of expression '_2b' [undefined] is not an object. TypeError:
我想编写一个简单的 bean 机程序。该程序将接受用户输入的球数和槽数,并计算每个球的路径。每个槽中的球数也将打印为直方图。 我尽力让代码保持简短和简洁,但我能做到的最好的长度是 112 行。当我运行
我正在开发一个 Plone 模板。目前我正在对模板实现搜索。模板上有一个表单提交到同一模板,即同一页面。 我需要启用页面的某些部分,即结果 DIV,仅当页面中的表单已提交时。我不确定如何检查页面是否已
我是机器学习的新手。我正在使用 opencv 开源库做一个项目。我的问题是我没有机器学习方面的经验。我从不同的图像中提取了特征并对其进行了评估,现在我想使用 SVM 对这些图像中的对象进行分类,但我不
我有一个来自自定义抽象对象的数据集和一个自定义距离函数。是否有任何好的 SVM 库允许我训练我的自定义对象(不是 2d 点)和我的自定义距离函数? 我在 this similar stackoverf
我正在尝试编写 SVM 或 KNN 程序来对文本文档进行分类。我掌握了两者的概念,但我希望看到一些很好的代码示例,它们专门演示了如何将文本/单词表示为 vector 。有人知道好的教程/文章/讲座/任
我想知道支持 vector 机 (SVM) 对于大型/超大型数据集(5-15M+ 行)具有非线性决策边界(例如高斯核)? 我知道两种特殊的方法:一方面,这个使用随机梯度下降等的调查: http://c
我试图在 Raspberry Pi 中使用 python 控制连续伺服(DF15RSMG),但连续伺服无法停止。代码如下: import RPi.GPIO as GPIO import time
我们在 .net 中有银行项目。在那个项目中我们需要实现存折打印。 - 存折背面会有磁条。 - 当客户将存折插入自助服务终端时,自助服务终端将生成 ISO 8583 信息。 - 为响应此消息,CBS(
我想使用 svm 分类器进行面部表情检测。我知道 opencv 有一个 svm api,但我不知道训练分类器的输入应该是什么。到现在看了很多论文,都是说人脸特征检测后训练分类器。 到目前为止我做了什么
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
为了学习 ArchLinux,我在 VirtualBox 机器上安装并使用了 ArchLinux。它运行完美。现在我在我的电脑上安装了 Docker(Windows 环境)。在安装 Docker 的过
我找不到很多相关信息,但是我知道可以通过命令提示符electron-packager .创建一个 Electron 应用。但是,可以通过 Node 快速路由在前端执行它吗? 所以我想做这样的事情: r
我正在使用 MS Visual Studio 2008、OpenCV、C++ 和 SVM 继续我的 OCR 项目。我生成了一个超过 2000 个机印字符样本的数据集。当我用线性核测试时,我总是得到 9
我通过UART接口(interface)(RX-TX,GND-GND)将伺服(TowerPro sg90)连接到32伺服 Controller (this one)。 卖家提供了如何连接和控制我的伺服
我是一名优秀的程序员,十分优秀!