Spark推荐系统,干货,心得
点击上方蓝字关注~
上一章节学习了支持向量机的预备知识,本章主要通过硬间隔(SVM其中一种类型)来学习支持向量机SVM原理。
支持向量机是用于解决二分类问题的分类算法,同样多个svm模型也可以解决多分类问题
目录
支持向量机分类
确定分割超平面
点到超平面距离公式
确定损失函数
求最优解
总结
支持向量机分类
1、线性可分支持向量机
硬间隔最大化
2、线性支持向量机
软间隔最大化
3、非线性支持向量机
核函数(升维)
假设给定一个特征空间上的数据集
{(x1,y1),(x2,y2),(x3,y3)....(xn,yn)}其中
x1表示第一条样本的特征,y1表示第一条样本的label
正例:+1 负例:-1
确定分割超平面
svm模型的判别表示式为
sign函数解释: y =sign(x) 若x>0,则y=1 若x<0,则y=-1 ,若x=0,则y=0
性质:不能概率化输出
本质上是高维空间中找到一个超平面,使其分隔效果最好
那么对于线性可分问题,有无数个超平面可供选择,如何定义最好的超平面?
从直观上可以看出第三个超平面最好
why?
假设未来拿到的数据含有一部分噪声,那么不同的线对于噪声的容忍度是不同的最右面的线是最robust(鲁棒性),因为离最近的点越远越好。
或者说找到最胖的超平面
所以需要找到一个超平面:
1.能够完美分类正负例
2.距离最近的点越远越好 -> 硬间隔越大越好
那么超平面怎么确定:
距离公式
目标:能正确分类的平面中,距离超平面最近的点越远越好
margin =min( distance((Xi,Yi),wx+b) )
如何计算任意(xi,yi)到某平面w的距离
二维平面中点(xi,yi)到直线ax+by+c=0的距离为:
高维空间中任意一个点X0其标签为y0,到某超平面的距离
称上式这个距离公式为某点到平面的几何距离
确定loss损失函数
找到一组最好的w和b固定一个超平面,使这个超平面在能完美区分正负例的基础上,且距离最近的点间隔最大
转换为有约束的函数最优化问题就是
令γ’= 1 则原最优化问题变为(如下loss损失函数,且存在m个不等式约束条件)
约束条件表示:其他点到超平面的距离均大于支持向量到超平面的距离
再详细的推导一遍怎么通过最近点的最大间隔,确定loss损失并进行化简
进行如下化简
求最优解
整理对偶函数
通常使用SMO算法进行求解,可以求得一组a(m个a)使得函数最优;
(由于SMO算法只用于求解该对偶函数的a,在机器学习中不常用,也较为复杂。暂没有详细去了解)
b的求解过程:
对于任意支撑向量(xs,ys代表支撑向量)到分隔超平面距离为单位距离1,代入到距离公式得到
那么如何找到支撑向量?根据KKT条件
在m个a中,若a>0,则得到
这时候的xi 和yi 就是支撑向量。有了支持向量(1个或多个)和支持向量到分隔超平面的距离为1就可以求解b(如果是多个支撑向量,对所有的b取平均值)
总结(硬间隔SVM)
图书推荐:
推荐阅读:
机器学习-线性回归(一)
机器学习|梯度下降法
机器学习|逻辑回归
长按识别二维码关注我