斯坦福机器学习(7)

2020-11-24  本文已影响0人  西部小笼包

前情回顾

之前我们介绍了3个算法,分别是线性回归,逻辑分类,以及神经网络。我们又介绍了如果优化算法的一些武器。比如误差分析,学习曲线。知道了查全率和查准率和f1 score。 接下来我们要来学习这门课最后一个监督算法。

支持向量机

这个算法,课上还是比较难理解的。我把我自己理解的一些点整理出来。对于更加详细的数学证明,课上没有讲,我就只搬结论了。希望可以在略去数学证明的情况下把大家给讲明白。

首先我们先从最简单的线性可分问题讲。比如下面这个图


image.png

在这种情况下,支持向量机,会用线性核函数(等价无核函数)去求解。那么它的目标就是找到一条直线划分2个点集,使得左右2个点集划分准确。但是这样的线有很多条。他要选择的是所有点到这条线的距离的最小值要最大。


image.png
我们看到上图 黑色这条线是由于绿色的。因为黑色的线,到2边的点的margin比绿色的更大。我们也看到2条蓝色的线是穿过到黑色线的最近的点。这些点就是构成解集的作用点,我们把它们称作支持向量。

下面我们就希望用数学的方式找到这样的黑线。那么就等价于我们也需要一个函数来最大化margin。

image.png

由上图我们知道了点到直线的距离公式。那么这里再引入一个概念,支持向量引入的2个边中间不应该有点。因为他们构成的线已经是离黑线最近的点了。所以我们可以得到如下公式。

image.png

这个公式的前半部分,就是点到直线的距离。要么都大于等于D,要么小于等于-D。 D到-D中间不应该有任何点。这里的Y 是1和-1,和逻辑回归不同。原因是


image.png

支持向量机的决策边界 近似了原先的LOG曲线。

image.png image.png

基于这个新的线。我们可以对上述公式作化简。


image.png

上面这个简化的公式,其实就是点到平面的距离的分子。因为Y不是1 就是-1,这么处理的作用刚好就是绝对值的作用。
并且我们的目标是最大化支撑向量的到平面的距离。所以支撑向量带入进去这个分子就是1.

image.png
最后最大化一个数,等价于最小化这个数的倒数。所以我们得到了一个最小化的目标,不过这个目标是有前提条件的。就是必须满足 y * (w' * x + b) >= 1
image.png

这个支持向量机是个有限定条件的最优化问题,和之前的线性回归和逻辑回归的最优化问题是不一样的,是没有限定条件的。
全局最优化,只要对目标函数求导取极值判断最大值即可。但有条件的最优化问题,需要用拉格朗日算子进行求解。这里的数学证明我们略过。我们可以得到一个转换,然后我们就可以过渡到核函数是什么的问题上。

在介绍后面的核函数之前,我再来介绍下,正则化在支持向量机是怎么起作用的。

软边界(正则化)

为了防止一些极端数据而引起的过拟合问题,我们需要加入一些容错空间。就像我们刚才介绍的硬边界,就是严格要求必须一条线完美的划分2类点在两侧,且支持向量的2条线中间不可有任何点。


image.png

这样带来的问题如上图。就是会因为一个异常点,而让一般性很好的黑线,因为一个特殊数据而变成粉色的线。这个就是过拟合了。
为了解决这个问题,我们也同样引入一个值,代表容错空间。如下图,我们引入了一个虚线的概念,表示一些样本点的约束条件被放宽了。某些样本是可以出现到间隔带的

image.png

比如下图的2个标注的点。对于每一个样本数据,我们都引入一个容错值,同样我们也希望这个容错边界越小越好。


image.png

并且这个比例是可以调,所以我们放上了参数C,这个是用来控制容错部分的占用的权重。如果C为无穷大的话。那么为了MIN就没有容错(容错为0)。就是之前介绍的硬间隔。如果C很小的话,容错就可以很大,同时又不影响整体的MIN


image.png

核函数

有了上面的知识,再结合拉格朗日,我们可以再对最优化问题,做一个变形

image.png
我们观察后面的2个X的位置。就是通过设置一个函数,使得它等价于,把Xi做一个变换,把Xj做一个变换,随后相乘,达到的想过和这个函数一样。这就是核函数。
那么如果我们不做变换,其实就是线性核函数。
如果我们使用(x1 * x2 + 1) ^ 2, 就等价于对X 引入了2次项的特征。
也就是对原来的特征X, 都变成X的一项式,和各种2个特征相乘的2项式。
image.png
我们发现用一个函数,就可以等价于在原来的回归算法里,引入多项式特征量的效果。
那么它要解决的问题,就可使得原先线性不可分的问题,在高维上线性可分了,比如下图在一维无法线性可分。
image.png
通过引入X^2为Y,就可以分了
image.png

最后机器学习课上介绍了高斯核函数,同样也是升维。他的具体升维原理如下。
选取和样本个数一样多的地标。随后对每一个样本,去和那个每一个地标,放进高斯核函数里,算一个值。代表一个新的M维特征里的一个(M是样本个数)
那么本来一个特征就变成M个特征(和每个地标运算一次高斯核函数)。对每一个特征前面都一个系数theta,我们就是对这M个特征,找到最能分类的THETA,同时最大化我们的超平面分类的MARGIN值。这就是高斯函数做的事情。

我们再来看下这个高斯核函数有什么特征。就是离地标点越近,概率越为1.


image.png

在这个情况下,我们结合训练数据训练出最佳的theta,我们新来一个样本,我们只需要判断它和每个地标的函数运算结果,结合theta就可以知道它的分类了。

image.png

作业总的不是非常困难。就不做深入介绍了。

总结

  1. 首先你要明白SVM 在解决分类问题时,其实是要找到一个线,最大化margin
  2. 我们引入正则化参数,是允许某些点可以落进margin区域内。同时使得所有的参数和和之前的W这2部分全局最小。那么调整参数就是调整比例,起到过拟合和欠拟合的权衡
  3. 经过拉格朗日变换后,我们得到了特征的点积形式,这个形式我们可以通过一个函数来表达。这就是核函数的由来。
  4. 核函数的目标就是把特征根据函数去升维,似的低维下不可分的数据在高维下可分。
  5. 高斯核函数是把特征升到和样本数量大小维度的一种方法。
上一篇下一篇

猜你喜欢

热点阅读