文章目录

昨天整理了一下聚类算法的笔记----------各种聚类算法总结

今天整理一下同为分类的另一个算法(有监督):
支持向量机(Support Vector Machine)

距离计算

分类都绕不开一个问题就是样本间距离的计算,看下面这张图。

机器学习算法----支持向量机SVM (软间隔、核函数、拉格朗日乘子法) (学习笔记)_数据


显然右边分隔线的间距更大,更加有容错率。

如何计算距离?

下图是一张三维图。

假设样本点为机器学习算法----支持向量机SVM (软间隔、核函数、拉格朗日乘子法) (学习笔记)_核函数_02,灰色的纸面是分割面,类似于上面的二维图中的分割线。机器学习算法----支持向量机SVM (软间隔、核函数、拉格朗日乘子法) (学习笔记)_分割线_03 机器学习算法----支持向量机SVM (软间隔、核函数、拉格朗日乘子法) (学习笔记)_数据_04

如何求样本点机器学习算法----支持向量机SVM (软间隔、核函数、拉格朗日乘子法) (学习笔记)_核函数_02 到风格面的距离呢?显然可以直接垂直求点到面的距离dist。不过这样较为复杂,可以先求机器学习算法----支持向量机SVM (软间隔、核函数、拉格朗日乘子法) (学习笔记)_核函数_02到点机器学习算法----支持向量机SVM (软间隔、核函数、拉格朗日乘子法) (学习笔记)_分割线_03

机器学习算法----支持向量机SVM (软间隔、核函数、拉格朗日乘子法) (学习笔记)_机器学习_08


参考公式:

机器学习算法----支持向量机SVM (软间隔、核函数、拉格朗日乘子法) (学习笔记)_核函数_09

法向量除以自身的模=单位方向向量

将式子展开, 有

  • 机器学习算法----支持向量机SVM (软间隔、核函数、拉格朗日乘子法) (学习笔记)_数据_10
  • 因为机器学习算法----支持向量机SVM (软间隔、核函数、拉格朗日乘子法) (学习笔记)_数据_11机器学习算法----支持向量机SVM (软间隔、核函数、拉格朗日乘子法) (学习笔记)_核函数_12都是平面上的点,故有:
  • 机器学习算法----支持向量机SVM (软间隔、核函数、拉格朗日乘子法) (学习笔记)_分割线_13
  • 机器学习算法----支持向量机SVM (软间隔、核函数、拉格朗日乘子法) (学习笔记)_数据_14. 。记为(3)式
  • 将(3)式代入(1)式中,最终得到:机器学习算法----支持向量机SVM (软间隔、核函数、拉格朗日乘子法) (学习笔记)_核函数_15

优化目标

再来看一下刚开始的那张图

机器学习算法----支持向量机SVM (软间隔、核函数、拉格朗日乘子法) (学习笔记)_数据_16


要达到右边的目的,用一句话描述:我们要找到一条线,使得离该线最近的点距离最远!!

上面那句话多读两遍,配合图看,理解清楚,这就是最终要最到的目的。

现在假设一个数据集来推出最后的目标优化公式:
(X1,Y1),(X2,Y2)…

Y为样本类别 X为正例时Y = 1 反之为 Y = -1。

既:

机器学习算法----支持向量机SVM (软间隔、核函数、拉格朗日乘子法) (学习笔记)_数据_17


这样操作过后就可以去掉一开始距离公式中的绝对值了。将公式化简得到:

机器学习算法----支持向量机SVM (软间隔、核函数、拉格朗日乘子法) (学习笔记)_人工智能_18

得到优化目标公式:

再把上面那句话贴过来,

我们要找到一条线,使得离该线最近的点距离最远!

机器学习算法----支持向量机SVM (软间隔、核函数、拉格朗日乘子法) (学习笔记)_核函数_19

min那里一大串都是等于>=1的(放缩,令其>=1),最小值就是1了,所以满足条件下最终考虑目标优化公式:

  • 机器学习算法----支持向量机SVM (软间隔、核函数、拉格朗日乘子法) (学习笔记)_数据_20

既求 机器学习算法----支持向量机SVM (软间隔、核函数、拉格朗日乘子法) (学习笔记)_分割线_21

化简模向量 机器学习算法----支持向量机SVM (软间隔、核函数、拉格朗日乘子法) (学习笔记)_分割线_21 = 机器学习算法----支持向量机SVM (软间隔、核函数、拉格朗日乘子法) (学习笔记)_人工智能_23

拉格朗日乘子法

拉格朗日乘子法求 :求带约束条件下的极值问题。

这里的约束条件就是上面求优化目标的时候 ,放缩过程令那min那块>=1 的那一部分:就是下面这一块

约束条件

机器学习算法----支持向量机SVM (软间隔、核函数、拉格朗日乘子法) (学习笔记)_数据_24

求解过程基本思路就是,引入了一个新的变量设为a,找到a和原始要求的w与b之间的关系,然后将a替换掉原始式子中的w和b,并求出a,再将wb代回。

原子转换公式:

机器学习算法----支持向量机SVM (软间隔、核函数、拉格朗日乘子法) (学习笔记)_数据_25


代入:

其中i代表数据中的每一个样本。

机器学习算法----支持向量机SVM (软间隔、核函数、拉格朗日乘子法) (学习笔记)_人工智能_26

对目标参数w和b求偏导,看到这有一个KKT的问题,我尝试看了看没看懂,劝退了。

​关于KKT对偶问题​

软间隔(soft-margin)

看下面这张图。
左边有60个数据样本,右边有120个数据样本,但是分割线却没发生改变。

说明真正发挥作用的数据点是距离分割线最近的那几个点。

也印证了为啥叫支持向量机。起到支撑 支持构建中间的分割向量的数据的点。

机器学习算法----支持向量机SVM (软间隔、核函数、拉格朗日乘子法) (学习笔记)_数据_27


在看下面这张图,

显然有一个异常点(离群点),如果考虑该异常点,则导致分割线不是那么好,如果不考虑就是图中的虚线,这个虚线是比较好的。所以有了软间隔。

机器学习算法----支持向量机SVM (软间隔、核函数、拉格朗日乘子法) (学习笔记)_机器学习_28

加入软间隔的目的就是希望模型别太受到异常点(噪音)的影响。
所以引入了一个叫松弛因子的东西,给分割线一些容忍度。

就有了加入松弛因子之后的目标参数:
A上面说过了,B部分就是引入的松弛因子。

其中C参数越小,意味着有越大的容忍度。

机器学习算法----支持向量机SVM (软间隔、核函数、拉格朗日乘子法) (学习笔记)_机器学习_29

核函数

前面得到了一个目标优化公式,就是下面这个:

机器学习算法----支持向量机SVM (软间隔、核函数、拉格朗日乘子法) (学习笔记)_分割线_30

这里面有一个参数,就是 Φ参数(核函数)。
看下面这个图,如果在二维平面上分开红蓝点,所描绘出来的分割线是比较难的(过拟合、复杂计算量),于是通过了 Φ 将他变成了三维上,用一张纸(平面)就分开了。

机器学习算法----支持向量机SVM (软间隔、核函数、拉格朗日乘子法) (学习笔记)_核函数_31

高斯核函数(应用最广泛,可无脑用):
是一个非线性决策边界。

机器学习算法----支持向量机SVM (软间隔、核函数、拉格朗日乘子法) (学习笔记)_人工智能_32


式子展开就是泰勒基数。无限逼近嘛,所以这里面有个调参 就分母上的那个西格玛,调的越大,就越复杂,过拟合风险越高。

学习参考

KKT对偶问题:​​https://www.stat.cmu.edu/~ryantibs/convexopt/lectures/kkt.pdf​

拉格朗日乘子法​