吴恩达学习笔记——第七周

SVM

基础定义

分类器 监督算法

代价函数

基于逻辑回归的代价函数,我们逐步调节实现SVM的代价函数:

  1. 修正cost(i)
    吴恩达学习笔记——第七周
    图中的紫色线为更正之后的cost.
  2. 消去常数1/m
  3. 权重常数位置改变

最终得到的代价函数数学形式为:
J(θ)=Ci=1m[y(i)cost1(θTx(i))+(1y(i))cost0(θTx(i)))]+λ/2j=1nθj2J(\theta)=C\sum_{i=1}^m[y^{(i)}cost_1(\theta^Tx^{(i)})+(1-y^{(i)})cost_0(\theta^Tx^{(i)}))]+\lambda/2\sum_{j=1}^n\theta_j^2

目标

支持向量机努力用一个最大的边距来分离样本,因此SVM有时候也被称为大间距分类器
吴恩达学习笔记——第七周
这也与参数设置有关系,如果参数C设置的非常大的话,那么代价函数就可以简化为:
吴恩达学习笔记——第七周
如果直观理解的话,参数C设置的非常大,也就是不允许训练集出现错误,很容易因为一个例子使得边界发生巨大的变化,而正则化的部分可以对其进行修正。

大间距分类背后的数学原理

接下来,我们从直观的角度分析为什么SVM会得到间隔最大的分类边界。
假设:

  1. C非常大
  2. θ0=0\theta_0=0

为了方便分析,我们设p(i)p^{(i)}x(i)x^{(i)}θ\theta方向上的映射,因此可以得到:
θTx(i)=p(i)θ\theta^Tx^{(i)}=p^{(i)}||\theta||

核函数

我们选取高斯核函数作为我们的相似度函数:
similarity(x,y)=exy22σ2similarity(x,y)=e^{-\frac{||x-y||^{2}}{2\sigma^2}}

使用核函数重新构造变量项的原因

如果我们仍然使用多项式的方法,那么我们需要定义项:x1x2,x12,x22x_1x_2,x_1^2,x_2^2;很多时候特征值的数目会超过我们的想象,因此按照这种办法,所需要定义的项太多了,因此我们需要别的方法来定义特征变量。

如何使用核函数

我们通过标记点新特征函数,来定义新的特征变量。
设标记的点为ll,那么随意取x点,可以得到核函数的值为:
如果lxl\approx x,那么核函数的值可以得到趋近于1;如果距离非常远,那么核函数的值趋近于0.
这就是核函数或者说是相似度函数所具有的物理意义。

如何确定标记点

  1. 直接使用样本点作为标记点。

使用核函数之后的代价函数

f(i)(x)=sim(x,x(i))f^{(i)}(x)=sim(x,x^{(i)})

J(θ)=Ci=1m[y(i)cost1(θTf(i))+(1y(i))cost0(θTf(i)))]+λ/2j=1nθj2J(\theta)=C\sum_{i=1}^m[y^{(i)}cost_1(\theta^Tf^{(i)})+(1-y^{(i)})cost_0(\theta^Tf^{(i)}))]+\lambda/2\sum_{j=1}^n\theta_j^2

关于参数的直观理解:
如果C比较大的话,那么直观理解就是容错性比较差,容易出现过拟合;也就是低偏差,高方差。
如果σ\sigma比较大的话,那么直观理解就是特征变量f(i)f^{(i)}变化的较为平滑;就是高偏差,低方差。

实际应用

  1. 选择参数
    (1) 选择CC.
    (2) 选择核函数。
    一种选择是不用核函数,这时候也就可以理解为使用线性核函数。当n很大,m很小时,可以选择这种核函数。
    第二种选择是使用高斯核函数。这时候需要选择参数σ\sigma