SVM
标签(空格分隔): ML
本文主要来源于台湾大学林轩田在Coursera的课程《机器学习技术》
1. 线性SVM
1.1 为什么要大的间隔——直觉
间隔越大能容忍越大的误差,越健壮:
线性分类转变为:
1.2 间隔的计算
向量映射:
1.3 解的形式转化
(1)w和b的Scale对解没有影响,选择特定Scale的w和b,对解的形式进行化简:
(2)对目标函数进行转换:避免根号的计算;求最大值问题,变为求最小值问题:
1.4 二次规划求解
对于带约束的解,只能用二次规划求解:
代入二次求解公式:
解:
1.5 为什么要大间隔——降低模型复杂度
(
zn=ϕ(xn)
,
ϕ
为特征转换函数)SVM的大间隔相当于在保证分类准确率的情况下,尽可能的正则化:
Aρ
:分类间隔必须大于等于
ρ
. 通过限制分类间隔,可以降低模型的VC维,即模型的复杂度降低:
大间隔可以降低模型复杂度;特征转换可以使分类边界比较复杂:
2. 对偶SVM
Solving non-linear Support Vector Machine
2.1 非线性SVM
进行非线性转换后,维度从
d
变为
2.2 对偶转换
对偶的目的在于将
d̃
-(b,w)维参数优化问题,转化为
N
-(
等价的拉格朗日形式(去除限制条件):
对偶形式:
强对偶性(现在不理解。。。。)
2.3 对偶形式的简化
通过对
b
求导数,令导数为0,求最小值;利用导数为0得到的式子,去除变量
通过对
w
求导数,令导数为0,求最小值;得到
KKT条件:原始问题和对偶问题的限制条件都满足,原始问题和对偶问题的内部变量的导数值均为0. 若一个变量满足KKT条件,则其为原始问题和对偶问题的最优解。
最终的对偶形式:
对于上述最终形式利用优化包,可求解到
求出
α
后,进一步求解
b
和
2.4 SVM隐藏的信息
非支持向量上的点,
α
为0;只有在支持向量上的点对
w
和
SVM与PLA(感知机)间的联系:
3. 核型SVM
核型SVM解决高维空间计算问题。
3.1 高维问题
d̃
可能非常大:
3.2 kernel
Inner Product可用转换前
d
复杂度,完成
Kernel = Transform + Inner Product:
Kernel SVM:所有的与高维
d̃
有关的计算都可以通过Kernel函数计算完成:
3.3 Polynomial Kernel
Poly-2 Kernel:
推广的多项式核:
线性核:
3.4 Gaussian Kernel
Gaussian Kernel可看作特征被转换到无限维:
一般性的Gaussian Kernel:
Gaussian Kernel SVM可以实现无限维的线性分隔,同时用最大间隔保持泛化能力:
Gaussian Kernel SVM的实际使用:
3.5. Comparison of Kernels
有效核的充分必要条件:对称和半正定
线性核:快速和易理解,但只能用于直线分隔
多项式核:可用于曲线分隔;但数值可能会很大,而且有3个参数,参数选取比较复杂
高斯核:很强大,可用于各种分隔;相比多项式核,数值在一定范围内,而且只有一个参数,易于调节
4. 软间隔SVM
4.1 引入软间隔-容忍误差
允许有一些例子被错分:
上述的形式,不能求导,也不能区分大的误差和小的误差;因此引入软间隔SVM:
4.2 软间隔SVM的求解(类似于硬间隔SVM)
拉格朗日对偶方程:
对
εn
求导,令导数为0求极值,消去
ε
和
β
;解的形式与硬间隔解的形似基本相同:
应用与硬间隔相同的求解方法,得到如下形式:
应用凸优化包进行求解:
b
的求解(注意
不同SV范围内的
an
,
εn
取值:
5. SMO算法
这部分内容,参考自李航的《统计学习方法》
5.0 SMO算法思路
要解决的问题:
思路:选择2个变量,固定其它变量,针对这2个变量构建一个二次规划问题
5.1 2个变量二次规划的求解方法
5.1.1 问题形式转变
5.1.2 变量的约束范围
-
y1≠y2
:
令 k=a1−a2=aold1−aold2
由 0≤a1=k+a2≤C 和 0≤a2≤C
可得: L=max(0,aold2−aold1) , H=min(C+aold2−aold1,C)
同理可得:
- y1=y2 : L=max(0,aold2+aold1−C) , H=min(aold2+aold1,C)
5.1.3 a2 的求解
没有约束条件下的求解:
W(a2)
为关于
a2
的2次函数,且
a2
的系数
k11+k22−2k12=|ϕ(x1)−ϕ(x2)|2≥0
, 所以
W(a2)
在导数为0的点取得最小值,且越接近该点,值越小。(这里的思路好像有问题。。。。。。)
对
a2
加上约束条件:
5.2 变量的选择方法
选择的2个变量,至少有一个变量是违反KKT条件的
5.2.1 第1个变量的选择
检验过程中怎样选择样本点,《统计学习方法》没有讲清楚;原文《Sequential Minimal Optimization - A Fast Algorithm for Training Support Vector Machines》是这样描述的:
- (1) 遍历整个训练集,找一个违反KKT条件的样本点
- (2) 遍历间隔边界(
0<ai<C
)上的样本点,找一个违反KKT条件的样本点
(1)和(2)构成一个寻找的循环,但对于每个循环,(2)会进行多次,直到所有间隔边界上的点都满足KKT才停止。
5.2.2 第2个变量的选择
- (1) anew2 依赖于 |E1−E2| , E1 已知,选择 a2 ,使其对应的 |E1−E2| 最大
- (2)如果以上方法选择的 a2 不能使目标函数的选择有足够的下降,那么遍历在间隔边界上的点,依次讲其对应的变量作为 a2 试用,直到目标函数有足够的下降。
- (3)找不到合适的 a2 ,遍历整个训练数据集
- (4)若仍找不到合适的 a2 ,则放弃第一个 a1 ,再通过外层循环找另外的 a1
5.2.3 更新
b
和Ei
5.3 算法流程