支持向量机(Support Vector Machine)
要解决的问题:什么样的决策边界才是最好的呢?
决策边界:选出来离雷区最远的(雷区就是边界上的点,要Large Margin)
距离的计算
数据标签定义
数据集:(X1,Y1)(X2,Y2)...(Xn,Yn)
Y为样本的类别:当X为正例时候Y = +1,当X为负例时候Y = -1
决策方程:
(其中Φ(x)是对数据做了变换)
优化的目标
通俗解释:找到一个条线(w和b),使得离该先最近的点(雷区)能够最远
将点到直线的距离化简得:
(由于yi • y(xi) > 0所以将绝对值展开,原式依旧成立)
目标函数
放缩变换:对于决策方程(w , b)可以通过放缩使得其结果值|Y|>=1
(之前我们认为恒大于0,现在严格了些)
优化目标:
由于
只需要考虑
当前目标:
,约束条件:
常规套路:
将求解极大值问题转换为极小值问题
求解方法:应用拉格朗日乘子法求解
拉格朗日乘子法
带约束的优化问题:
原始转换:
我们的式子:
(约束条件:)
SVM求解
分别对w和b求偏导,分别得到两个条件(由于对偶性质)
对w求偏导:
对b求偏导:
带入原式:
==>完成了第一步求解
继续对α求极大值:
条件:
极大值转换成求极小值:
条件:
SVM求解实例
支持向量:真正发挥作用的数据点,α值不为0的点
软间隔(soft-margin)
软间隔:有时候数据中有一些噪音点,如果考虑他们的话,线就不太好了
之前的方法要求要把两类点完全分得开,这个要求有点过于严格了
为了解决该问题,引入松弛因子
新的目标函数:
当C趋近于很大时:意味着分类严格不能有错误
当C趋近于很小时:意味着可以有更大的错误容忍
C是我们需要指定的一个参数!
拉格朗日乘子法:
低维不可分问题
核变换:既然低维的时候不可分,那我给她映射到高维呢?
目标:找到一种变换的方法,也就是Φ(X)
高斯核函数: