Machine Learning(Andrew) ex6-Support Vector Machines
椰汁笔记
Support Vector Machines
- 这个算法是干什么的?
分类算法,和逻辑回归类似。 - 这个算法的优点是什么?
这个算法又叫做最大间距分类算法。
下面这张图就是很好的解释,对于下面的分类问题之前的逻辑回归的决策边界可能是粉色或者绿色的线。可以看到虽然是成功将数据集分为两部分,但是这样看起来不是那么地自然,分离地比较勉强。
对于支持向量机,它地决策边界边一定会是黑色地线。可以看到它的分类更加的自然。原因是这个决策边界拥有离训练样本最大的最短距离。这就是支持向量机的优势,这样分类的鲁棒性更好。
- 为什么能做到最大间距呢?
要说清楚这个问题,我们先要了解它的优化目标
之前的逻辑回归的优化目标是(先不考虑正则化)
J ( θ ) = 1 m ∑ i = 1 m [ − y ( i ) l o g ( h θ ( x ( i ) ) ) − ( 1 − y ( i ) ) l o g ( 1 − h θ ( x ( i ) ) ) ] J(\theta)=\frac{1}{m}\sum_{i=1}^{m}[-y^{(i)}log(h_{\theta}(x^{(i)}))-(1-y^{(i)})log(1-h_{\theta}(x^{(i)}))] J(θ)=m1i=1∑m[−y(i)log(hθ(x(i)))−(1−y(i))log(1−hθ(x(i)))]
当 y = 1 ,需要使 θ T x > > 0 ,此时的函数为 J ( θ ) = − l o g 1 1 + e − z ,图像如下 \textrm{当}y=1\textrm{,需要使}\theta^Tx>>0\textrm{,此时的函数为}J(\theta)=-log\frac{1}{1+e^{-z}}\textrm{,图像如下} 当y=1,需要使θTx>>0,此时的函数为J(θ)=−log1+e−z1,图像如下
支持向量机的优化函数做了右图的修改,为粉线部分。1左侧为线性的。可以看到这样改没有改变函数的大致走势,之所以这样改是为了提升计算效率。
当 y = 0 ,需要使 θ T x < < 0 ,此时的函数为 J ( θ ) = l o g 1 1 + e − z ,也做同样的修改图像如下 \textrm{当}y=0\textrm{,需要使}\theta^Tx<<0\textrm{,此时的函数为}J(\theta)=log\frac{1}{1+e^{-z}}\textrm{,也做同样的修改图像如下} 当y=0,需要使θTx<<0,此时的函数为J(θ)=log1+e−z1,也做同样的修改图像如下
可以看到改后的损失函数发生了变化,支持向量机的目标函数为
J ( θ ) = 1 m ∑ i = 1 m [ − y ( i ) c o s t 1 ( θ T x ( i ) ) − ( 1 − y ( i ) ) c o s t 2 ( θ T x ( i ) ) ] + λ 2 m ∑ j = 1 n θ j 2 J(\theta)=\frac{1}{m}\sum_{i=1}^{m}[-y^{(i)}cost_1(\theta^Tx^{(i)})-(1-y^{(i)})cost_2(\theta^Tx^{(i)})]+\frac{\lambda}{2m}\sum_{j=1}^n\theta_j^2 J(θ)=m1i=1∑m[−y(i)cost1(θTx(i))−(1−y(i))cost2(θTx(i))]+