本文主要是介绍机器学习之支持向量机(手推公式版),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 前言
- 1. 间隔与支持向量
- 2. 函数方程描述
- 3. 参数求解
- 3.1 拉格朗日乘数
- 3.2 拉格朗日对偶函数
前言
支持向量机 ( S u p p o r t (Support (Support V e c t o r Vector Vector M a c h i n e , S V M ) Machine,SVM) Machine,SVM)源于统计学习理论,是一种二分类模型,是机器学习中获得关注最多的算法,没错,是“最”,没有之一。
1. 间隔与支持向量
支持向量机分类方法的核心思想就是在特征空间中找出一个超平面作为决策边界,来将样本划分为正类和负类,并使模型在未知数据集上的泛化误差尽可能的小。
超平面:在几何中,超平面是一个空间的子空间,它是维度比所在空间小一维的空间。 如果数据空间本身是三维的,则其超平面是二维平面,而如果数据空间本身是二维的,则其超平面是一维的直线。
比如上面这组数据,我们很容易就可以画出一条线将上面的数据划分为两个类别,而且其误差为零。对于一个数据集来说,这样误差为0的超平面可能有很多个,比如下面这样:
但这样的模型不能保证泛化性能很好,即无法保证这个超平面在未知数据集上也表现很优秀。因此我们引入了一个名词------间隔
( m a r g i n ) (margin) (margin),就是将我们找到的超平面向两边进行平移,直到碰到离这个超平面最近的样本点后停下,形成两个新的超平面,这两个超平面的距离就叫“间隔”,超平面处于这个“间隔”的中间位置,即我们选择的超平面到平移后的两个新的超平面之间的距离相等。而距离超平面最近的几个样本点称为支持向量
( s u p p o r t (support (support v e c t o r ) vector) vector)。
比较一下上面两个图,直观上来看,都能够将样本换分为了两类,但如果再往里面加入一些噪声呢,很明显,蓝色的那个超平面对局部扰动的容忍性最好,因为它“够宽”,如果想象不出来,看下面这个例子:
很明显,引入了一些新的数据样本后, B 1 B_1 B1这个超平面误差依旧为0,分类结果是最鲁棒的, B 2 B_2 B2这个超平面因为间隔较小,所以出现了分类误差。因此我们在寻找超平面时,希望间隔越大越好。
以上就是支持向量机,即通过找出间隔最大的超平面,来对数据进行分类
的分类器。
支持向量机的模型由简至繁可以分为下面三种:
∙ \bullet ∙ 线性可分支持向量机
∙ \bullet ∙ 线性支持向量机
∙ \bullet ∙ 非线性支持向量机
当训练数据线性可分时,通过硬间隔最大化 ( h a r d (hard (hard m a r g i n margin margin m a x i m i z a t i o n ) maximization) maximization),学习一个线性的分类器,即线性可分支持向量机,又称为硬间隔支持向量机;当训练数据集近似线性可分时,通过软间隔最大化 ( s o f t (soft (soft m a r g i n margin margin m a x i m i z a t i o n ) maximization) maximization),也学习一个线性的分类器,即线性支持向量机,又称为软间隔支持向量机;当训练数据集线性不可分时,通过使用核技巧 ( k e r n e l (kernel (kernel t r i c k ) trick) trick)及软间隔最大化,学习非线性支持向量机。
简单是复杂的基础,也是复杂的特殊情况嘛
2. 函数方程描述
假设给定数据集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , … , ( x n , y n ) } , y i ∈ { − 1 , + 1 } D=\{(x_1,y_1),(x_2,y_2),\dots,(x_n,y_n)\},y_i \in \{-1,+1\} D={(x1,y1),(x2,y2),…,(xn,yn)},yi∈{−1,+1},在上述在样本空间中,任意一条线都可以表示为: w T x + b = 0 \bm w^T\bm x+b=0 wTx+b=0 其中 w = ( w 1 , w 2 , … , w d ) T \bm w=(w_1, w_2,\dots,w_d)^T w=(w1,w2,…,wd)T为法向量,决定了超平面的方向; b b b为位移项,决定了超平面与原点之间的距离。很显然,超平面也可以被法向量 w \bm w w和位移 b b b确定。
为了推导和计算简便,我们做出以下规定:
在超平面以上的点都标记为正,超平面以下的点都标记为负,即对于 ( x i , y i ) ∈ D (x_i,y_i)\in D (xi,yi)∈D,若 y i = + 1 y_i=+1 yi=+1,则有 w T x i + b > 0 \bm w^T\bm x_i+b>0 wTxi+b>0;若 y i = − 1 y_i=-1 yi=−1,则有 w T x i + b < 0 \bm w^T\bm x_i+b<0 wTxi+b<0,表达式如下: { w T x i + b ≥ + 1 , y i = + 1 w T x i + b ≤ − 1 , y i = − 1 \begin{cases} \bm w^T\bm x_i+b\geq+1, & y_i=+1\\ \\ \bm w^T\bm x_i+b\leq-1, & y_i=-1 \end{cases} ⎩ ⎨ ⎧wTxi+b≥+1,wTxi+b≤−1,yi=+1yi=−1 其中,+1和-1表示两条平行于超平面的虚线到超平面的相对距离
。
那么,样本空间中任意点 x \bm x x到超平面的距离可以写为: r = ∣ w T + b ∣ ∣ ∣ w ∣ ∣ r=\frac {|\bm w^T+b|} {||\bm w||} r=∣∣w∣∣∣wT+b∣ 由此也可以求得两个不同标签的支持向量到超平面的距离之和,也就是间隔,可以表示为: γ = 2 ∣ ∣ w ∣ ∣ \gamma=\frac {2} {||\bm w||} γ=∣∣w∣∣2 我们的目标就是找到最大间隔的超平面,也就是要满足如下约束的参数 w \bm w w和 b b b,使得 γ \gamma γ最大,即 m a x w , b 2 ∣ ∣ w ∣ ∣ s u b j e c t t o y i ( w T x i + b ) ≥ 1 , i = 1 , 2 , … , n \underset {\bm w,b} {max} \frac {2} {||\bm w||} \\[3pt] subject\ to \ y_i(\bm w^T\bm x_i+b)\geq1,i=1,2,\dots,n w,bmax∣∣w∣∣2subject to yi(wTxi+b)≥1,i=1,2,…,n 很显然,最大化间隔 γ \gamma γ只需要最小化 ∣ ∣ w ∣ ∣ ||\bm w|| ∣∣w∣∣即可,所以约束变成如下: m i n w , b 1 2 ∣ ∣ w ∣ ∣ 2 s u b j e c t t o y i ( w T x i + b ) ≥ 1 , i = 1 , 2 , … , n \underset {\bm w,b} {min} \frac {1} {2}||\bm w||^2 \\[3pt] subject\ to \ y_i(\bm w^T\bm x_i+b)\geq1,i=1,2,\dots,n w,bmin21∣∣w∣∣2subject to yi(wTxi+b)≥1,i=1,2,…,n
实际上就是取一下倒数,那为啥又加上平方了呢,前面其实说过了, L 2 L_2 L2范式嘛,加个平方是为了消除开平方的操作,简化计算过程。
3. 参数求解
求解带有约束的最优化问题,一般常用的就是引入拉格朗日乘子 λ \lambda λ构造拉格朗日函数。其实这属于多元函数的条件极值问题,可参考高数下册书中多元函数的条件极值与拉格朗日乘数法 ( s t a n d a r d L a g r a n g e m u l t i p l i e r m e t h o d ) (standard\ Lagrange\ multiplier\ method) (standard Lagrange multiplier method),下面简单回顾一下。
3.1 拉格朗日乘数
要找函数 z = f ( x , y ) z=f(x,y) z=f(x,y)在附加条件 φ ( x , y ) = 0 \varphi(x,y)=0 φ(x,y)=0下的可能极值点,可以先作拉格朗日函数 L ( x , y ) = f ( x , y ) + λ φ ( x , y ) L(x,y)=f(x,y)+\lambda \varphi(x,y) L(x,y)=f(x,y)+λφ(x,y) 其中, λ \lambda λ为参数,求其对 x x x、 y y y和 λ \lambda λ的一阶偏导数,并使之为零,然后联立方程: { f x ( x , y ) + λ φ x ( x , y ) = 0 f y ( x , y ) + λ φ y ( x , y ) = 0 φ ( x , y ) = 0 \begin{cases} f_x(x,y)+\lambda \varphi_x(x,y)=0\\ \\ f_y(x,y)+\lambda \varphi_y(x,y)=0\\ \\ \varphi(x,y)=0\\ \end{cases} ⎩ ⎨ ⎧fx(x,y)+λφx(x,y)=0fy(x,y)+λφy(x,y)=0φ(x,y)=0 有这个方程组解出 x x x、 y y y和 λ \lambda λ,这样求得的 ( x , y ) (x,y) (x,y)就是函数 f ( x , y ) f(x,y) f(x,y)在附加条件 φ ( x , y ) = 0 \varphi(x,y)=0 φ(x,y)=0下的可能极值点。
如果函数的自变量多于两个,且附加条件多于一个,比如,要求函数 u = f ( x , y , z , t ) u=f(x,y,z,t) u=f(x,y,z,t)在附加条件 φ ( x , y , z , t ) = 0 ψ ( x , y , z , t ) = 0 \varphi (x,y,z,t)=0 \\[3pt] \psi (x,y,z,t)=0 φ(x,y,z,t)=0ψ(x,y,z,t)=0下的极值,可以先作拉格朗日函数 L ( x , y , z , t ) = f ( x , y , z , t ) + λ f ( x , y , z , t ) + μ f ( x , y , z , t ) L(x,y,z,t)=f(x,y,z,t)+\lambda f(x,y,z,t)+\mu f(x,y,z,t) L(x,y,z,t)=f(x,y,z,t)+λf(x,y,z,t)+μf(x,y,z,t) 其中, λ , μ \lambda,\mu λ,μ为参数,求其对 x x x、 y y y、 z z z、 t t t、 λ \lambda λ和 μ \mu μ的一阶偏导数,并使之为零,然后联立方程求解出 ( x , y , z , t ) (x,y,z,t) (x,y,z,t)。
来,看一个小题:
求函数 u = x 2 + y 2 + z 2 u=x^2+y^2+z^2 u=x2+y2+z2在约束条件 z = x 2 + y 2 z=x^2+y^2 z=x2+y2和 x + y + z = 4 x+y+z=4 x+y+z=4下的最大值与最小值。
3.2 拉格朗日对偶函数
凸优化问题:函数本身是二次的 ( q u a d r a t i c ) (quadratic) (quadratic),函数的约束条件在其参数下是线性的,这样的函数称为凸优化问题。
首先构造支持向量机的拉格朗日函数,也就是损失函数: L ( w , b , α ) = 1 2 ∣ ∣ w ∣ ∣ 2 + ∑ i = 1 m α i ( 1 − y i ( w T x i + b ) ) ( α i ≥ 0 ) L(\bm w,b,\bm \alpha)=\frac {1} {2}||\bm w||^2+\sum_{i=1}^m\alpha_i\bigg(1-y_i\big(\bm w^T\bm x_i+b\big)\bigg)\ (\alpha_i \geq0) L(w,b,α)=21∣∣w∣∣2+i=1∑mαi(1−yi(wTxi+b)) (αi≥0) 其中, α = ( α 1 , α 2 , … , α n ) T \alpha=(\alpha_1,\alpha_2,\dots,\alpha_n)^T α=(α1,α2,…,αn)T。
可以看出,拉格朗日函数分为两部分:第一部分和我们原始的损失函数一样,第二部分表达的是我们的约束条件。我们希望,构造的损失函数不仅能够代表我们原有的损失函数和约束条件,最好还能够表示我们想要最小化损失函数来求解 w \bm w w和 b b b的意图,所以我们要先以 α \alpha α为参数,求解 L ( w , b , α ) L(\bm w,b,\alpha) L(w,b,α)的最大值,再以 w \bm w w和 b b b为参数,求解 L ( w , b , α ) L(\bm w,b,\alpha) L(w,b,α)的最小值。因此,我们的目标可以写作如下形式: m i n w , b m a x α i ≥ 0 L ( w , b , α ) ( α i ≥ 0 ) \underset {\bm w,b} {min}\ \underset {\alpha_i \geq0} {max} \ L(\bm w,b,\alpha)\ (\alpha_i \geq0) w,bmin αi≥0max L(w,b,α) (αi≥0)
这篇关于机器学习之支持向量机(手推公式版)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!