Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update 周志华《Machine Learning》学习笔记(7)--支持向量机.md #26

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 10 additions & 10 deletions 周志华《Machine Learning》学习笔记(7)--支持向量机.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@

上篇主要介绍了神经网络。首先从生物学神经元出发,引出了它的数学抽象模型--MP神经元以及由两层神经元组成的感知机模型,并基于梯度下降的方法描述了感知机模型的权值调整规则。由于简单的感知机不能处理线性不可分的情形,因此接着引入了含隐层的前馈型神经网络,BP神经网络则是其中最为成功的一种学习方法,它使用误差逆传播的方法来逐层调节连接权。最后简单介绍了局部/全局最小以及目前十分火热的深度学习的概念。本篇围绕的核心则是曾经一度取代过神经网络的另一种监督学习算法--**支持向量机**(Support Vector Machine),简称**SVM**。

#**6、支持向量机**
# **6、支持向量机**

支持向量机是一种经典的二分类模型,基本模型定义为特征空间中最大间隔的线性分类器,其学习的优化目标便是间隔最大化,因此支持向量机本身可以转化为一个凸二次规划求解的问题。

##**6.1 函数间隔与几何间隔**
## **6.1 函数间隔与几何间隔**

对于二分类学习,假设现在的数据是线性可分的,这时分类学习最基本的想法就是找到一个合适的超平面,该超平面能够将不同类别的样本分开,类似二维平面使用ax+by+c=0来表示,超平面实际上表示的就是高维的平面,如下图所示:

Expand All @@ -16,7 +16,7 @@

![2.png](https://i.loli.net/2018/10/17/5bc72f6a06d5a.png)

###**6.1.1 函数间隔**
### **6.1.1 函数间隔**

在超平面w'x+b=0确定的情况下,|w'x*+b|能够代表点x*距离超平面的远近,易知:当w'x*+b>0时,表示x*在超平面的一侧(正类,类标为1),而当w'x*+b<0时,则表示x*在超平面的另外一侧(负类,类别为-1),因此(w'x*+b)y* 的正负性恰能表示数据点x*是否被分类正确。于是便引出了**函数间隔**的定义(functional margin):

Expand All @@ -28,7 +28,7 @@

可以看出:这样定义的函数间隔在处理SVM上会有问题,当超平面的两个参数w和b同比例改变时,函数间隔也会跟着改变,但是实际上超平面还是原来的超平面,并没有变化。例如:w1x1+w2x2+w3x3+b=0其实等价于2w1x1+2w2x2+2w3x3+2b=0,但计算的函数间隔却翻了一倍。从而引出了能真正度量点到超平面距离的概念--几何间隔(geometrical margin)。

###**6.1.2 几何间隔**
### **6.1.2 几何间隔**

**几何间隔**代表的则是数据点到超平面的真实距离,对于超平面w'x+b=0,w代表的是该超平面的法向量,设x*为超平面外一点x在法向量w方向上的投影点,x与超平面的距离为r,则有x*=x-r(w/||w||),又x*在超平面上,即w'x*+b=0,代入即可得:

Expand All @@ -40,7 +40,7 @@

从上述函数间隔与几何间隔的定义可以看出:实质上函数间隔就是|w'x+b|,而几何间隔就是点到超平面的距离。

##**6.2 最大间隔与支持向量**
## **6.2 最大间隔与支持向量**

通过前面的分析可知:函数间隔不适合用来最大化间隔,因此这里我们要找的最大间隔指的是几何间隔,于是最大间隔分类器的目标函数定义为:

Expand All @@ -54,7 +54,7 @@

![9.png](https://i.loli.net/2018/10/17/5bc72f6a838c4.png)

##**6.3 从原始优化问题到对偶问题**
## **6.3 从原始优化问题到对偶问题**

对于上述得到的目标函数,求1/||w||的最大值相当于求||w||^2的最小值,因此很容易将原来的目标函数转化为:

Expand Down Expand Up @@ -103,7 +103,7 @@

![19.png](https://i.loli.net/2018/10/17/5bc72f933c947.png)

##**6.4 核函数**
## **6.4 核函数**

由于上述的超平面只能解决线性可分的问题,对于线性不可分的问题,例如:异或问题,我们需要使用核函数将其进行推广。一般地,解决线性不可分问题时,常常采用**映射**的方式,将低维原始空间映射到高维特征空间,使得数据集在高维空间中变得线性可分,从而再使用线性学习器分类。如果原始空间为有限维,即属性数有限,那么总是存在一个高维特征空间使得样本线性可分。若∅代表一个映射,则在特征空间中的划分函数变为:

Expand All @@ -116,7 +116,7 @@
![21.png](https://i.loli.net/2018/10/17/5bc730cc68b3b.png)

(2)原分类函数变为:
![22.png](https://i.loli.net/2018/10/17/5bc730cc1b673.png)
![22.png](https://i.loli.net/2018/10/17/5bc730cc1b673.png)

求解的过程中,只涉及到了高维特征空间中的内积运算,由于特征空间的维数可能会非常大,例如:若原始空间为二维,映射后的特征空间为5维,若原始空间为三维,映射后的特征空间将是19维,之后甚至可能出现无穷维,根本无法进行内积运算了,此时便引出了**核函数**(Kernel)的概念。

Expand All @@ -140,7 +140,7 @@

![27.png](https://i.loli.net/2018/10/17/5bc730ccc541a.png)

##**6.5 软间隔支持向量机**
## **6.5 软间隔支持向量机**

前面的讨论中,我们主要解决了两个问题:当数据线性可分时,直接使用最大间隔的超平面划分;当数据线性不可分时,则通过核函数将数据映射到高维特征空间,使之线性可分。然而在现实问题中,对于某些情形还是很难处理,例如数据中有**噪声**的情形,噪声数据(**outlier**)本身就偏离了正常位置,但是在前面的SVM模型中,我们要求所有的样本数据都必须满足约束,如果不要这些噪声数据还好,当加入这些outlier后导致划分超平面被挤歪了,如下图所示,对支持向量机的泛化性能造成很大的影响。

Expand Down Expand Up @@ -177,4 +177,4 @@

将“软间隔”下产生的对偶问题与原对偶问题对比可以发现:新的对偶问题只是约束条件中的α多出了一个上限C,其它的完全相同,因此在引入核函数处理线性不可分问题时,便能使用与“硬间隔”支持向量机完全相同的方法。

----在此SVM就介绍完毕。
----在此SVM就介绍完毕。