1.SVM(Support Vector Machine)简述
主要思想是先让样本到分离超平面的距离最近,称这些点为支持向量,然后让这些支持向量到超平面的距离最大。也称这些支持向量为难分点,所以让这些点离超平面距离最大就代表了全体所有点都会分的不错。
ps:线性可分支持向量机,适用于无噪声异常点的数据,学习目标为硬间隔最大化。
ps:线性支持向量机,适用于有噪声,有异常值的数据,学习目标为软间隔最大化。
ps:非线性支持向量机,使用核技巧处理,改变模型(x向量变为核函数),学习目标为软间隔最大化。
线性向量机分为带松弛因子和不带,而非线性向量机通过核技巧来通过构造高维度的特征来增强模型的表达能力。
2.线性可分支持向量机推导
模型:
ps:接下来需要通过最优化目标函数,来求解最优的解W*,b*。
目标函数:
ps:通过yi(+1 or -1)来去掉点到线距离公式的绝对值符号。
ps:在这里分析怎样最小化,通过对此式子等比例的放缩我一定可以让支撑向量到超平面的距离大于等于1,然后min=1。
接下来问题转化为最优化下式:
------------>
ps:引入拉格朗日乘子进行求解。
拉格朗日函数:
分别对W和b求偏导,
ps:转换为对偶问题。
在带入拉格朗日函数,即函数只剩下关于a的函数:
ps:只要满足KKT条件即可,此函数就可以转化为原函数的对偶问题,只需要求最大值即可。
ps:求导项等于0,等式约束项等于0,不等式约束乘上乘子等于0,对应的乘子大于等于0,不等式约束项小于等于0。
设a* = (a*1,a*2,.....,a*n)T为对偶问题的最优解,那么一定存在下标j使aj>0。且当要满足KKT条件原问题的第三项 要为0,那么就有:
要注意:
,给式子乘y,最后可得:
ps:因为a如果为零那么W参数就为零,而且乘子是大于等于零的。
而且:
,ai = a*。
ps:这下两个参量W和b就都求解出来了。
然后优化对偶问题即可解出参数:(SMO算法)
他的思想就是每次依据一定规则选取两个乘子,固定其他乘子,每次都会循环这样做都会更新两个乘子直到收敛。
ps:乘子的选取,会先选一个违反KKT条件的乘子,如果第一个乘子的优化可以使第二个乘子变化很大那么就选取。
ps:这样通过反复的迭代优化可以求解出参数W和b。
3.线性支持向量机
其实,实际中数据大多有噪声和一些异常点,原来的思路可能算法会一直匹配异常点,可能会导致过拟合,要解决这一问题,就引出了软间隔最大化,主要思路就是给每个样本增加一个松弛因子,在支付一个代价(惩罚参数)进行制约。
目标函数从原来变为:
然后处理思路跟线性可分支持向量机一样,要注意在对偶问题中a因子有上界了,就是C(闭区间)。
4.非线性支持向量机与核技巧
对于线性不可分问题,主要处理是可以将原空间特征(低维度)映射到一个新的特征空间(高维度),在新的特征空间就可以按照线性支持向量机那样,继续处理该问题了。
核技巧:
通过定义一个核函数,进行数学变换,将该函数进行展开发现可以达到提升维度。那么就可以用这个核函数进行近似新的特征空间里的计算,不用显示的定义和求解出该空间,而是通过这个核函数进行等价,这就是核技巧。
ps:从根本上来说,核技巧就是通过升高纬度对特征进行高层次的组合最终来提升效果的。
一般的核函数有:
ps:多项式核函数,只与参数的内积有关。
ps:高斯核函数,里面的超参数是准确度(等价方差分之一),值越大,越准确,映射的维度可达到无线维度。
ps:Sigmoid核函数:双曲正切函数(-1,1)与sigmoid(-1,1)是线性近似关系。