12年前svm的天下,现在是神经网络的。
有个同学去面试一个公司,很多公司都喜欢面试svm,这个公司直接让他写出推导过程,一般面试就面试原理和参数比较多,这个同学写出来后 ,通过面试,但是他没去,他说没见过要推导过程了,就是心里不忿。。。。。。
其实机器学习解题思路,大多通过实际问题,转换为数学表达式,找出损失函数,进行优化 迭代。
svm解决分类问题,二分类(多分类)
现在已知:
其中x为正例Y=+1,x为负例Y=-1
现在要解决的问题是求出来一个直线,分出来这个数据集,使得正例和负例都分开。
1、先解决决策边界和点到面距离的方程:
选择出最大边界的直线。可以发现只要找到点到线的距离最远的就可以,所以先求出来点到线的距离。
向量距离的计算:
点x到平面的距离:
1、w是平面法向量,X是平面外的点,要求它到平面距离,先任意找平面距离X''和X'。理解简单点,点x到平面距离为:
W转置*(X-X')
这里x与x'还有平面组合一个直角三角形,上面式子=|w|*|(X-X')|cos{w,(X-X')},w的模是1,所以就是|(X-X')|cos{w,(X-X')},在三角形中可以清晰看到求的是距离边。
如下结果:
2、决策方程
由于设:
因为w与平面垂直,所以所有的w*(X''-X')=0,所有都相等
所以距离改为:
所以决策方程为:
决策方式为:
距离化简为:
3、优化目标
这里对决策方程变换,使得结果值是>1:
,其实也是更加判断严格
优化目标就是使得距离最近的点最远:
这里先求极大后 求极小和上个式子结果一样。
由于咱们设置了
最小值为1,所以只要求出
4、解决办法,带约束的优化问题:
先求上式中的极小:
用拉格朗日乘子法:
这里加1/2是为了方便求导约分。
这里求出的是:
后求式中的极大:
还要求极大值:
步骤一样,进行求导。
eg:数据三个点
1、先列出求解公式和条件,要求下面式子中的和B:
1、先将原式进行带入例子,然后进行整理:
这里18是由(3,3)点乘(3,3)得到,25是由(4,3)点乘(4,3)得到。
带入约束条件进行化简:
2、这里就开始对上式中进行求偏导,偏导等于0,得到:
但不满足
所以解在边上:
第二个满足了。
3、再求b
然后得到:
总结:其实可以发现,真正发挥作用的点,只是那几个点,再多的点增加也没用,没用的点a值为0,只有有用的点a值是不为0.
为了解决分的过于严格,可以引入松弛因子:
得到新的目标函数:
这里当c很大时候,那分类会非常严格。
c很小的时候,可以更大的错误容忍。
有时候低维不可分,可以通过核变化映射到高纬。
这里要说明了,先点映射到高纬度再进行内积数据量非常大,可以先内积再进行高纬度变化,是一样的结果,所以使用核函数进行低维到高纬变换,是可以在一个低纬度空间,完成高纬度样本的内积计算的。