SVM与MLP(神经网络):通过性能和预测准确性进行比较

时间:2012-05-20 09:26:32

标签: machine-learning neural-network deep-learning svm

我应该在SVM和神经网络之间决定一些图像处理应用。分类器必须足够快,以便近实时应用,准确性也很重要。由于这是医疗应用,因此分类器具有低故障率非常重要。

哪一个是更好的选择?

1 个答案:

答案 0 :(得分:27)

一些附带条件:

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对NN的任何性能优势:例如,如果您的数据有 两个以上的类,您选择使用配置SVM 连续的分类(又名一对多分类) 将哪些数据馈送到第一个SVM分类器,该分类器对其进行分类 数据点 class I other ;如果班级是其他的话 数据点被馈送到第二个分类器,该分类器对其进行分类 class II 其他

预测效果 (模型的执行速度)

与NN 相比,SVM的性能要高得多。对于三层(一个隐藏层)NN,预测需要将输入矢量连续乘以两个2D矩阵(权重矩阵)。对于SVM,分类涉及确定给定点位于决策边界的哪一侧,换言之,确定余弦产品

预测准确度

通过“失败率”我假设你的意思是错误率而不是生产使用中分类器的失败。如果是后者,那么SVM和NN之间几乎没有差别 - 两种模型通常都是数值稳定的。

比较两个模型的预测准确性,并假设两者都经过合理配置和训练, SVM将胜过NN

SVM与NN的卓越分辨率在scientific literature中有详细记载。确实,这种比较取决于两个模型的数据,配置和参数选择。事实上,这种比较已经被广泛研究 - 可能是所有可以想象的参数空间 - 并且结果如此一致,即使在不切实际的情况下存在少数例外(虽然我不知道任何)也不应该干扰SVM优于NN的结论。

为什么SVM胜过NN?

这两个模型基于根本不同的学习策略。

在NN中,调整网络权重(在训练期间调整的NN拟合参数),使得网络输出与实际值(目标)之间的平方和误差最小化。

相比之下,训练SVM意味着 直接从训练数据中明确确定决策边界 。当然,这需要作为构建SVM模型所需的优化问题的谓词步骤:最小化最大边缘超平面和支持向量之间的聚合距离。

在实践中,虽然配置算法来训练SVM更加困难。原因是由于配置所需的参数数量较大(与NN相比):

  • 选择内核

  • 选择内核参数

  • 选择保证金参数的值