【发布时间】:2017-03-17 00:12:29
【问题描述】:
最近我在我的城市参加了一个数据科学聚会,讨论了将神经网络与 SVM 连接起来。不幸的是,演示者在演示后不得不立即退出,所以我无法提出一些问题。
我想知道这怎么可能?他在谈论使用神经网络进行分类,后来,他使用 SVM 分类器将他的准确率和精度提高了大约 10%。
我将 Keras 用于神经网络,将 SKlearn 用于机器学习的其余部分。
【问题讨论】:
-
人们总是可以使用ensembling/stacking,其中某个最终预测器是 SVM。一种可能更有趣的方法是用 SVM 层(并联合训练)替换最后一层,如 this paper 中所述
-
替换最后一层听起来像是一种“苛刻”的方法。我正在考虑采用神经网络的最后一层,然后尝试在 SVM 中对其进行处理。
-
替换这些层并不适用于所有任务,但会为某些任务添加一些内容。这是一种为非线性预测器的某些部分添加一些理论上合理的方法的好方法。您的方法的不同之处在于:如果将一些基于最大边距的方法作为层添加,它是共同学习的!这意味着,如果运气好和架构良好,NN 可以充当为最大边缘分类调整的非线性预处理器。到最后一层。使用您的方法,您将学习这两种模型,而无需了解 NN 中的 SVM。这通常不太强大
-
如果你想追求你的 svm-after-nn 方法,那就试试吧。我没有看到很多问题,因为 keras 可能支持 sklearn 接口(fit,也许 fit_transform 和 co.)。这意味着您可以构建一些管道。但是由于这些并没有像上面解释的那样真正连接,因此您需要在架构、规范化等方面进行大量调整。即使作为第一部分的 NN 作为分类单元本身非常强大,但这并不意味着这些预测是进一步 svm 处理的良好输入(一些松散连接的关键字(相反方向):whitening )。
-
好的,我想试试你的方法,你以前有没有尝试过这样的解决方案?我明白了主要的想法,但目前我很难想象实现应该是什么样子。
标签: python machine-learning scikit-learn keras