1.支持向量机SVM
1.1 优化目标
在逻辑回归中,针对一个样本的损失函数如下:
−y(i)log(hθ(x(i))+(1−y(i))log(1−hθ(x(i))=−y(i)log(11+e−θT⋅x)+(1−y(i))log(1−11+e−θT⋅x)-y^{(i)}log(h_\theta(x^{(i)})+(1-y^{(i)})log(1-h_\theta(x^{(i)})=-y^{(i)}log(\frac{1}{1+e^{-\theta^T·x}})+(1-y^{(i)})log(1-\frac{1}{1+e^{-\theta^T·x}})−y(i)log(hθ(x(i))+(1−y(i))log(1−hθ(x(i))=−y(i)log(1+e−θT⋅x1)+(1−y(i))log(1−1+e−θT⋅x1)
假设以z=θT⋅xz=\theta^T·xz=θT⋅x为横坐标,上述损失函数的值为纵坐标,当yyy取不同值时可以画出不同的图像:

上图中的蓝色曲线为原始的图像,而紫红色的直线是与曲线很相似的直线。如果使用新的代价函数表达紫红色的线,则可以表示为: minθC∑i=1m[y(i)cost1(θTx(i))+(1−y(i))cost0(θTx(i))]+12∑i=1nθj2\min\limits_{\theta} C \sum_{i=1}^{m}\left[y^{(i)} \operatorname{cost}_{1}\left(\theta^{T} x^{(i)}\right)+\left(1-y^{(i)}\right) \operatorname{cost}_{0}\left(\theta^{T} x^{(i)}\right)\right]+\frac{1}{2} \sum_{i=1}^{n} \theta_{j}^{2}θminC∑i=1m[y(i)cost1(θTx(i))+(1−y(i))cost0(θTx(i))]+21∑i=1nθj2
转换后的代价函数即支持向量机的代价函数。其中cost1(θTx(i))=−loghθ(x(i)),cost0(θTx(i))=−log(1−hθ(x(i)))cost_1(\theta^Tx^{(i)})=-logh_{\theta}(x^{(i)}),cost_0(\theta^Tx^{(i)})=-log(1-h_{\theta}(x^{(i)}))cost1(θTx(i))=−loghθ(x(i)),cost0(θTx(i))=−log(1−hθ(x(i))),分别表示两个子图中紫红色的线,且上式中把前后两个部分中的常量1m\frac{1}{m}m1以及正则化项中的λ\lambdaλ删除,改为第一项中的CCC,这是SVM常用表达形式,实际含义并没有改变:原来的式子可以理解为A+λBA+\lambda BA+λB,如果λ\lambdaλ值较大说明给BBB在代价函数的权重较大;现在修改为CA+BCA+BCA+B,当CCC的值较小时,变相增加了BBB在代价函数中的权重,当C=1λC=\frac{1}{\lambda}C=λ1时,两个式子在梯度更新时会到相同的值
1.2 大边界的直观理解
下图是SVM代价函数的图像。当y=1y=1y=1时(对应左子图),为了使损失值最小需要z=θTx≥1z=\theta^Tx \ge 1z=θTx≥1;当y=0y=0y=0时(对应右子图),为了使损失值最小需要z=θTx≤−1z=\theta^Tx \le -1z=θTx≤−1。但是在逻辑回归中当y=1y=1y=1时,仅需要θTx≥0\theta^Tx \ge 0θTx≥0即可将样本正确归类为正样本;当y=0y=0y=0时,仅需要θTx<0\theta^Tx \lt 0θTx<0即可将样本正确归类为负样本:

从上述分析可以看出SVM的要求更高,需要一个安全间距
当把CCC值设置的很大时,此时需要找出使得第一项为0的参数θ\thetaθ。假设选择了能使得第一项为0的参数θ\thetaθ,则必然要遵循约束条件,即当y=1y=1y=1时,θTx≥1\theta^Tx \ge 1θTx≥1以及当y=0y=0y=0时,θTx≤−1\theta^Tx \le -1θTx≤−1:

为什么SVM被称为大间距分类器?对于下图中的数据集,可以使用多条直线将正负样本分开,如图中紫红色和绿色的直线。而黑线相较于这两条线直观上把两类样本分开的更好,因为黑线与样本间有着更大的最短距离(离两类样本存在两个距离值,其中较小的值),意味着SVM具有鲁棒性,这个距离被称为SVM的间距:

当将CCC设置的很大时,异常点会严重影响决策边界。在下图中,当CCC较大时,黑线是未加入左下角的红色叉(异常点)得到的决策边界。加入了异常点后,为了将样本用最大间距分开,决策边界由黑线变为紫红色的线,这显然不太好(可以理解为过拟合)。所以当CCC设置的值没有很大时,可以忽略异常点的影响,得到类似黑线这样较好的决策边界:

1.3 大边界分类背后的数学
首先回顾向量内积的直观理解,对于两个向量u=[u1,u2]T,v=[v1,v2]Tu=[u_1,u_2]^T,v=[v1,v2]^Tu=[u1,u2]T,v=[v1,v2]T,ppp为vvv在uuu上的投影(ppp也是有正负值的,但不是向量),则uTv=p⋅∣∣u∣∣=u1v1+u2v2u^Tv=p·||u||=u_1v_1+u_2v_2uTv=p⋅∣∣u∣∣=u1v1+u2v2:

下面通过内积性质理解SVM的目标函数:

首先令θ0=0\theta_0=0θ0=0,且将特征数设置为n=2n=2n=2,于是将目标函数转换为:
minθ12∑j=1nθj2=12(θ12+θ22)=12(θ12+θ22)2=12∣∣θ∣∣2\min\limits_\theta\frac{1}{2}\sum_{j=1}^n\theta_j^2=\frac{1}{2}(\theta_1^2+\theta_2^2)=\frac{1}{2}(\sqrt{\theta_1^2+\theta_2^2)}^2=\frac{1}{2}||\theta||^2θmin21∑j=1nθj2=21(θ12+θ22)=21(θ12+θ22)2=21∣∣θ∣∣2
通过前面对内积的直观介绍,约束条件θTx(i)=p(i)∣∣θ∣∣\theta^Tx^{(i)}=p^{(i)}||\theta||θTx(i)=p(i)∣∣θ∣∣,p(i)p^{(i)}p(i)表示x(i)x^{(i)}x(i)在θ\thetaθ上的投影。因此目标函数如下所示:

在下面左子图中的两类样本,假设以绿线作为决策边界(即θTx=0\theta^Tx=0θTx=0,这里绿线之所以经过原点是因为θ0=0\theta_0=0θ0=0),则蓝色向量θ\thetaθ与绿线正交,所以一个决策边界对应着一个参数θ\thetaθ向量。假设红叉为正样本,蓝圈为负样本,则图中正样本x(1)x^{(1)}x(1)和负样本x(2)x^{(2)}x(2)在θ\thetaθ上的投影长度十分的短,要满足p(i)∣∣θ∣∣≥1p^{(i)}||\theta|| \ge 1p(i)∣∣θ∣∣≥1和p(i)∣∣θ∣∣≤−1p^{(i)}||\theta|| \le -1p(i)∣∣θ∣∣≤−1则需要∣∣θ∣∣||\theta||∣∣θ∣∣的值要很大,但是目标函数是希望∣∣θ∣∣||\theta||∣∣θ∣∣的值尽量的小,所以θ\thetaθ的方向不好(即决策边界的选择不好)。
SVM会根据目标函数选择下面右子图中的决策边界,因为该边界让∣∣θ∣∣||\theta||∣∣θ∣∣变得更小:

1.4 核函数Ⅰ
为了获取下图中的判定边界,模型可能是h(θ)=θ0+θ1x1+θ2x2+θ3x1x2+...h(\theta)=\theta_0+\theta_1x_1+\theta_2x_2+\theta_3x_1x_2+...h(θ)=θ0+θ1x1+θ2x2+θ3x1x2+...的形式,此时假设f1=x1,f2=x2,f3=x1x2,...f_1=x_1,f_2=x_2,f_3=x_1x_2,...f1=x1,f2=x2,f3=x1x2,...,则h(θ)=θ0+θ1f1+θ2f2+...+θnfnh(\theta)=\theta_0+\theta_1f_1+\theta_2f_2+...+\theta_nf_nh(θ)=θ0+θ1f1+θ2f2+...+θnfn。除了对原特征进行组合外,是否有更好的方法构造f1,f2,...f_1,f_2,...f1,f2,...?这就需要核函数
假设给定一个样本xxx,利用xxx和预先选定的标记l(1)、l(2)、l(3)l^{(1)}、l^{(2)}、l^{(3)}l(1)、l(2)、l(3)的近似程度作为f1、f2、f3f_1、f_2、f_3f1、f2、f3:

f1=similarity(x,l(1))=e(−∥x−l(1)∥22σ2)f_{1}=\operatorname{similarity}\left(x, l^{(1)}\right)=e\left(-\frac{\left\|x-l^{(1)}\right\|^{2}}{2 \sigma^{2}}\right)f1=similarity(x,l(1))=e(−2σ2∥x−l(1)∥2)
f2=similarity(x,l(2))=e(−∥x−l(2)∥22σ2)f_{2}=\operatorname{similarity}\left(x, l^{(2)}\right)=e\left(-\frac{\left\|x-l^{(2)}\right\|^{2}}{2 \sigma^{2}}\right)f2=similarity(x,l(2))=e(−2σ2∥x−l(2)∥2)
f3=similarity(x,l(3))=e(−∥x−l(3)∥22σ2)f_{3}=\operatorname{similarity}\left(x, l^{(3)}\right)=e\left(-\frac{\left\|x-l^{(3)}\right\|^{2}}{2 \sigma^{2}}\right)f3=similarity(x,l(3))=e(−2σ2∥x−l(3)∥2)
其中,similarity(x,l(i))\operatorname{similarity}\left(x, l^{(i)}\right)similarity(x,l(i))就是核函数(该函数是高斯核函数),通常采用k(x,l(i))k(x,l^{(i)})k(x,l(i))表示。当xxx与标记l(i)l^{(i)}l(i)的距离越近,则特征fif_ifi近似于e−0=1e^{-0}=1e−0=1;当xxx与标记l(i)l^{(i)}l(i)的距离越远,则特征fif_ifi近似于e−bignum=0e^{-bignum}=0e−bignum=0。从下图中可以直观理解,当l(1)=[3,5]Tl^{(1)}=[3,5]^Tl(1)=[3,5]T时,如果x=[3,5]Tx=[3,5]^Tx=[3,5]T,则zzz轴最高(zzz轴表示f1f_1f1的值,xxx和yyy轴分别表示x1x_1x1和x2x_2x2)。另外σ\sigmaσ的值会控制f1f_1f1的值随xxx的改变而改变的速率:

那么核函数如何确定决策边界?假设在hθ(x)=θ0+θ1f1+θ2f2+θ3f3h_\theta(x)=\theta_0+\theta_1f_1+\theta_2f_2+\theta_3f_3hθ(x)=θ0+θ1f1+θ2f2+θ3f3,此时参数已知,分别为θ0=0.5,θ1=θ2=1,θ3=0\theta_0=0.5,\theta_1=\theta_2=1,\theta_3=0θ0=0.5,θ1=θ2=1,θ3=0。对于下图中的紫红色样本点,可以看出它离l(1)l^{(1)}l(1)较近,离l(2)l^{(2)}l(2)和l(3)l^{(3)}l(3)较远,所以f1≈1,f2≈0,f3≈0f_1 \approx 1,f_2 \approx 0,f_3 \approx 0f1≈1,f2≈0,f3≈0,所以hθ(x)>0h_\theta(x)>0hθ(x)>0,即预测该样本点为正样本点。同理预测绿色样本点为正样本点,青蓝色样本点为负样本点,最终得出红色的决策边界。可以看出在上述计算中并没有使用到样本的特性值x1、x2、x3x_1、x_2、x_3x1、x2、x3,而是使用核函数计算出的新特征f1、f2、f3f_1、f_2、f_3f1、f2、f3:

1.5 核函数Ⅱ
在1.4节中只是直观介绍了核函数的概念和作用,但是还不知道如何选取标记l(i)l^{(i)}l(i)。通常是根据训练集的数量选择标记数,假设有mmm个样本,则选取mmm个标记,这样得到的新特征是建立在单个样本点和其他所有样本点间的距离上的。假如将每一个样本点作为一个标记,则新特性可以表示为:

所以SVM的目标函数转换为minθC∑i=1m[y(i)cost1(θTf(i))+(1−y(i))cost0(θTf(i))]+12∑i=1n=mθj2\min\limits_{\theta} C \sum_{i=1}^{m}\left[y^{(i)} \operatorname{cost}_{1}\left(\theta^{T} f^{(i)}\right)+\left(1-y^{(i)}\right) \operatorname{cost}_{0}\left(\theta^{T} f^{(i)}\right)\right]+\frac{1}{2} \sum_{i=1}^{n=m} \theta_{j}^{2}θminC∑i=1m[y(i)cost1(θTf(i))+(1−y(i))cost0(θTf(i))]+21∑i=1n=mθj2,并且在计算∑i=1n=mθj2=θTθ\sum_{i=1}^{n=m} \theta_{j}^{2}=\theta^T\theta∑i=1n=mθj2=θTθ时会使用θTMθ\theta^T M \thetaθTMθ进行代替,由于简化计算,其中MMM随着核函数的不同而变化
注意:当SVM不使用核函数时,称为线性核函数,即目标函数还是θTx\theta^TxθTx
下面来看下C=1λC=\frac{1}{\lambda}C=λ1和σ\sigmaσ对SVM的影响:
- 当CCC较大时,相当于λ\lambdaλ较小,可能会导致过拟合,高方差
- 当CCC较小时,相当于λ\lambdaλ较大,可能会导致欠拟合,高偏差
- 当σ\sigmaσ较大时,特征fif_ifi的变化较平滑,可能会导致低方差,高偏差
- 当σ\sigmaσ较小时,特征fif_ifi的变化较剧烈,可能会导致低偏差,高方差
1.6 SVM的使用
要使用SVM,必须做以下几件事:
- 选择合适的CCC值
- 选择核函数(也可以不使用核函数),核函数除了高斯核函数,还有多项式核函数等,但是目标都是根据样本和标记间的距离构建新特征
- 选择合适的σ\sigmaσ值
对于SVM的使用是存在普遍准则的,mmm为样本数,nnn为特征数:
-
如果nnn相较于mmm要大许多,即训练集数据量不够支持训练一个复杂的非线性模型,则选用逻辑回归模型或者不带核函数的SVM
-
如果nnn较小,mmm大小适中,则使用高斯核函数的SVM
-
如果nnn较小,mmm较大,则使用SVM会非常慢,此时需要创造更多的特征,然后使用逻辑回归或不带核函数的SVM
神经网络在以上三种情况下都可能会有较好的表现,但是训练神经网络可能非常慢,选择支持向量机的原因主要在于它的代价函数是凸函数,不存在局部最小值
2.参考
https://www.bilibili.com/video/BV164411b7dx?p=70-75
http://www.ai-start.com/ml2014/html/week7.html
本文详细介绍了支持向量机SVM的优化目标,通过对比逻辑回归阐述了SVM的大边界思想,解释了SVM为何被称为大间距分类器。同时,讨论了核函数的作用,特别是高斯核函数在构建新特征上的应用,并分析了C和σ参数对模型的影响。最后,提出了SVM在实际使用中的选择准则,并总结了SVM在不同数据情况下的适用性。
6614





