对于SVM的coef_问题

来源:11-4 scikit-learn中的SVM

热心市民小马

2021-05-10

bobo老师,咱们在列举SVM优化的时候似乎就假定了已经知道每个特征前的系数了,之后再对这个直线进行调整,可是这个系数是怎么算出来的呢,SVM是应该先求出一组系数然后进行调整的吧

写回答

1回答

liuyubobobo

2021-05-11

首先,这个课程没有具体介绍 SVM 计算的底层原理。


首先,我们肯定可以使用搜索的方式,将 SVM 的解搜索出来,比如随机梯度下降法。网上有资料,描述的是这个思路。比如这里:https://towardsdatascience.com/svm-implementation-from-scratch-python-2db2fc52e5c2

那么这样的思路,就是你说的,“先求出一组系数然后进行调整”。


===============


但是,SVM 这个最优化问题,本质是一个二次规划问题。具体的这个数学推导,远远超过这个课程的设计了,可以参考这里的讨论:http://coding.imooc.com/learn/questiondetail/5BkQ46D0qR56xad1.html


如果对这个数学推导感兴趣,我简单看了一下,这篇文章后半部分的推导挺详细的:https://towardsdatascience.com/support-vector-machine-803884d967e3


对于二次规划问题的求解,有一些更已知的数学方式进行求解(数值方法)。但其实,大多数数值方法本身也是迭代的,只不过应用数学性质,可以迭代的更快而已。(如果你学习过数值分析,可以回忆一下诸如牛顿迭代法或者泰勒展开一类的方式。)


不过这个迭代过程,我们可能很难说是“先求出一组系数然后进行调整”,他本质是在求数学解:)

(一个很重要的概念:数学解不一定是 O(1) 的。)


继续加油!:)

0
0

Python3入门机器学习 经典算法与应用  

Python3+sklearn,兼顾原理、算法底层实现和框架使用。

5893 学习 · 2455 问题

查看课程