算法工程师修仙之路:吴恩达机器学习(十四)

本文深入探讨了支持向量机(SVM)的概念,解释了其作为大间距分类器的工作原理。通过分析SVM的代价函数和正则化参数C的作用,展示了如何在数据集中寻找最大间距的决策边界,以实现对样本的鲁棒性分类。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

吴恩达机器学习笔记及作业代码实现中文版

第十章 支持向量机


直观上对大间隔的理解

  • 人们有时将支持向量机看作是大间距分类器。

  • 支持向量机模型的代价函数,在左边这里我画出了关于 z 的代价函数cost1(z)cost_1(z)cost1(z),此函数用于正样本,而在右边这里我画出了关于 z 的代价函数cost0(z)cost_0(z)cost0(z),横轴表示 z。
    在这里插入图片描述

  • 最小化代价函数的必要条件

    • 如果你有一个正样本,y=1y=1y=1,则只有在z >= 1时,代价函数cost1(z)cost_1(z)cost1(z)才等于0。换句话说,如果你有一个正样本,我们会希望θTx&gt;=1\theta^Tx&gt;=1θTx>=1,反之,如果y=0y=0y=0,函数cost0(z)cost_0(z)cost0(z),它只有在z <= -1的区间里函数值为 0。
    • 事实上,如果你有一个正样本y=1y=1y=1,则其实我们仅仅要求θTx\theta^TxθTx大于等于 0,就能将该样本恰当分出,这是因为如果θTx&gt;0\theta^Tx&gt;0θTx>0的话,我们的模型代价函数值为0,类似地,如果你有一个负样本,则仅需要θTx&lt;=0\theta^Tx&lt;=0θTx<=0就会将负例正确分离。
    • 但是,支持向量机的要求更高,不仅仅要能正确分开输入的样本,即不仅仅要求θTx&gt;0\theta^Tx&gt;0θTx>0,我们需要的是比0值大很多,比如大于等于1,或者比0小很多,比如我希望它小于等于-1,这就相当于在支持向量机中嵌入了一个额外的安全因子,或者说安全的间距因子。
  • 如果CCC非常大,则最小化代价函数的时候,我们将会很希望找到一个使第一项为 0 的最优解。因此,让我们尝试在代价项的第一项为 0 的情形下理解该优化问题。

    • 首先支持向量机的代价函数表示如下:minθC∑i=1m[y(i)cost1(θTx(i))+(1−y(i))cost0(θTx(i))]+12∑i=1nθj2min_\theta C\sum_{i=1}^{m}[y^{(i)}cost_1(\theta^Tx^{(i)})+(1-y^{(i)})cost_0(\theta^Tx^{(i)})]+\frac{1}{2}\sum_{i=1}^{n}\theta_j^2minθCi=1m[y(i)cost1(θTx(i))+(1y(i))cost0(θTx(i))]+21i=1nθj2
    • 我们已经看到输入一个训练样本标签为y=1y=1y=1,你想令第一项为 0,你需要做的是找到一个θ\thetaθ,使得θTx&gt;=1\theta^Tx&gt;=1θTx>=1,类似地,对于一个训练样本,标签为y=0y=0y=0,为了使cost0(z)cost_0(z)cost0(z)函数的值为0,我们需要θTx&lt;=−1\theta^Tx&lt;=-1θTx<=1
    • 因为我们将选择参数使第一项为0,因此这个函数的第一项为0,因此是CCC乘以 0 加上二分之一乘以第二项。这将遵从以下的约束:θTx&gt;=1\theta^Tx&gt;=1θTx>=1,如果y(i)y^{(i)}y(i)是等于 1 的,θTx&lt;=−1\theta^Tx&lt;=-1θTx<=1,如果样本y(i)y^{(i)}y(i)是一个负样本。
  • 具体而言,如果你考察下面这样一个数据集,其中有正样本,也有负样本,可以看到这个数据集是线性可分的。
    在这里插入图片描述

  • 支持向量机将会选择这个黑色的决策边界,黑线看起来是更稳健的决策界。在分离正样本和负样本上它显得的更好。数学上来讲,这条黑线有更大的距离,这个距离叫做间距(margin)。

  • 当画出两条额外的蓝线,我们看到黑色的决策界和训练样本之间有更大的最短距离。然而粉线和蓝线离训练样本就非常近,在分离样本的时候就会比黑线表现差。因此,这个距离叫做支持向量机的间距,而这是支持向量机具有鲁棒性的原因,因为它努力用一个最大间距来分离样本,因此支持向量机有时被称为大间距分类器。
    在这里插入图片描述

  • 我们将这个大间距分类器中的正则化因子常数CCC设置的非常大,因此对这样的一个数据集,也许我们将选择黑线这样的决策界,从而最大间距地分离开正样本和负样本。

  • 在让代价函数最小化的过程中,我们希望找出在y=1y=1y=1y=0y=0y=0两种情况下都使得代价函数中左边的这一项尽量为零的参数。如果我们找到了这样的参数,则我们的最小化问题便转变成:
    在这里插入图片描述

  • 事实上,支持向量机现在要比这个大间距分类器所体现得更成熟,尤其是当你使用大间距分类器的时候,你的学习算法会受异常点(outlier)的影响。

    • 比如我们加入一个额外的正样本:
      在这里插入图片描述
    • 在这里,如果你加了这个样本,为了将样本用最大间距分开,也许我最终会得到一条类似这样粉色的线的决策界,仅仅基于一个异常值,仅仅基于一个样本,就将我的决策界从这条黑线变到这条粉线,这实在是不明智的。
    • 而如果正则化参数CCC设置的非常大,这事实上正是支持向量机将会做的。它将决策界,从黑线变到了粉线,但是如果CCC设置的小一点, 如果你将CCC设置的不要太大,则你最终会得到这条黑线。
    • 当然数据如果不是线性可分的,如果你在这里有一些正样本或者你在这里有一些负样本,则支持向量机也会将它们恰当分开。因此,大间距分类器的描述,仅仅是从直观上给出了正则化参数CCC非常大的情形。
    • CCC的作用类似于1/λ1/\lambda1/λλ\lambdaλ是我们之前使用过的正则化参数。这只是CCC非常大的情形,或者等价λ\lambdaλ非常小的情形。你最终会得到类似粉线这样的决策界,但是实际上应用支持向量机的时候,当CCC不是非常非常大的时候,它可以忽略掉一些异常点的影响,得到更好的决策界。甚至当你的数据不是线性可分的时候,支持向量机也可以给出好的结果。
  • CCC较大时,相当于λ\lambdaλ较小,可能会导致过拟合,高方差;CCC较小时,相当于λ\lambdaλ较大,可能会导致低拟合,高偏差。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值