【Machine Learning, Coursera】机器学习Week7 支持向量机

Support Vector Machine (SVM)


本节内容:
支持向量机(SVM)是一种监督式分类学习算法,它非常适合于线性可分数据的分类。本节介绍SVM目标函数的形式和SVM的特点。

相关机器学习概念:
支持向量机(Support Vector Machine, SVM)
大间隔分类器(Large Margin Classifiers)
线性可分数据(Linear Separable)


1. Optimization Objective

回顾logistic回归,我们有以下规定:
预测 y = 1 y=1 y=1时,有 h θ ( x ) ≈ 1 h_\theta(x)≈1 hθ(x)1 θ T x ≥ 0 \theta^T x≥0 θTx0
预测 y = 0 y=0 y=0时,有 h θ ( x ) ≈ 0 h_\theta(x)≈0 hθ(x)0 θ T x ≤ 0 \theta^T x≤0 θTx0

logistic回归的损失函数(unregularized):
J ( θ ) = 1 m ∑ i = 1 m [ − y ( i ) l o g ( 1 1 + e − θ T x ( i ) ) − ( 1 − y ( i ) ) l o g ( 1 − 1 1 + e − θ T x ( i ) ) ] J(\theta)=\frac{1}{m}\sum_{i=1}^{m}[-y^{(i)}log(\frac{1}{1+e^{-\theta^T x^{(i)}}})-(1-y^{(i)})log(1-\frac{1}{1+e^{-\theta^T x^{(i)}}})] J(θ)=m1i=1m[y(i)log(1+eθTx(i)1)(1y(i))log(11+eθTx(i)1)]

为了构造SVM,我们修改 − l o g ( 1 1 + e − θ T x ) -log(\frac{1}{1+e^{-\theta^T x}}) log(1+eθTx1)项,使得当 z = θ T x ≥ 1 z=\theta^T x≥1 z=θTx1时输出0, z ≤ 1 z≤1 z1时,我们用一条单调递减的直线替代原有的sigmoid函数。同样地,修改 − l o g ( 1 − 1 1 + e − θ T x ) -log(1-\frac{1}{1+e^{-\theta^T x}}) log(11+eθTx1)项,使得当 z ≤ − 1 z≤-1 z1时,输出0, z ≥ − 1 z≥-1 z1时,则用一条单调递增的直线替代原有的sigmoid函数:
在这里插入图片描述

将修改的两项分别记作 c o s t 1 ( z ) cost_1(z) cost1(z) c o s t 0 ( z ) cost_0(z) cost0(z) c o s t 1 ( z ) cost_1(z) cost1(z)是y=1时的分类损失, c o s t 0 ( z ) cost_0(z) cost0(z)是y=0时的损失:
z = θ T x z=\theta^T x z=θTx
c o s t 1 ( z ) = m a x { 0 , k ( 1 − z ) } cost_1(z)=max\{0,k(1-z)\} cost1(z)=max{0,k(1z)}
c o s t 0 ( z ) = m a x { 0 , k ( 1 + z ) } cost_0(z)=max\{0,k(1+z)\} cost0(z)=max{0,k(1+z)}

将以上表达式替换进logistic回归的损失函数表达式,可以得到SVM的损失函数(regularized):
J ( θ ) = 1 m ∑ i = 1 m [ y ( i ) c o s t 1 ( θ T x ( i ) ) + ( 1 − y ( i ) ) c o s t 0 ( θ T x ( i ) ) ] + λ 2 m ∑ j = 1 n θ j 2 J(\theta)=\frac{1}{m}\sum_{i=1}^{m}[y^{(i)}cost_1(\theta^T x^{(i)})+(1-y^{(i)})cost_0(\theta^T x^{(i)})]+\frac{\lambda}{2m}\sum_{j=1}^n\theta_j^2 J(θ)=m1i=1m[y(i)cost1(θTx(i))+(1y(i))cost0(θTx(i))]+2mλj=1nθj2

我们可以通过乘以一个常数m来优化该表达式,这不会影响参数的优化结果:
J ( θ ) = ∑ i = 1 m [ y ( i ) c o s t 1 ( θ T x ( i ) ) + ( 1 − y ( i ) ) c o s t 0 ( θ T x ( i ) ) ] + λ 2 ∑ j = 1 n θ j 2 J(\theta)=\sum_{i=1}^{m}[y^{(i)}cost_1(\theta^T x^{(i)})+(1-y^{(i)})cost_0(\theta^T x^{(i)})]+\frac{\lambda}{2}\sum_{j=1}^n\theta_j^2 J(θ)=i=1m[y(i)cost1(θTx(i))+(1y(i))cost0(θTx(i))]+2λj=1nθj2

更进一步,根据惯例,我们用C,而不是 λ \lambda λ作为正则化参数:
J ( θ ) = 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 J(\theta)=C\sum_{i=1}^{m}[y^{(i)}cost_1(\theta^T x^{(i)})+(1-y^{(i)})cost_0(\theta^T x^{(i)})]+\frac{1}{2}\sum_{j=1}^n\theta_j^2 J(θ)=Ci=1m[y(i)cost1(θTx(i))+(1y(i))cost0(θTx(i))]+21j=1nθj2

上式就是SVM的损失函数的最终表达形式。不难看出 C = 1 λ C=\frac{1}{\lambda} C=λ1. 之所以这样处理,是因为在SVM中我们希望控制的是目标函数的前一项。过拟合时,我们减小C,欠拟合时,增大C。

需要注意的是,不同于logistic回归的假设函数,SVM的假设函数输出的不是y=0或1的概率,它的输出非1即0:
在这里插入图片描述

2. Large Margin Intuition

SVM是一类大间隔分类器(Large Margin Classifiers),所谓间隔,指的是决策边界到最近的样本的距离。SVM的决策边界总是尽可能地远离正样本和负样本,将正样本和负样本以一个大的间隔区分开来。

如果我们有以下线性可分(Linear Separable)的样本,SVM会选择下图中黑线决定的决策边界,而非绿线或者粉线。
(线性可分是指可用一条直线将正负样本区分开来)
在这里插入图片描述

为什么SVM会得到这样一个决策边界呢?

可以看到,对于SVM,为了最小化 c o s t 1 ( z ) cost_1(z) cost1(z) c o s t 0 ( z ) cost_0(z) cost0(z)的值:
如果 y = 1 y=1 y=1,我们希望 θ T x ≥ 1 \theta^T x≥1 θTx1,而不仅仅是 θ T x ≥ 0 \theta^T x≥0 θTx0
如果 y = 0 y=0 y=0,我们希望 θ T x ≤ − 1 \theta^T x≤-1 θTx1,而不仅仅是 θ T x ≤ 0 \theta^T x≤0 θTx0
这一更高的要求相当于在SVM中嵌入了一个安全的距离因子。

这一距离因子只有当常数C的值很大时才会发挥作用。如果我们设置的常数C非常大(如C=100,000),为了最小化目标函数,参数优化会让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 ) ) ] \sum_{i=1}^{m}[y^{(i)}cost_1(\theta^T x^{(i)})+(1-y^{(i)})cost_0(\theta^T x^{(i)})] i=1m[y(i)cost1(θTx(i))+(1y(i))cost0(θTx(i))]项尽可能地等于零。目标函数简化为:
J ( θ ) = C ⋅ 0 + 1 2 ∑ j = 1 n θ j 2 = 1 2 ∑ j = 1 n θ j 2 J(\theta)=C·0+\frac{1}{2}\sum_{j=1}^n\theta_j^2=\frac{1}{2}\sum_{j=1}^n\theta_j^2 J(θ)=C0+21j=1nθj2=21j=1nθj2

需要注意的是,为了让SVM这类大间距分类器发挥其优势,我们通常将C的值设置的很大,但这会导致SVM容易受到异常点(outlier)的影响,因此不适用于数据线性不可分的情况。
对于下图的样本数据,用黑线划分显然比粉线看起来更加自然。但如果C设置的很大,那么一个异常点就会把决策边界从原来的黑线变为粉线。为了避免异常点的影响,需要将C的值调小一些,以得到更好的分类结果。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值