文章目录
昨天整理了一下聚类算法的笔记----------各种聚类算法总结
今天整理一下同为分类的另一个算法(有监督):
支持向量机(Support Vector Machine)
距离计算
分类都绕不开一个问题就是样本间距离的计算,看下面这张图。
显然右边分隔线的间距更大,更加有容错率。
如何计算距离?
下图是一张三维图。
假设样本点为,灰色的纸面是分割面,类似于上面的二维图中的分割线。
如何求样本点 到风格面的距离呢?显然可以直接垂直求点到面的距离dist。不过这样较为复杂,可以先求到点
参考公式:
法向量除以自身的模=单位方向向量
将式子展开, 有
- 因为都是平面上的点,故有:
- . 。记为(3)式
- 将(3)式代入(1)式中,最终得到:
优化目标
再来看一下刚开始的那张图
要达到右边的目的,用一句话描述:我们要找到一条线,使得离该线最近的点距离最远!!
上面那句话多读两遍,配合图看,理解清楚,这就是最终要最到的目的。
现在假设一个数据集来推出最后的目标优化公式:
(X1,Y1),(X2,Y2)…
Y为样本类别 X为正例时Y = 1 反之为 Y = -1。
既:
这样操作过后就可以去掉一开始距离公式中的绝对值了。将公式化简得到:
得到优化目标公式:
再把上面那句话贴过来,
我们要找到一条线,使得离该线最近的点距离最远!
min那里一大串都是等于>=1的(放缩,令其>=1),最小值就是1了,所以满足条件下最终考虑目标优化公式:
既求
化简模向量 =
拉格朗日乘子法
拉格朗日乘子法求 :求带约束条件下的极值问题。
这里的约束条件就是上面求优化目标的时候 ,放缩过程令那min那块>=1 的那一部分:就是下面这一块
约束条件
求解过程基本思路就是,引入了一个新的变量设为a,找到a和原始要求的w与b之间的关系,然后将a替换掉原始式子中的w和b,并求出a,再将wb代回。
原子转换公式:
代入:
其中i代表数据中的每一个样本。
对目标参数w和b求偏导,看到这有一个KKT的问题,我尝试看了看没看懂,劝退了。
软间隔(soft-margin)
看下面这张图。
左边有60个数据样本,右边有120个数据样本,但是分割线却没发生改变。
说明真正发挥作用的数据点是距离分割线最近的那几个点。
也印证了为啥叫支持向量机。起到支撑 支持构建中间的分割向量的数据的点。
在看下面这张图,
显然有一个异常点(离群点),如果考虑该异常点,则导致分割线不是那么好,如果不考虑就是图中的虚线,这个虚线是比较好的。所以有了软间隔。
加入软间隔的目的就是希望模型别太受到异常点(噪音)的影响。
所以引入了一个叫松弛因子的东西,给分割线一些容忍度。
就有了加入松弛因子之后的目标参数:
A上面说过了,B部分就是引入的松弛因子。
其中C参数越小,意味着有越大的容忍度。
核函数
前面得到了一个目标优化公式,就是下面这个:
这里面有一个参数,就是 Φ参数(核函数)。
看下面这个图,如果在二维平面上分开红蓝点,所描绘出来的分割线是比较难的(过拟合、复杂计算量),于是通过了 Φ 将他变成了三维上,用一张纸(平面)就分开了。
高斯核函数(应用最广泛,可无脑用):
是一个非线性决策边界。
式子展开就是泰勒基数。无限逼近嘛,所以这里面有个调参 就分母上的那个西格玛,调的越大,就越复杂,过拟合风险越高。
学习参考
KKT对偶问题:https://www.stat.cmu.edu/~ryantibs/convexopt/lectures/kkt.pdf
拉格朗日乘子法