Lil*_*ily 9 machine-learning svm neural-network deep-learning
我应该在SVM和神经网络之间决定某些图像处理应用.分类器必须足够快,以便近实时应用,准确性也很重要.由于这是医疗应用,因此分类器具有低故障率是重要的.
哪一个是更好的选择?
dou*_*oug 28
一些附带条件:
ML分类器的性能可以指(i)分类器本身的性能; 或(ii)谓词步骤的执行:模型构建算法的执行速度.特别是在这种情况下,答案是完全不同的,这取决于两者中OP中的哪一个,所以我将分别回答每一个.
第二,通过神经网络,我假设你指的是最常见的实现 - 即前馈,反向传播的单隐藏层感知器.
培训时间 (模型构建器的执行速度)
对于SVM与NN相比:SVM要慢得多.有一个直接的原因:SVM训练需要解决相关的拉格朗日双重(而不是原始)问题.这是一个二次优化问题,其中变量的数量非常大 - 即等于训练实例的数量(数据矩阵的"长度").
实际上,如果您的方案中存在两个因素,则可能会使此优势无效:
NN训练很容易并行化(通过map reduce); 并行SVM训练是不平凡的,但它也并非不可能-在过去的八年左右的两年内,几种实现已经公布和验证工作(https://bibliographie.uni-tuebingen.de/xmlui/bitstream/handle/ 10900/49015/pdf/tech_21.pdf)
多类分类问题 SVM是两类分类器.它们可以适用于多类问题,但这绝不是直截了当的,因为SVM使用直接决策函数.(将SVM修改为多类问题的一个很好的来源是S. Abe,支持向量机模式分类,Springer,2005).这种修改可以消灭任何性能优势,支持向量机具有比神经网络:因此,举例来说,如果你的数据有
两个以上的类,并且选择使用SVM连续classificstaion(又名一对一对多分类),其中数据被送到配置第一个SVM分类器,它将数据点分类为I类或其他类 ; 如果该类是其他的,则将数据点馈送到第二分类器,该分类器将其分类为
II类或其他类,等等.
预测性能 (模型的执行速度)
与NN相比,SVM的性能显着提高.对于三层(一个隐藏层)NN,预测需要将输入矢量连续乘以两个2D矩阵(权重矩阵).对于SVM,分类涉及确定给定点位于决策边界的哪一侧,换句话说,确定余弦积.
预测准确度
通过"失败率",我假设您的意思是错误率而不是生产使用中分类器的失败.如果是后者,那么SVM和NN之间几乎没有差异 - 两种模型通常在数值上都是稳定的.
比较两个模型的预测准确性,并假设两者都经过合理配置和训练,SVM将胜过NN.
SVM与NN的卓越分辨率在科学文献中有很好的记载.确实,这种比较取决于两个模型的数据,配置和参数选择.事实上,这种比较已经被广泛研究 - 可能是所有可以想象的参数空间 - 并且结果如此一致,即使在不切实际的情况下存在少数例外(虽然我不知道任何)也不应该干扰SVM优于NN的结论.
为什么SVM优于NN?
这两个模型基于根本不同的学习策略.
在NN中,调整网络权重(在训练期间调整的NN的拟合参数),使得网络输出与实际值(目标)之间的平方和误差最小化.
相比之下,训练SVM意味着直接从训练数据明确确定决策边界.当然,这需要作为构建SVM模型所需的优化问题的谓词步骤:最小化最大边缘超平面和支持向量之间的聚合距离.
实际上,虽然配置算法来训练SVM更难.原因是由于配置所需的参数数量较大(与NN相比):
选择内核
选择内核参数
选择margin参数的值