【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=1y=1y=1时,有hθ(x)≈1h_\theta(x)≈1hθ(x)1θTx≥0\theta^T x≥0θTx0
预测y=0y=0y=0时,有hθ(x)≈0h_\theta(x)≈0hθ(x)0θTx≤0\theta^T x≤0θTx0

logistic回归的损失函数(unregularized):
J(θ)=1m∑i=1m[−y(i)log(11+e−θTx(i))−(1−y(i))log(1−11+e−θTx(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,我们修改−log(11+e−θTx)-log(\frac{1}{1+e^{-\theta^T x}})log(1+eθTx1)项,使得当z=θTx≥1z=\theta^T x≥1z=θTx1时输出0,z≤1z≤1z1时,我们用一条单调递减的直线替代原有的sigmoid函数。同样地,修改−log(1−11+e−θTx)-log(1-\frac{1}{1+e^{-\theta^T x}})log(11+eθTx1)项,使得当z≤−1z≤-1z1时,输出0,z≥−1z≥-1z1时,则用一条单调递增的直线替代原有的sigmoid函数:
在这里插入图片描述

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

将以上表达式替换进logistic回归的损失函数表达式,可以得到SVM的损失函数(regularized):
J(θ)=1m∑i=1m[y(i)cost1(θTx(i))+(1−y(i))cost0(θTx(i))]+λ2m∑j=1nθj2J(\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^2J(θ)=m1i=1m[y(i)cost1(θTx(i))+(1y(i))cost0(θTx(i))]+2mλj=1nθj2

我们可以通过乘以一个常数m来优化该表达式,这不会影响参数的优化结果:
J(θ)=∑i=1m[y(i)cost1(θTx(i))+(1−y(i))cost0(θTx(i))]+λ2∑j=1nθj2J(\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^2J(θ)=i=1m[y(i)cost1(θTx(i))+(1y(i))cost0(θTx(i))]+2λj=1nθj2

更进一步,根据惯例,我们用C,而不是λ\lambdaλ作为正则化参数:
J(θ)=C∑i=1m[y(i)cost1(θTx(i))+(1−y(i))cost0(θTx(i))]+12∑j=1nθj2J(\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^2J(θ)=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,为了最小化cost1(z)cost_1(z)cost1(z)cost0(z)cost_0(z)cost0(z)的值:
如果y=1y=1y=1,我们希望θTx≥1\theta^T x≥1θTx1,而不仅仅是θTx≥0\theta^T x≥0θTx0
如果y=0y=0y=0,我们希望θTx≤−1\theta^T x≤-1θTx1,而不仅仅是θTx≤0\theta^T x≤0θTx0
这一更高的要求相当于在SVM中嵌入了一个安全的距离因子。

这一距离因子只有当常数C的值很大时才会发挥作用。如果我们设置的常数C非常大(如C=100,000),为了最小化目标函数,参数优化会让C所控制的∑i=1m[y(i)cost1(θTx(i))+(1−y(i))cost0(θTx(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+12∑j=1nθj2=12∑j=1nθj2J(\theta)=C·0+\frac{1}{2}\sum_{j=1}^n\theta_j^2=\frac{1}{2}\sum_{j=1}^n\theta_j^2J(θ)=C0+21j=1nθj2=21j=1nθj2

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值