支持向量机(Support Vector Machine)
-
要解决的问题:什么样的决策边界才是最好的?
-
特征数据本身如果很难分,怎么办?
-
计算的复杂度怎么样?能实际应用吗?
-
目标:基于上述问题对SVM进行推导
![机器学习之支持向量机算法(五) 机器学习之支持向量机算法(五)](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzMzNy8xZWFjNTAzODg5ODFhY2ZmMTFhZWQ4ZWJjYTE2Zjg4OS5wbmc=)
三条线都能够做分类,但是那一条线最好呢?
-
决策边界:选出来离雷区最远的(雷区就是边界上的点,要large margin)
![机器学习之支持向量机算法(五) 机器学习之支持向量机算法(五)](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzg2OC85NmM2OTdmNTViZTg3ODQ1ZmU4YmRmMzVjMTk2OTQ4NC5wbmc=)
数学推导过程:
![机器学习之支持向量机算法(五) 机器学习之支持向量机算法(五)](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzcyMy9hNmZkYTliODE5ZmYxOTRjNjIwNGQ4MWZiODM5YjUxMy5wbmc=)
![机器学习之支持向量机算法(五) 机器学习之支持向量机算法(五)](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzE0L2I2ODg1ZTUzNTdkOGVhNDgyNTYxZmFlM2EzOTBjNjVlLnBuZw==)
这里我们假设x1 、 x2 为所求平面(wTx=−b)上的两个点 ,满足上面的(1)式,其中w为垂直于平面的法向量,由于w垂直于平面,所以w垂直于平面的任意一条直线,所以有(2)式,x 为平面外面的一点,到平面的距离等于xx1 在法向量上的投影。
基于以上的式子,这里给出距离的方程:
![机器学习之支持向量机算法(五) 机器学习之支持向量机算法(五)](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzQ1Mi9lNjNjZGNlNmNlZGQ3MzAxNTY5M2FiNzRhODk2NjQ0Yy5wbmc=)
而对于我们的数据集标签有如下的定义:
-
数据集:(x1,y1) (x2,y2) (x3,y3)
-
Y 为样本的类别: 当X 为正例的时候,Y =+1 当X 为负例的时候 Y=-1
-
决策方程: y(x)=wTΦ(x)+b (其中Φ(x) 是对数据做了变换)
=>y(xi)>0⇔yi=+1y(xi)<0⇔yi=−1
=>yiy(xi)>0
优化目标
通俗的解释:找到一条线(w,b),使得离该线最近的点能够最远
将点到直线的距离化简得:∥w∥yi⋅(wT⋅Φ(xi)+b) ,这里是由(3)式推导。
-
目标函数:
-
放缩变换:对于决策方程(3),可以通过放缩使得其结果值>=1,
即yi⋅(wT⋅Φ(xi)+b)>=1
-
优化的目标: argmaxw,b⟨∥w∥1mini(yi⋅(wT⋅Φ(xi)+b)) ,由于 yi⋅(wT⋅Φ(xi)+b)⩾1 ,只需要考虑 argmaxw,bw1 , 这就是我们的目标函数
-
目标函数的求解:
- 当前目标:maxw,b∥w∥1 ,约束条件为:yi⋅(wT⋅Φ(xi)+b)⩾1
- 将上面的求极大值问题转换为求极小值问题 => minw,b21w2
- 如何求解:应用拉格朗日乘子法求解
-
拉格朗日乘子法
拉格朗日乘子法是经典的求解最小值的数学方法,更多原理可以进入上面的链接
根据上述原理,我们的目标函数可以转化成:
L(w,b,α)=21w2−i=1∑nαi(yi(wT⋅Φ(xi)+b)−1)
对于上式的约束条件为: yi⋅(wT⋅Φ(xi)+b)⩾1
函数的对偶性和凸优化可以查找一下资料
对w求偏导:φwφL=0⇒w=∑i=1nαiyiΦ(xn)
对b求偏导:φbφL=0⇒0=∑i=1nαiyi
将上面两个式子代入原函数中:
=i=1∑nαi−21i=1∑mj=1∑nαiαjyiyj(Φ(xi)⋅Φ(xj))
继续对α 求极大值:maxα(上式) ,条件为:αi>0 且 0=∑i=1nαiyi
![机器学习之支持向量机算法(五) 机器学习之支持向量机算法(五)](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzY5My8yZDY3OGVkNDQ0MWQyMzc3ZWNiZGViNzg2ODVmNmZmNS5wbmc=)
所以这边就解释了什么是支持向量,即为α 不为0 的边界点,如x1 x3 只有边界点起作用。
soft-margin
软间隔:对于有一些数据,存在一些噪声点,如果考虑他们,画出来的决策边界就不太好了
之前的方法要求把两类点完全分开,比较严格,实际上得到的模型可能不太好,不是我们想要的。
为了解决该问题,引入松弛因子:$y_i(w\cdot x_i) \ge 1-\xi $
新的目标函数:min21∥w∥2+C∑i=1nξi
当C趋近于很大时:意味着分类严格不能有错误
当C趋近于很小时:意味着可以有更大的错误容忍
![机器学习之支持向量机算法(五) 机器学习之支持向量机算法(五)](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzIwNi9hNGI5MDUyNTIyNWFhMGY2YjZjNmRkODg3ZmI1ZGM0Ni5wbmc=)
低维不可分
![机器学习之支持向量机算法(五) 机器学习之支持向量机算法(五)](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzEwMi82OGViMjRmZWFjZGFiYmJlYWU1YTdmYzkyZDlhMTRiZS5wbmc=)
将二维空间映射到高维的空间中
其中这个函数有很多中,主要是高斯核函数
![机器学习之支持向量机算法(五) 机器学习之支持向量机算法(五)](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzIzMy9iODVlMGVjZmE3ZmI4M2UyNzdiNjg1M2NlOTg2YTY4OS5wbmc=)
但是这里存在着一个问题,将一个低维的空间映射到高维的空间会增加计算量。该怎么办?实际上这里存在着一个数学上的巧合。
![机器学习之支持向量机算法(五) 机器学习之支持向量机算法(五)](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzkxNy9kZDdmMzNmYWE2ZmU1YzI3NTVhYjMwN2YzZmQzNzY0NS5wbmc=)
在计算的过程中,是将计算的结果在低纬度上先计算好,理论是在高维度,实际上计算还是低维度上面做的。
所有的努力都值得期许,每一份梦想都应该灌溉!