支持向量机
核心思想是间隔最大化
基本形式
假设划分超平面可以使用下述线性方程来描述:
[oldsymbol{w}^{mathrm{T}} oldsymbol{x}+b=0
]
则样本空间中的任一点到分隔超平面的距离为:
[r=frac{left|oldsymbol{w}^{mathrm{T}} oldsymbol{x}+b
ight|}{|oldsymbol{w}|}
]
如果超平面能正确分类,则有:
[left{egin{array}{ll}{oldsymbol{w}^{mathrm{T}} oldsymbol{x}_{i}+b geqslant+1,} & {y_{i}=+1} \ {oldsymbol{w}^{mathrm{T}} oldsymbol{x}_{i}+b leqslant-1,} & {y_{i}=-1}end{array}
ight.
]
两个异类支持向量到分界面的距离之和为:
[gamma=frac{2}{|oldsymbol{w}|}
]
所以想要找到最大间隔,就是下述优化函数:
[egin{array}{l}{max _{oldsymbol{w}, b} frac{2}{|oldsymbol{w}|}} \ { ext { s.t. } y_{i}left(oldsymbol{w}^{mathrm{T}} oldsymbol{x}_{i}+b
ight) geqslant 1, quad i=1,2, ldots, m}end{array}
]
可将上式重新写为:
[egin{array}{l}{min _{oldsymbol{w}, b} frac{1}{2}|oldsymbol{w}|^{2}} \ { ext { s.t. } y_{i}left(oldsymbol{w}^{mathrm{T}} oldsymbol{x}_{i}+b
ight) geqslant 1, quad i=1,2, ldots, m}end{array}
]
对偶问题
使用拉格朗日乘子法得到其对偶问题:
[L(oldsymbol{w}, b, oldsymbol{alpha})=frac{1}{2}|oldsymbol{w}|^{2}+sum_{i=1}^{m} alpha_{i}left(1-y_{i}left(oldsymbol{w}^{mathrm{T}} oldsymbol{x}_{i}+b
ight)
ight)
]
通过对 (w) 和 (alpha) 求偏导,得到新的优化函数:
[max _{oldsymbol{alpha}} sum_{i=1}^{m} alpha_{i}-frac{1}{2} sum_{i=1}^{m} sum_{j=1}^{m} alpha_{i} alpha_{j} y_{i} y_{j} oldsymbol{x}_{i}^{mathrm{T}} oldsymbol{x}_{j}
]
[egin{array}{l}{s.t. sum_{i=1}^{m} alpha_{i} y_{i}=0} \ {alpha_{i} geqslant 0, quad i=1,2, ldots, m}end{array}
]
通过求解 (alpha),求解 (w) 和 (b) 可以得出模型:
[egin{aligned} f(oldsymbol{x}) &=oldsymbol{w}^{mathrm{T}} oldsymbol{x}+b \ &=sum_{i=1}^{m} alpha_{i} y_{i} oldsymbol{x}_{i}^{mathrm{T}} oldsymbol{x}+b end{aligned}
]
上述过程需要满足 KKT 条件:
[left{egin{array}{l}{alpha_{i} geqslant 0} \ {y_{i} fleft(oldsymbol{x}_{i}
ight)-1 geqslant 0} \ {alpha_{i}left(y_{i} fleft(oldsymbol{x}_{i}
ight)-1
ight)=0}end{array}
ight.
]
可以看出对于任意样本 ((x_i,y_i)),均有 (alpha_i=0) 或者 (y_if(x_i)=1),当 (y_if(x_i)=1) 时,该样本为支持向量,最后模型只需要这些支持向量。
为什么需要对偶形式:
求解算法 SMO。
核函数
原始样本空间不可分,但是转化到高维可以线性可分。
令 (phi(x)) 表示 (x) 映射后的特征向量,于是模型可以表示为:
[f(oldsymbol{x})=oldsymbol{w}^{mathrm{T}} phi(oldsymbol{x})+b
]
有
[egin{array}{l}{min _{oldsymbol{w}, b} frac{1}{2}|oldsymbol{w}|^{2}} \ { ext { s.t. } quad y_{i}left(oldsymbol{w}^{mathrm{T}} phileft(oldsymbol{x}_{i}
ight)+b
ight) geqslant 1, quad i=1,2, ldots, m}end{array}
]
其对偶问题是
[max _{oldsymbol{alpha}} sum_{i=1}^{m} alpha_{i}-frac{1}{2} sum_{i=1}^{m} sum_{j=1}^{m} alpha_{i} alpha_{j} y_{i} y_{j} phileft(oldsymbol{x}_{i}
ight)^{mathrm{T}} phileft(oldsymbol{x}_{j}
ight) \
]
[egin{array}{l} {s.t. quad sum_{i=1}^{m} alpha_{i} y_{i}=0} \ {alpha_{i} geqslant 0, quad i=1,2, ldots, m}end{array}
]
由于特征空间维度很高,直接计算 (phileft(oldsymbol{x}_{i}
ight)^{mathrm{T}} phileft(oldsymbol{x}_{j}
ight)) 很困难,可以设想这样一个函数:
[kappaleft(oldsymbol{x}_{i}, oldsymbol{x}_{j}
ight)=leftlanglephileft(oldsymbol{x}_{i}
ight), phileft(oldsymbol{x}_{j}
ight)
ight
angle=phileft(oldsymbol{x}_{i}
ight)^{mathrm{T}} phileft(oldsymbol{x}_{j}
ight)
]
即 (x_i) 和 (x_j) 在特征空间的内积等于在原始空间中的通过函数 (kappa(x_i,x_j)) 的内积。
软间隔和正则化
当样本线性不可分时,需要对约束进行放缩,即允许部分样本不满足约束:
[y_{i}left(oldsymbol{w}^{mathrm{T}} oldsymbol{x}_{i}+b
ight) geqslant 1
]
此时,优化目标写为:
[min _{oldsymbol{w}, b} frac{1}{2}|oldsymbol{w}|^{2}+C sum_{i=1}^{m} ell_{0 / 1}left(y_{i}left(oldsymbol{w}^{mathrm{T}} oldsymbol{x}_{i}+b
ight)-1
ight)
]
其中 (C>0) 时常数,(l_0) 是0/1损失函数:
[ell_{0 / 1}(z)=left{egin{array}{ll}{1,} & { ext { if } z<0} \ {0,} & { ext { otherwise }}end{array}
ight.
]
(l_0)非凸、非连续,不易求解。使用替代函数:
- hinge 损失: (quad ell_{hinge}(z)=max(0,1-z))
- 指数损失(expontential loss):(quad ell_{exp(z)}=exp(-z))
- 对数损失(logistic loss):(quad ell_{log}(z)=log(1+exp(-z)))
三种函数对比图:
若采用 hinge loss 替代,则函数变为:
[min _{oldsymbol{w}, b} frac{1}{2}|oldsymbol{w}|^{2}+C sum_{i=1}^{m} max left(0,1-y_{i}left(oldsymbol{w}^{mathrm{T}} oldsymbol{x}_{i}+b
ight)
ight)
]
共性模型:
优化目标中的第一项用来描述划分超平面的间隔大小,另一项 (sum_{i=1}^{m} ellleft(fleft(oldsymbol{x}_{i}
ight), y_{i}
ight))用来描述在训练集上的误差大小,可写为:
[min _{f} Omega(f)+C sum_{i=1}^{m} ellleft(fleft(oldsymbol{x}_{i}
ight), y_{i}
ight)
]
其中第一项为结构误差,用来描述模型的性质;第二项为经验风险,描述模型与训练集的契合程度。
支持向量回归 (SVR)
相当于以 (f(x)) 为中心,构建了一个宽度为 (2epsilon) 的间隔带,若训练样本落入此区间,总被认为是正确的。于是SVR问题可以写成:
[min _{w, b} frac{1}{2}|w|^{2}+C sum_{i=1}^{m} ell_{c}left(fleft(x_{i}
ight)-y_{i}
ight)
]
其中 (ell_{epsilon}) 为不敏感损失函数:
[ell_{epsilon}(z)=left{egin{array}{ll}{0,} & { ext { if }|z| leqslant epsilon} \ {|z|-epsilon,} & { ext { otherwise }}end{array}
ight.
]
问题
一个例子
将线性判别分析进行非线性拓展
线性判别分析的核心思想是,将数据投影到一条直线上,使得同类投影点尽可能接近,使得异类样本点尽可能远。
符号:
数据集 (D={(x_i,y_i)}_{i=1}^m,y_iin{0,1}),令 (X_i,mu_i,Sigma_i)代表第(i)类的集合、均值向量和协方差矩阵。
优化目标为最大化 (J):
[egin{aligned} J &=frac{left|oldsymbol{w}^{mathrm{T}} oldsymbol{mu}_{0}-oldsymbol{w}^{mathrm{T}} oldsymbol{mu}_{1}
ight|_{2}^{2}}{oldsymbol{w}^{mathrm{T}} oldsymbol{Sigma}_{0} oldsymbol{w}+oldsymbol{w}^{mathrm{T}} oldsymbol{Sigma}_{1} oldsymbol{w}} \ &=frac{oldsymbol{w}^{mathrm{T}}left(oldsymbol{mu}_{0}-oldsymbol{mu}_{1}
ight)left(oldsymbol{mu}_{0}-oldsymbol{mu}_{1}
ight)^{mathrm{T}} oldsymbol{w}}{oldsymbol{w}^{mathrm{T}}left(oldsymbol{Sigma}_{0}+oldsymbol{Sigma}_{1}
ight) oldsymbol{w}} end{aligned}
]
定义类内散度
[egin{aligned} mathbf{S}_{w} &=mathbf{Sigma}_{0}+mathbf{Sigma}_{1} \ &=sum_{oldsymbol{x} in X_{0}}left(oldsymbol{x}-oldsymbol{mu}_{0}
ight)left(oldsymbol{x}-oldsymbol{mu}_{0}
ight)^{mathrm{T}}+sum_{oldsymbol{x} in X_{1}}left(oldsymbol{x}-oldsymbol{mu}_{1}
ight)left(oldsymbol{x}-oldsymbol{mu}_{1}
ight)^{mathrm{T}} end{aligned}
]
类间散度
[mathbf{S}_{b}=left(oldsymbol{mu}_{0}-oldsymbol{mu}_{1}
ight)left(oldsymbol{mu}_{0}-oldsymbol{mu}_{1}
ight)^{mathrm{T}}
]
则优化函数可以重新写成
[J=frac{oldsymbol{w}^{mathrm{T}} mathbf{S}_{b} oldsymbol{w}}{oldsymbol{w}^{mathrm{T}} mathbf{S}_{w} oldsymbol{w}}
]
假设,我们使用某种映射将样本先映射到一个样本空间,然后执行线性判别分析:
[h(oldsymbol{x})=oldsymbol{w}^{mathrm{T}} phi(oldsymbol{x})
]
学习目标是
[max _{oldsymbol{w}} J(oldsymbol{w})=frac{oldsymbol{w}^{mathrm{T}} mathbf{S}_{b}^{phi} oldsymbol{w}}{oldsymbol{w}^{mathrm{T}} mathbf{S}_{w}^{phi} oldsymbol{w}}
]
于是有
[egin{aligned} hat{oldsymbol{mu}}_{0} &=frac{1}{m_{0}} mathbf{K} mathbf{1}_{0} \ hat{oldsymbol{mu}}_{1} &=frac{1}{m_{1}} mathbf{K} mathbf{1}_{1} \ mathbf{M} &=left(hat{oldsymbol{mu}}_{0}-hat{oldsymbol{mu}}_{1}
ight)left(hat{oldsymbol{mu}}_{0}-hat{oldsymbol{mu}}_{1}
ight)^{mathrm{T}} \
mathbf{N}&=mathbf{K} mathbf{K}^{mathrm{T}}-sum_{i=0}^{1} m_{i} hat{oldsymbol{mu}}_{i} hat{oldsymbol{mu}}_{i}^{mathrm{T}}
end{aligned}
]
可得
[max _{oldsymbol{alpha}} J(oldsymbol{alpha})=frac{oldsymbol{alpha}^{mathrm{T}} mathbf{M} oldsymbol{alpha}}{oldsymbol{alpha}^{mathrm{T}} mathbf{N} oldsymbol{alpha}}
]
硬间隔最大化
软间隔最大化: 加了惩罚因子