2018年8月版本
Week 7
大间距分类 Large Margin Classification
优化目标 Optimization Objective
- 支持向量机(Support Vector Machine,SVM):在拟合复杂非线性函数问题上表现比较出众
- SVM优化目标函数: min θ C ∑ i = 1 m y ( i ) c o s t 1 ( θ T x ( i ) ) + ( 1 − y ( i ) ) c o s t 0 ( θ T x ( i ) ) + 1 2 ∑ j = 1 n θ j 2 \min\limits_{\theta}C\sum\limits_{i=1}^{m}y^{(i)}cost_1(\theta^Tx^{(i)})+(1-y^{(i)})cost_0(\theta^Tx^{(i)})+\frac{1}{2}\sum\limits_{j=1}^{n}\theta_j^2 θminCi=1∑my(i)cost1(θTx(i))+(1−y(i))cost0(θTx(i))+21j=1∑nθj2,两个cost函数分别对应y取1和0是的代价函数取值
大间距 Large Margin
-
SVM的一个性质,我们不仅希望能够大致进行分类,我们还希望能够更加精确的分类,因此上图中的1和-1实际上是一个“安全因子”
-
我们希望:
- 任何时候,当 y ( i ) = 1 y^{(i)}=1 y(i)=1,应当有 θ T x ( i ) ≥ 1 \theta^Tx^{(i)} \ge 1 θTx(i)≥1
- 任何时候,当 y ( i ) = 0 y^{(i)}=0 y(i)=0,应当有 θ T x ( i ) ≤ − 1 \theta^Tx^{(i)} \le -1 θTx(i)≤−1
-
大间距:分类边界与样本有更大(最优解应当是最大)的最短距离
-
假设C非常大,那么上面的代价函数的第一项就会被迫接近于0,因此后一项决定了结果(产生了线性可分内容),但在这种情况下,异常点会更容易影响分类结果
-
因此,SVM又被称为大间距分类器
-
C和正则化系数的作用相似,可以控制分类结果对数据的拟合效果,二者的关系大致为 C = 1 λ C=\frac{1}{\lambda} C=λ1
核函数 Kernels
-
针对非线性分类的情形,使用 θ 0 + θ 1 f 1 + θ 2 f 2 + … ≥ 0 \theta_0+\theta_1f_1+\theta_2f_2+\ldots \ge 0 θ0+θ1f1+θ2f2+…≥0的线性表示,其中的f表示成由特征x组成的内容,将非线性问题尝试转换成线性问题
-
一种特征取法:根据给定的x,依据其与标记 l ( 1 ) , l ( 2 ) , l ( 3 ) l^{(1)},l^{(2)},l^{(3)} l(1),l(2),l(3)的相似度计算新的特征
- f 1 = s i m i l i a r i t y ( x , l ( 1 ) ) = exp ( − ∣ ∣ x − l ( 1 ) ∣ ∣ 2 σ 2 ) f_1=similiarity(x,l^{(1)})=\exp(-\frac{||x-l^{(1)}||}{2\sigma^2}) f1=similiarity(x,l(1))=exp(−2σ2∣∣x−l(1)∣∣)
- f 2 = s i m i l i a r i t y ( x , l ( 2 ) ) = exp ( − ∣ ∣ x − l ( 2 ) ∣ ∣ 2 σ 2 ) f_2=similiarity(x,l^{(2)})=\exp(-\frac{||x-l^{(2)}||}{2\sigma^2}) f2=similiarity(x,l(2))=exp(−2σ2∣∣x−l(2)∣∣)
- f 3 = s i m i l i a r i t y ( x , l ( 3 ) ) = exp ( − ∣ ∣ x − l ( 3 ) ∣ ∣ 2 σ 2 f_3=similiarity(x,l^{(3)})=\exp(-\frac{||x-l^{(3)}||}{2\sigma^2} f3=similiarity(x,l(3))=exp(−2σ2∣∣x−l(3)∣∣
- 以上的similarity函数即核函数(高斯核函数),记为 k ( x , l ( i ) ) k(x,l^{(i)}) k(x,l(i))
- 将问题转化成,根据 θ 0 + θ 1 f 1 + θ 2 f 2 + θ 3 f 3 ≥ 0 \theta_0+\theta_1f_1+\theta_2f_2+\theta_3f_3 \ge 0 θ0+θ1f1+θ2f2+θ3f3≥0
-
(忽略0分量,因为其恒等于1)有详细解释 f 1 = s i m i l i a r i t y ( x , l ( 1 ) ) = exp ( − ∣ ∣ x − l ( 1 ) ∣ ∣ 2 σ 2 ) = exp ( − ∑ j = 1 n ( x j − l j ( 1 ) ) 2 2 σ 2 ) f_1=similiarity(x,l^{(1)})=\exp(-\frac{||x-l^{(1)}||}{2\sigma^2})=\exp(-\frac{\sum\limits_{j=1}^{n}(x_j-l_j^{(1)})^2}{2\sigma^2}) f1=similiarity(x,l(1))=exp(−2σ2∣∣x−l(1)∣∣)=exp(−2σ2j=1∑n(xj−lj(1))2)
- 如果 x ≈ l ( 1 ) x\approx l^{(1)} x≈l(1),有 f 1 ≈ 1 f_1 \approx 1 f1≈1
- 如果 x ≫ l ( 1 ) x \gg l^{(1)} x≫l(1),有 f 1 ≈ 0 f_1 \approx 0 f1≈0
- σ决定了从最高点(最高点时, f 1 = 1 f_1=1 f1=1)向其他方向衰减到0的速度,其值越大,衰减速度越慢
-
一种选择标记点的思路:让每一个样本点都作为一个标记点
-
有了标记点,我们可以生成对应于 x ( i ) x^{(i)} x(i)的新特征向量 f ( i ) f^{(i)} f(i),就会有新的目标函数:
- min θ C ∑ i = 1 m y ( i ) c o s t 1 ( θ T f ( i ) ) + ( 1 − y ( i ) ) c o s t 0 ( θ T f ( i ) ) + 1 2 ∑ j = 1 n θ j 2 \min\limits_{\theta}C\sum\limits_{i=1}^{m}y^{(i)}cost_1(\theta^Tf^{(i)})+(1-y^{(i)})cost_0(\theta^Tf^{(i)})+\frac{1}{2}\sum\limits_{j=1}^{n}\theta_j^2 θminCi=1∑my(i)cost1(θTf(i))+(1−y(i))cost0(θTf(i))+21j=1∑nθj2
- 在上述选择标记点的情形下, n = m n=m n=m
-
对于第二项,常见的SVM中的写法是 ∑ j θ j 2 = Θ T Θ \sum\limits_j \theta_j^2=\Theta^T\Theta j∑θj2=ΘTΘ
-
大多数实现中,使用 Θ T M Θ \Theta^TM\Theta ΘTMΘ替换上面的式子,M是由核函数决定的矩阵,整个过程变成了最小化另一种度量,这使得SVM能够更加有效率地运行
偏差和方差
-
对于更大的C,对应更小的偏差,更大的方差(即更小的λ)
-
对于更小的C,对应更大的变差,更小的方差(即更大的λ)
-
对于更大的 σ 2 \sigma^2 σ2, f i f_i fi变化更加平滑,会有更高的偏差和更小的方差
-
对于更小的 σ 2 \sigma^2 σ2, f i f_i fi变化更加剧烈,会有更低的偏差和更大的方差
使用SVM
- 使用现成的软件库实现SVM
- 需要额外注意的内容:
- C的选择
- 核函数的选择
- 没有核函数/线性核函数(n很大,m很小)
- 高斯核函数(n很小,m很大)
- 在使用高斯核函数之前,需要进行特征缩放
- 需要注意,所有的核函数(不是所有的相似度函数都能作为核函数)都需要满足默塞尔定理(Mercer’s Theorem),确保SVM软件包能够使用大量的优化方法,以很快地得到参数
- 其他的核函数
- 多项式核函数 k ( x , l ) = ( x T l + c o n s ) d k(x,l)=(x^Tl+cons)^d k(x,l)=(xTl+cons)d(要求x和l严格非负)
- 字符串核函数
- X 2 \Chi^2 X2核函数
- 直方图交叉核函数
多元分类
- one-vs-all方法
LR vs. SVMs
- 已知特征数量n和样本数量m
- 如果n更大,使用逻辑回归,或者线性核的SVM
- 如果n比较小,m适中,使用高斯核SVM
- 如果n比较小,m特别大,就应该使用逻辑回归或者线性核的SVM
- 逻辑回归和线性核SVM的表现十分相似