机器学习推导+python实现(八):线性可分支持向量机

写在开头:今天提前开始一下线性可分支持向量机的内容,因为最近在准备找实习,所以先来温习一下支持向量机方面的,后面再支持向量机完了后,可能会优先更新XGboost的内容,然后中间缺少的章节会在后面进行补充。本节代码的实现部分参考机器学习实验室

内容安排

线性回归(一)、逻辑回归(二)、K近邻(三)、决策树值ID3(四)、CART(五)、感知机(六)、神经网络(七)、线性可分支持向量机(八)、线性支持向量机(九)、线性不可分支持向量机(十)、朴素贝叶斯(十一)、Lasso回归(十二)、Ridge岭回归(十三)等。
其实很大一部分都是在做回归,比如逻辑回归试图通过一个多元回归的线性关系来拟合出我们的类别,K近邻试图通过样本点周围最近的k个点的类别来判断自身类别,决策树可以通过特征分类规则类模型进行判断等等还有很多其他的,在这里的支持向量机则基于支持向量来进行分类,其实分类的本质就是在于找出不同类别独有的特点,然后进行归类(鄙人粗鄙的见解)。支持向量机有线性可分支持向量机、线性支持向量机和非线性支持向量机。今天主要介绍的就是线性可分支持向量机,那一起开始吧。

1.线性可分支持向量机的数学推导

我们这里的讲解以理解为主,可能存在细节的错误,详细的内容可以查看参考文献《统计学习方法(第二版)》。在这里我们调整一下内容的顺序和精细程度,并在分享过程中引入问题来加以说明我对于此部分的理解。好了让我们开始吧。
Q1:线性可分支持向量机能得到什么?
类似于逻辑回归可以得到一个函数来拟合特征,K近邻只是用于搜索没有函数式。那么对于线性可分支持向量机来说,其学习目标就是在空间中找到一个分离超平面,能将实例分到不同的类。线性可分支持向量机能通过给定的线性可分数据,通过间隔最大化或等价地求解相应的凸二次规划问题学习得到分离超平面
w ∗ ⋅ x + b ∗ = 0 w^*\cdot x+b^*=0 wx+b=0以及类似于sigmoid的分类函数,这里采用的是符号函数sign,
f ( x ) = s i g n ( w ∗ ⋅ x + b ∗ ) f(x)=sign(w^*\cdot x+b^*) f(x)=sign(wx+b)作为最后类别的输出,然后我们将超平面法向量方向的样本设置为正例,反之为负例(这里都是使用的是向量)
Q2:什么是间隔最大化?
这是求解线性可分的第一个关键知识,下面简单介绍一下间隔,间隔又分为函数间隔和几何间隔,选择几何间隔最大的分离超平面为我们最终的分离超平面。那么如何得到几何间隔呢?几何间隔是改进的函数间隔,那么先看一下函数间隔。
γ ^ = min ⁡ i = 1 , … , N γ i ^ = min ⁡ i = 1 , … , N y i ( w ⋅ x i + b ) \hat{\gamma}={\underset {i=1,\dots,N}{\operatorname {min} }}\hat{\gamma_i}={\underset {i=1,\dots,N}{\operatorname {min} }}y_i(w\cdot x_i+b) γ^=i=1,,Nminγi^=i=1,,Nminyi(wxi+b)函数间隔的理解,可以看作样本点多于超平面的距离,然后乘上类别 y i y_i yi,这样就分类错误的点得到的间隔是负数,分类正确的点得到的间隔是正数。所以函数间隔应该是正得越大越好,确信度很高,两个类别离得够远。然后从为了衡量某个分离超平面的确信度就选择他最小的那个函数间隔,有点像木桶原理,选择最短的来衡量能力。
那么几何间隔又是个啥呢?几何间隔是对函数间隔的约束,因为函数间隔存在着 w , b w,b w,b同比例变化会导致几何间隔 γ ^ \hat\gamma γ^成倍增加但集合超平面 w ⋅ x + b = 0 w\cdot x+b=0 wx+b=0不变。因此几何间隔的的公式为:
γ = min ⁡ i = 1 , … , N γ i = min ⁡ i = 1 , … , N y i ( w ∣ ∣ w ∣ ∣ ⋅ x i + b ∣ ∣ w ∣ ∣ ) = γ ^ ∣ ∣ w ∣ ∣ \gamma={\underset {i=1,\dots,N}{\operatorname {min} }}\gamma_i={\underset {i=1,\dots,N}{\operatorname {min} }}y_i(\frac{w}{||w||}\cdot x_i+\frac{b}{||w||})=\frac{\hat{\gamma}}{||w||} γ=i=1,,Nminγi=i=1,,Nminyi(wwxi+wb)=wγ^
那么定义每个分离超平面的最小几何间隔即为该超平面的间隔。然后之前我们说过,间隔越大说明分类的确信度越高,两类数据相隔就越远,所以来找到划分训练数据集正确的最大间隔分离超平面,表示最棒的超平面。
于是我们得到基于间隔最大化,求解分离超平面的目标函数和约束条件。
max ⁡ w , b γ s . t .      y i ( w ∣ ∣ w ∣ ∣ ⋅ x i + b ∣ ∣ w ∣ ∣ ) ⩾ γ , i = 1 , 2 , … , N \begin{aligned} {\underset {w,b}{\operatorname {max} }}&\quad\gamma \\ s.t.&\ \ \ \ y_i(\frac{w}{||w||}\cdot x_i+\frac{b}{||w||})\geqslant\gamma,i=1,2,\dots,N \end{aligned} w,bmaxs.t.γ    yi(wwxi+wb)γ,i=1,2,,N然后利用 γ = γ ^ ∣ ∣ w ∣ ∣ \gamma=\frac{\hat{\gamma}}{||w||} γ=wγ^ γ \gamma γ换做 γ i ^ \hat {\gamma_i} γi^
max ⁡ w , b γ ^ ∣ ∣ w ∣ ∣ s . t .      y i ( w ⋅ x i + b ) ⩾ γ ^ , i = 1 , 2 , … , N \begin{aligned} {\underset {w,b}{\operatorname {max} }}&\quad\frac{\hat{\gamma}}{||w||} \\ s.t.&\ \ \ \ y_i(w\cdot x_i+b)\geqslant\hat \gamma,i=1,2,\dots,N \end{aligned} w,bm<

你可能感兴趣的:(机器学习手推,python,机器学习)