machine-learning - SVM 与 MLP(神经网络): compared by performance and prediction accuracy

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

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

哪个是更好的选择?

最佳答案

几个条件:

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 分类器,该分类器对
    数据点 I 类或其他;如果类(class)是其他然后
    数据点被馈送到第二个分类器,该分类器对其进行分类
    II类或其他等。

  • 预测性能 (模型的执行速度)

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

    预测精度

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

    比较两个模型的预测精度,并假设两者都经过适当的配置和训练, SVM 将优于 NN。

    scientific literature 中详细记录了 SVM 相对于 NN 的出色分辨率。 .确实,这样的比较取决于两个模型的数据、配置和参数选择。事实上,这种比较已经得到了如此广泛的研究——也许是所有可以想象的参数空间——而且结果如此一致,以至于在不切实际的情况下,即使存在一些异常(exception)(尽管我不知道)也不应该干扰了 SVM 优于 NN 的结论。

    为什么 SVM 优于 NN?

    这两种模式基于根本不同的学习策略。

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

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

    在实践中,虽然配置算法来训练 SVM 更难。原因是由于配置所需的大量参数(与 NN 相比):
  • 内核选择
  • 内核参数选择
  • margin 参数值的选择
  • 关于machine-learning - SVM 与 MLP(神经网络): compared by performance and prediction accuracy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10672268/

    相关文章:

    python - 在 Numpy 中乘积 block 矩阵

    neural-network - HDF5 中的 Caffe 分类标签

    tensorflow - 如何在 Keras 中计算向量点积?

    python - pytorch是否在nn中自动应用softmax

    python - 在 Tensorflow 中使用您自己的数据

    machine-learning - 文档分类包括非字典词

    python - Scikit - SGDRegressor 不适合

    machine-learning - 为什么我收到 ValueError?

    r - 从插入符序列对象中提取要素类/类型

    algorithm - Delta法则神经网络教学。必要的算法解释