机器学习-SVM支持向量机【精美排版、通俗易读】

623 阅读5分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第11天,点击查看活动详情

支持向量机

支持向量机(Support Vector Machine, SVM)是一种非常强大的监督学习算法 ,广泛应用于学术界和工业界,在学习复杂的非线性方程时提供了一种更为清晰的方法。

SVM 的优化目标

每个算法的关键都是优化目标——即代价函数的定义。

从逻辑回归引入 SVM

逻辑回归的激活函数

逻辑回归的激活函数如下(该激活函数同样也是逻辑回归的假设函数):

hθ(x)=11+eθTx=g(z)=11+ezh_{\theta}(x)=\frac{1}{1+e^{-\theta^Tx}} =g(z)=\frac{1}{1+e^{-z}}

观察上面的函数,可以得出如下结论:

  • y=1y=1,要使hθ(x)1h_\theta(x)\approx 1,则θTx0\theta^Tx\gg 0
  • y=1y=1,要使hθ(x)0h_\theta(x)\approx 0,则θTx0\theta^Tx\ll 0

逻辑回归的代价函数:

逻辑回归的代价函数为:

J(θ)=minθ1m[i=1my(i)(log(hθx(i)))+(1y(i))(log(1hθ(x(i))))]+λ2mj=1nθj2J(\theta)=min_{\theta}\frac{1}{m}[\sum^{m}_{i=1}y^{(i)}(-log(h_\theta{x^{(i)})})+(1-y^{(i)})(-log(1-h_\theta(x^{(i)})))]+\frac{\lambda}{2m}\sum^n_{j=1}{\theta^2_j}

不考虑求和和正则化,只考虑单样本的情况下,逻辑回归的代价函数为:

J(θ)=(ylog(hθ(x))+(1y)log(1hθ(x)))J(\theta)=-(ylog(h_\theta(x))+(1-y)log(1-h_\theta(x)))
  • y=1y=1(要使θTx0\theta^Tx\gg0),则代价函数为:

  • y=0y=0(要使θTx0\theta^Tx\ll0),则代价函数为:

tips:牢记一点,我们优化的目的是使得代价函数最小,y=1/0y=1/0时,θTx/0\theta^Tx\ll/\gg0才能时代价函数最小

SVM 的代价函数

SVM 的代价函数为:

J(θ)=minθC[i=1my(i)cost1(θTx(i))+(1y(i))(cost0(θTx(i)))]+12j=1nθj2J(\theta)=min_{\theta}C[\sum^{m}_{i=1}y^{(i)}cost_1(\theta^Tx^{(i)})+(1-y^{(i)})(cost_0(\theta^Tx^{(i)}))]+\frac{1}{2}\sum^n_{j=1}{\theta^2_j}

SVM 的代价函数,非常类似于上面逻辑回归的代价函数,做了如下改动:

  • 将左边的(ylog(hθ(x))-(ylog(h_\theta(x))替换为 cost1(θTx)cost_1(\theta^Tx),将右边(1y)log(1hθ(x))-(1-y)log(1-h_\theta(x))替换为cost0(θTx)cost_0(\theta^Tx),这两个函数图像如图(粉红线):

  • 取消了求和的常数mm,因为这并不影响代价函数求最小值
  • 将右边的λ\lambda改为左边的常数CC,这样设置参数更方便我们关注左边项的优化 tips:可以简单理解为移项,即C=1λC=\frac{1}{\lambda}

SVM 的假设函数

SVM 的假设函数并不会输出概率,而是直观地预测yy的值是等于 0 还是等于 1,如下:

hθ(x)={1θTx00θTx<0h_{\theta }(x)=\begin{cases}1&\theta^{T} x\geqslant 0\\ 0&\theta^{T} x<0\end{cases}

SVM 的决策边界

支持向量机又被看做是大间距分类器,也就是说 SVM 的决策边界是一种「大边界」,再看一下 SVM 代价函数的图像:

  • y=1y=1,要使θTx1(不仅0)\theta^Tx\geqslant1(不仅\geqslant 0)
  • y=0y=0 ,要使θTx1(不仅<0)\theta^Tx\leqslant -1(不仅<0)

可见,相比于逻辑回归分类中以 0 为界,SVM 对于分类有着更高的要求(以 1 / -1 为界),相当于在 SVM 中加入了一个安全的间距因子

举例大边界的含义

举一个例子来形象的理解一下这个「大边界」的含义,观察下面这样一个数据集:

很显然存在很多条线可以将两种样本分割开来:

但我们往往认为中间那条黑线最为合适,为什么呢?因为黑线距离两侧的正负样本,有着更大的距离,这个距离称为支持向量机的间距(margin) ,这也就是大边距的含义。

参数对 SVM 的影响

上面的例子中,为方便理解 SVM,实际上我们设置常数CC非常大(C=1λC=\frac{1}{\lambda},可以理解为λ\lambda非常小),可以实现最大间距地分离正负样本。但这样做,如果遇到了一些异常点(outlier) 的话,为保持最大间距地分离,可能我们的决策边界会受到很大的影响(黑线变粉线)。

所以不要将CC设置的太大,才能忽略掉一些异常点的影响,甚至当数据并不是线性可分的时候,也能得到更好的决策边界。

  • C 较大时,相当于λ\lambda较小,可能会导致过拟合,高方差。
  • C 较小时,相当于λ\lambda较大,可能会导致低拟合,高偏差

*大边界分类背后的数学原理

SVM 其实是一个很复杂的算法,理解 SVM 大分类背后的数学理解,才能更好的理解 SVM

内积概念的复习

数量积与向量积

我们通过向量内积的这些性质来尝试理解支持向量机中的优化目标函数

决策边界的数学原理

为方便理解,我们先假设数据集线性可分,即使得:

s.t{θTx1y(i)=1θTx1y(i)=0s.t\begin{cases}\theta^{T} x\geqslant 1&y^{(i)}=1\\ \theta^{T} x\leqslant -1&y^{(i)}=0\end{cases}

这样的话,代价函数左边的项就直接变为了 0,同时我们暂且不考虑θ0\theta_0(假设为 0),这时的代价函数变为:

minθ12j=1nθj2min_\theta\frac{1}{2}\sum^n_{j=1}\theta^2_j

如果数据集是二维的,则有:

minθ12j=1nθj2=12(θ12+θ22)2=12θ2min_\theta\frac{1}{2}\sum^n_{j=1}\theta^2_j=\frac{1}{2}\left( \sqrt{\theta^{2}_{1} +\theta^{2}_{2} } \right)^2 =\frac{1}{2}||\theta||^2

tips:θ2||\theta||^2θ\thetaL2 范数

通过上面内积的知识,可知:

θTx(i)=θ1x1(i)+θ2x2(i)=p(i)θ\theta^{T}x^{(i)}=\theta_1x^{(i)}_1+\theta_2x^{(i)}_2=p^{(i)}||\theta||

将其写入我们的优化目标函数:

s.t{p(i)θ1y(i)=1p(i)θ1y(i)=0s.t\begin{cases}p^{(i)}||\theta||\leqslant1&y^{(i)}=1\\ p^{(i)}||\theta||\leqslant-1&y^{(i)}=0\end{cases}

大间距分类的原理

tips:SVM 决策边界超平面的公式为θTx=0\theta^Tx=0,所以向量θ\theta与超平面正交(垂直)。

  • ⭕️ 和 ❌ 都看成是向量,实际上我们在找一个特殊的θ\theta向量,使得所有 ⭕️ 向量点乘θ\theta向量都<0<0;使得所有 ❌ 点乘θ\theta向量都>0>0(假设函数)。
  • 找到θ\theta向量后,当一个向量点乘θ\theta等于 0,也就是决策边界(实际上从数学角度来也必然是这样:ax+by=0(a,b)垂直ax+by=0与(a,b)垂直)。
  • SVM 更希望θTx\theta^Tx大于/小于某个常数(比如 1/-1 而不是 0 ),这样 ⭕️ 和 ❌ 在θ\theta向量上的投影就会更大,离决策边界更远,从而实现大间距分类。
  • 代价函数要求最小的θ\theta的范数(即长度),只有在最佳分类的情况下才能使得θ\theta的范数最小。
  • θ0=0\theta_0=0 只不过决定了决策边界通过原点,即使θ00\theta_0\neq 0,以上结论依然可以推广。

tips:SVM 利用约束条件,1.θTx=0\theta^Tx=0(前提条件) 2.minθ12θ2min_\theta\frac{1}{2}||\theta||^2(决定因素) 3. p 与模长关系(控制参数),来保持边界与样本的距离使函数更加合理。

核函数

其他学习资源

blog.csdn.net/v_JULY_v/ar…