经典机器学习系列(八)【支持向量机】
文章目录
- SVM涉及的相关概念
- 分类任务
- 分类任务进一步理解
- SVM算法
- SVM所要解决的问题
- 函数间隔
- 几何间隔
- 凸优化基础
- 拉格朗日对偶性 – 原问题
- 拉格朗日对偶性 – 对偶问题
- 原问题与对偶问题之间的关系
- 线性可分支持向量机
- 线性可分SVM
- 硬间隔最大化
- 基于对偶的线性可分SVM学习算法
- 线性不可分支持向量机
- 线性不可分
- 软间隔最大化
- 基于对偶的学习算法
- 软间隔支持向量
- 非线性支持向量机
- 非线性数据
- Kernel核函数方法
- 核函数的本质
- 基于核函数的非线性支持向量机
- 最小二乘支持向量机
- LSSVM概述
- 在Python中使用支持向量机分类算法
- 参考
支持向量机(Support Vector Machine
)是Cortes
和Vapnik
于1995
年首先提出的 ,它在解决小样本、非线性及高维模式识别中表现出许多特有的优势,并能够 推广应用到函数拟合等其他机器学习问题中。
1963
年,Vapnik
在解决模式识别问题时提出了支持向量方法,这种方法从训练集中选择一 组特征子集,使得对特征子集的划分等价于对整个数据集的划分,这组特征子集就被称为 支持向量(Support Vector
,SV);
1971
年,Kimeldorf
提出使用线性不等约束重新构 造SV
的核空间,解决了一部分线性不可分问题;1990
年,Grace
、Boser
和Vapnik
等人开始对SVM
进行研究; 1995
年,Vapnik
正式提出统计学习理论。
SVM涉及的相关概念
支持向量机和线性分类器(如逻辑回归)都是线性模型。虽然SVM
是线性模型,但是它的求解过程要比线性模型困难不少。
- 它是一种最大间隔的线性分类器,它只会考虑在
decision bound
比较近的这些点,而在逻辑回归问题中,即使离决策边界很远,它还是会产生一个loss function
。 - 通过核函数可以做非线性的问题。
对于分类问题,分开两类数据其实有很多种解法,那哪一种解法是最好的呢?也就是说SVM
是从线性可分情况下的最优分类面发展而来,最优分类面就是要求分类线不但能将 两类正确分开,且使分类间隔最大(分类间隔最大能够使得算法在测试数据集上取得较好效果,或者说数据本身存在噪声,较大的分类间隔能够取得较好效果)。
SVM
考虑寻找一个满足分类要求的超平面,并 且使训练集中的点距离分类面尽可能的远,也 就是寻找一个分类面使它两侧的空白区域 (margin
)最大。这与逻辑回归算法不一样,在逻辑回归算法中所有的点都会影响分类边界,而在SVM
算法中不会,它更多考虑的是支持向量。
过两类样本中离分类面最近的点且平行于最 优分类面的超平面上H1H_{1}H1,H2H_{2}H2的训练样本就叫 做支持向量。
分类任务
分类任务就是确定对象属于哪个预定义的目标类。分类任务的输入数据是记录的集合,每条记录也称为实例或样例,用元组(x,yx, yx,y) 表示,其中 xxx 是属性的 集合,yyy 是类标记(也称目标属性)。在回归模型中,目标属性值是连续的; 而在分类模型中,目标属性是离散的。
考虑二分类任务,其目标属性为y∈{0,1}y \in \{0,1\}y∈{0,1},而线性回归模型参数的预测值z=wTx+bz=w^{T}x+bz=wTx+b是实值,于是我们需要将实值zzz通过Sigmoid
函数转换为0
或1
。Sigmoid
函数定义如下:
Logistic回归:目的是从特征中学习出一个0/1
分类模型,这个模型是将特征的线性组合作为自变量,由于自变量的取值范围是(−∞,+∞-\infty,+\infty−∞,+∞)。因此使用Sigmoid
函数将自变量映射到(0,1)上,映射后的值被认为是属于y=1y=1y=1的概率。假设函数为:
hθ(x)=g(θTx)=11+e−θTxh_{\theta}(x)=g\left(\theta^{T} x\right)=\frac{1}{1+e^{-\theta^{T} x}}hθ(x)=g(θTx)=1+e−θTx1
根据Sigmoid
函数的特性,假设:
p(y=1∣x;θ)=hθ(x)p(y=1|x;\theta)=h_{\theta}(x) p(y=1∣x;θ)=hθ(x)
p(y=0∣x;θ)=1−hθ(x)p(y=0|x;\theta)=1-h_{\theta}(x) p(y=0∣x;θ)=1−hθ(x)
上式表示,已知样本xxx和参数θ\thetaθ的情况下,样本xxx属于正样本(y=1y=1y=1)和负样本(y=0y=0y=0)的条件概率:若hθ(x)>0.5h_{\theta}(x) > 0.5hθ(x)>0.5则属于正样本,反之属于负样本。当然在实际操作过程中你可以把这个值设置地大一点,使得在测试过程中效果更好。
分类任务进一步理解
从上面可以看出,hθ(x)h_{\theta}(x)hθ(x)只和θTx\theta^{T}xθTx有关,θTx>0\theta^{T}x > 0θTx>0,那么hθ(x)>0.5h_{\theta}(x) > 0.5hθ(x)>0.5,g(z)g(z)g(z)只是用来映射的,真实的类别决定权在于θTx\theta^{T}xθTx。当 θTx>>0\theta^{T}x >> 0θTx>>0时,hθ(x)h_{\theta}(x)hθ(x)趋于1,反之趋于0。如果我们只从θTx\theta^{T}xθTx出发,那么模型应该尽可能的让训练数据中y=1y=1y=1的特征θTx>>0\theta^{T}x >> 0θTx>>0,而y=0y=0y=0的特征θTx<<0\theta^{T}x << 0θTx<<0。
因此Logistic
回归就是要学习得到参数θ\thetaθ,使得正例的特征远远大于0,负例的特征远远小于0,而且要在全部训练数据上达到这个目标。
将目标属性y∈{0,1}y \in \{0,1\}y∈{0,1}替换为y∈{−1,1}y \in \{-1,1\}y∈{−1,1},再将θTx\theta^{T}xθTx改写为wTx+bw^{T}x+bwTx+b,可以看出:线性分类函数跟Logistic
回归的形式化表示hθ(x)=g(θTx)=g(wTx+b)h_{\theta}(x)=g(\theta^{T}x)=g(w^{T}x+b)hθ(x)=g(θTx)=g(wTx+b)没有区别。将假设函数hw,b(x)=g(wTx+b)h_{w,b}(x)=g(w^{T}x+b)hw,b(x)=g(wTx+b)中的g(x)g(x)g(x)做一个简化,将其映射到y=−1y=-1y=−1和y=1y=1y=1上,映射如下:
g(z)={1,z⩾0−1,z<0g(z)=\left\{\begin{array}{ll} 1, & z \geqslant 0 \\ -1, & z<0 \end{array}\right.g(z)={1,−1,z⩾0z<0
- 线性可分数据集
需要注意的是:对于上述问题我们需要数据集是线性可分的,不然不管如何分类都找不到这样一个平面。
线性可分数据集:存在某个超平面SSS能够将数据集的正实例和负实例完全划分 到超平面的两侧,则称为线性可分数据集;否则,线性不可分。
上图中的这些数据就是线性可分的,所以可以用一条直线将这两类数据分开,二维中是一条直线,多维中就是一个超平面。
这个超平面可以用分类函数f(x)=wTx+bf(x)=w^{T}x+bf(x)=wTx+b表示,在进行分类时,将xxx代入f(x)f(x)f(x)中,f(x)=0f(x)=0f(x)=0表示数据点在超平面上;f(x)>0f(x)>0f(x)>0对应y=1y=1y=1的数据点;f(x)<0f(x) < 0f(x)<0对应y=−1y=-1y=−1的数据点。
SVM算法
SVM所要解决的问题
假定给定数据图,圆的为正类,方的为负类,要想通过一个划分超平面(这里是二维,所以是条直线)将不同类别的样本分开。从图中可以看出,能将训练样本分开的划分超平面可能有很多,但是我们应该去选择哪一个呢?
直观上,我们应该选择中间红色的那个,因为它对于 训练样本局部扰动的“容忍”性最好;
比如,训练集外的样本可能比图中的样本更接近两类 的划分超平面,这将使许多划分超平面出现错误,而 红色的超平面受到的影响是最小的,也就是说,这个 划分超平面的分类结果是最鲁棒的,对未知样本的泛 化能力最强。
在所有的划分超平面中,有一个平面是最好的,它可以尽可能地让所有的样本点都离该划分 超平面最远,这就是SVM
要做的。
函数间隔
有三个实例A、B、CA、B、CA、B、C均在划分超平面的正类一侧,点AAA举例超平面较远,若预测为正类,叫比较确信预测是正确的;点CCC距离超平面较近,若预测为正类就不那么确信了;点BBB介于AAA、CCC之间,预测其为正类的确信度也在AAA、CCC之间。
一般来说,一个点距离超平面的远近可以相对地表示分类预测的确信程度。
可以看出:当一个点xxx被正确预测时,那么wTx+bw^{T}x+bwTx+b的符号与类标记yyy的符号相同,因而所以可用y(wTx+b)y(w^{T}x+b)y(wTx+b)来表示分类的正确性及确信度;
对于给定的训练数据集TTT和超平面(w,bw,bw,b):
定义超平面(w,bw,bw,b)关于样本点xix_{i}xi的函数间隔为δi=yi(wTx+b)\delta_{i}=y_{i}(w^{T}x+b)δi=yi(wTx+b)。
定义超平面(w,bw,bw,b)关于数据集TTT的函数间隔为超平面(w,bw,bw,b)关于TTT中所有样本点的函数间隔的最小值δ=min{δi,xi∈T}\delta =min\{\delta_{i},x_{i} \in T\}δ=min{δi,xi∈T}。
几何间隔
- www为平面wTx+b=0w^{T}x+b=0wTx+b=0 的法向量
取超平面任意点x′x^{\prime}x′和x′′x^{\prime \prime}x′′,满足wTx′+b=0w^{T}x^{\prime}+b=0wTx′+b=0和wTx′′+b=0w^{T}x^{\prime \prime}+b=0wTx′′+b=0,将两式相减,得到wT(x′−x′′)=0w^{T}(x^{\prime}-x^{\prime \prime})=0wT(x′−x′′)=0,由于x′−x′′x^{\prime}-x^{\prime \prime}x′−x′′表示平面上的任意向量,而向量www和它们的点乘为0,说明www是这个平面的法向量。
- 点x0x_{0}x0到超平面SSS:wTx+bw^{T}x+bwTx+b=0的距离ddd(d为正值)。即∣x0x1⃗∣=d|\vec{x_{0}x_{1}}|=d∣x0x1∣=d。
设x0x_{0}x0在平面SSS上的投影为x1x_{1}x1,则有wTx1+bw^{T}x_{1}+bwTx1+b=0;由向量x0x1⃗\vec{x_{0}x_{1}}x0x1与平面SSS的法向量www平行,即两个向量的夹角余弦等于1
,可知:
∣wx0x⃗1∣=(w1)2+(w2)2+…+(wN)2d=∥w∥d\left|w \vec{x_{0} x}_{1}\right|=\sqrt{\left(w^{1}\right)^{2}+\left(w^{2}\right)^{2}+\ldots+\left(w^{N}\right)^{2}} d=\|w\| d∣wx0x1∣=(w1)2+(w2)2+…+(wN)2d=∥w∥d
另外,直接计算其内积,可以得到:
w⋅x0x⃗1=w1(x01−x11)+w2(x02−x12)+…+wN(x0N−x1N)=w1x01+w2x02+…+wNx0N−(w1x11+w2x12+…+wNx1N)w \cdot \vec{x_{0}x}_{1}=w^{1}\left(x_{0}^{1}-x_{1}^{1}\right)+w^{2}\left(x_{0}^{2}-x_{1}^{2}\right)+\ldots+w^{N}\left(x_{0}^{N}-x_{1}^{N}\right)=w^{1} x_{0}^{1}+w^{2} x_{0}^{2}+\ldots+w^{N} x_{0}^{N}-\left(w^{1} x_{1}^{1}+w^{2} x_{1}^{2}+\ldots+w^{N} x_{1}^{N}\right)w⋅x0x1=w1(x01−x11)+w2(x02−x12)+…+wN(x0N−x1N)=w1x01+w2x02+…+wNx0N−(w1x11+w2x12+…+wNx1N)
由于有wTx+b=0w^{T}x+b=0wTx+b=0,因此上式等于:=w1x01+w2x02+…+wNx0N−(−b)=w^{1} x_{0}^{1}+w^{2} x_{0}^{2}+\ldots+w^{N} x_{0}^{N}-(-b)=w1x01+w2x02+…+wNx0N−(−b)
因此,可以等到:∥w∥d=∣w⋅x0+b∣\|w\| d=\left|w \cdot x_{0}+b\right|∥w∥d=∣w⋅x0+b∣,从而距离ddd的计算公式为:d=∣w⋅x0+b∣∥w∥d=\frac{\left|w \cdot x_{0}+b \right|}{\|w\|}d=∥w∥∣w⋅x0+b∣。
- 对于给定的训练数据集TTT和超平面(w,bw,bw,b):
定义超平面(w,bw,bw,b)关于样本点(xi,yix_{i},y_{i}xi,yi)的几何间隔公式如下,它一般是样本点到超平面的带符号的距离,当样本点被超平面正确分类时,就是样本点到超平面的距离(将每个样本点xix_{i}xi带入距离计算公式 d=∣w⋅x0+b∣∥w∥d=\frac{\left|w \cdot x_{0}+b \right|}{\|w\|}d=∥w∥∣w⋅x0+b∣)。
γi=yi(w∥w∥⋅xi+b∥w∥)\gamma_{i}=y_{i}\left(\frac{w}{\|w\|} \cdot x_{i}+\frac{b}{\|w\|}\right)γi=yi(∥w∥w⋅xi+∥w∥b)
定义超平面(w,bw,bw,b)关于数据集TTT的几何间隔为超平面(w,bw,bw,b) 关于TTT中所有样本点(xi,yix_{i},y_{i}xi,yi)的几何间隔的最小值 γ=min{γi,(xi,yi)∈T}\gamma=\min \left\{\gamma_{i},\left(x_{i}, y_{i}\right) \in T\right\}γ=min{γi,(xi,yi)∈T},表示为距离超平面距离最小的那个样本。此时相当于能够找到支持向量所对应的样本,通过调整参数www让其几何间隔最大,就是SVM
所要做的事情。
几何间隔与函数间隔的关系为: γ=δ/∥w∥\gamma=\delta /\|w\|γ=δ/∥w∥。
如果超平面的参数www和bbb成比例的改变(超平面没有变),函数间隔也按此比例改变, 但是几何间隔不变。
支持向量的函数间隔为1,SVM
的优化目标为:
maxω,b1∥w∥(non-convex objective) s.t. y(i)(w⊤x(i)+b)≥1,i=1,…,m\begin{aligned} \max _{\omega, b} & \frac{1}{\|w\|} \quad \text { (non-convex objective) } \\ & \text { s.t. } y^{(i)}\left(w^{\top} x^{(i)}+b\right) \geq 1, \quad i=1, \ldots, m \end{aligned}ω,bmax∥w∥1 (non-convex objective) s.t. y(i)(w⊤x(i)+b)≥1,i=1,…,m
约束条件表示的是最大化的一定是支持向量。要求解上述问题我们需要一定的凸优化基础,接下来简要介绍一下所需数学知识部分。
凸优化基础
拉格朗日对偶性 – 原问题
假设f(x)f(x)f(x),ci(x)c_{i}(x)ci(x),hj(x)h_{j}(x)hj(x)是定义在RnR^{n}Rn上的连续可微函数,称以下的约束最优化问题 为原问题:
minx∈Rnf(x)s.t.ci(x)≤0,i=1,2,⋯,khj(x)=0,j=1,2,⋯,l\begin{array}{ll} \min _{x \in R^{n}} & f(x) \\ \text {s.t.} & c_{i}(x) \leq 0, \quad i=1,2, \cdots, k \\ & h_{j}(x)=0, \quad j=1,2, \cdots, l \end{array}minx∈Rns.t.f(x)ci(x)≤0,i=1,2,⋯,khj(x)=0,j=1,2,⋯,l
对于上述约束化问题首先引入拉格朗日函数 ( 将等式和不等式约束融入到一个目标函数中去,从而只用一个函数表达我们的问题。):
L(x,α,β)=f(x)+∑i=1kαici(x)+∑j=1lβjhj(x)L(x, \alpha, \beta)=f(x)+\sum_{i=1}^{k} \alpha_{i} c_{i}(x)+\sum_{j=1}^{l} \beta_{j} h_{j}(x)L(x,α,β)=f(x)+i=1∑kαici(x)+j=1∑lβjhj(x)
其中,x=(x(1),x(2),⋯,x(n))T∈Rnx=\left(x^{(1)}, x^{(2)}, \cdots, x^{(n)}\right)^{T} \in R^{n}x=(x(1),x(2),⋯,x(n))T∈Rn,αi\alpha_{i}αi,βj\beta_{j}βj是拉格朗日乘子,αi≥0\alpha_{i} \geq 0αi≥0。
构建关于xxx的函数:θP(x)=maxα,β;αi≥0L(x,α,β)\theta_{P}(x)=\max _{\alpha, \beta ; \alpha_{i} \geq 0} L(x, \alpha, \beta)θP(x)=maxα,β;αi≥0L(x,α,β)。
假设给定某个违反原始问题约束条件的xxx,即存在某个iii使得ci(x)>0c_{i}(x) > 0ci(x)>0或hj(x)≠0h_{j}(x) \neq 0hj(x)=0。
若ci(x)>0c_{i}(x) > 0ci(x)>0,可令αi→+∞\alpha_{i} \rightarrow + \inftyαi→+∞,使得θP(x)=+∞\theta_{P}(x) = + \inftyθP(x)=+∞;若hi(x)≠0h_{i}(x) \neq 0hi(x)=0,可令βj\beta_{j}βj 使βjhj(x)→+∞\beta_{j}h_{j}(x) \rightarrow + \inftyβjhj(x)→+∞,使得θP(x)=+∞\theta_{P}(x) = + \inftyθP(x)=+∞。将其余αi\alpha_{i}αi,βj\beta_{j}βj均取值为0。即:
θP(x)=maxα,β;αi≥0[f(x)+∑i=1kαici(x)+∑j=1lβjhj(x)]=+∞\theta_{P}(x)=\max _{\alpha, \beta ; \alpha_{i} \geq 0}\left[f(x)+\sum_{i=1}^{k} \alpha_{i} c_{i}(x)+\sum_{j=1}^{l} \beta_{j} h_{j}(x)\right]=+\inftyθP(x)=α,β;αi≥0max[f(x)+i=1∑kαici(x)+j=1∑lβjhj(x)]=+∞
假设给定某个符合原始问题约束条件的xxx,即ci(x)≤0c_{i}(x) \leq 0ci(x)≤0 且 hj(x)=0h_{j}(x) = 0hj(x)=0,则:
θP(x)=maxα,β;αi≥0[f(x)+∑i=1kαici(x)+∑j=1lβjhj(x)]=f(x)\theta_{P}(x)=\max _{\alpha, \beta ; \alpha_{i} \geq 0}\left[f(x)+\sum_{i=1}^{k} \alpha_{i} c_{i}(x)+\sum_{j=1}^{l} \beta_{j} h_{j}(x)\right]=f(x)θP(x)=α,β;αi≥0max[f(x)+i=1∑kαici(x)+j=1∑lβjhj(x)]=f(x)
由以上两个式子可以得到:
θP(x)={f(x),x满足原始问题约束+∞,否则\theta_{P}(x)=\left\{\begin{array}{l} f(x), x \text { 满足原始问题约束} \\ +\infty, \text{否则} \end{array}\right.θP(x)={f(x),x 满足原始问题约束+∞,否则
则极小化问题 θP(x)\theta_{P}(x)θP(x) 有:
minxθP(x)=minxmaxα,β;αi≥0L(x,α,β)\min _{x} \theta_{P}(x)=\min _{x} \max _{\alpha, \beta ; \alpha_{i} \geq 0} L(x, \alpha, \beta)xminθP(x)=xminα,β;αi≥0maxL(x,α,β)
与原问题等价,即有相同的解。(因为当趋向无穷时,问题无解,因此必须 满足约束条件)。
- 广义拉格朗日函数的极小极大问题:minxmaxα,β;αi≥0L(x,α,β)\min _{x} \max _{\alpha, \beta ; \alpha_{i} \geq 0} L(x, \alpha, \beta)minxmaxα,β;αi≥0L(x,α,β)。
拉格朗日对偶性 – 对偶问题
- 构建关于α\alphaα 和 β\betaβ 的函数:
θD(α,β)=minxL(x,α,β)\theta_{D}(\alpha, \beta)=\min _{x} L(x, \alpha, \beta)θD(α,β)=xminL(x,α,β)
- 则其极大化问题称为广义拉格朗日函数的极大极小问题
maxα,β;αi≥0θD(α,β)=maxα,β;αi≥0minxL(x,α,β)\max _{\alpha, \beta ; \alpha_{i} \geq 0} \theta_{D}(\alpha, \beta)=\max _{\alpha, \beta ; \alpha_{i} \geq 0} \min _{x} L(x, \alpha, \beta)α,β;αi≥0maxθD(α,β)=α,β;αi≥0maxxminL(x,α,β)
- 将其表示为约束最优化问题,称为原始问题的对偶问题
maxα,β;αi≥0θD(α,β)=maxα,β;αi≥0minxL(x,α,β)s.t. αi≥0,i=1,2,⋯,k\begin{aligned} \max _{\alpha, \beta ; \alpha_{i} \geq 0} \theta_{D}(\alpha, \beta)=& \max _{\alpha, \beta ; \alpha_{i} \geq 0} \min _{x} L(x, \alpha, \beta) \\ \text { s.t. } & \alpha_{i} \geq 0, \quad i=1,2, \cdots, k \end{aligned}α,β;αi≥0maxθD(α,β)= s.t. α,β;αi≥0maxxminL(x,α,β)αi≥0,i=1,2,⋯,k
原问题与对偶问题之间的关系
- 弱对偶性:若原始问题与对偶问题都有最优解,则对偶问题最优解与原问题最优解具备以下关系:
d∗=maxα,β;αi≥0minxL(x,α,β)≤minxmaxα,β;αi≥0L(x,α,β)=p∗d^{*}=\max _{\alpha, \beta ; \alpha_{i} \geq 0} \min _{x} L(x, \alpha, \beta) \leq \min _{x} \max _{\alpha, \beta ; \alpha_{i} \geq 0} L(x, \alpha, \beta)=p^{*}d∗=α,β;αi≥0maxxminL(x,α,β)≤xminα,β;αi≥0maxL(x,α,β)=p∗
- 强对偶性:满足 d∗=p∗d^{*} = p^{*}d∗=p∗
- 强对偶是一个非常好的性质,因为在强对偶成立的情况下,可以通过求解对偶问题来得到 原始问题的解,在
SVM
中就是这样做的。 - 当然并不是所有的对偶问题都满足强对偶性 ,在
SVM
中是直接假定了强对偶性的成立, 其实只要满足一些条件,强对偶性是成立的,比如说KKT
条件。
KKT
条件:对于原始问题及其对偶问题,假设函数f(x)f(x)f(x)和ci(x)c_{i}(x)ci(x)是凸函数,hj(x)h_{j}(x)hj(x)是仿射函数,且不等式约束ci(x)c_{i}(x)ci(x)是严格可行的,即存在xxx,对所有iii有ci(x)<0c_{i}(x) < 0ci(x)<0,则存在x∗x^{*}x∗,α∗\alpha^{*}α∗,β∗\beta^{*}β∗,使x∗x^{*}x∗是原始问题的解,α∗\alpha^{*}α∗,β∗\beta^{*}β∗是对偶问题的解的充分必要条件是 x∗x^{*}x∗,α∗\alpha^{*}α∗,β∗\beta^{*}β∗满足下面的Karush-Kuhn-Tucker (KKT)
条件:
∇xL(x∗,α∗,β∗)=0αi∗ci(x∗)=0,i=1,2,⋯,kci(x∗)≤0,i=1,2,⋯,kαi∗≥0,i=1,2,⋯,khj(x∗)=0,j=1,2,⋯,l\begin{aligned} &\nabla_{x} L\left(x^{*}, \alpha^{*}, \beta^{*}\right)=0\\ &\alpha_{i}^{*} c_{i}\left(x^{*}\right)=0, \quad i=1,2, \cdots, k\\ &c_{i}\left(x^{*}\right) \leq 0, \quad i=1,2, \cdots, k\\ &\alpha_{i}^{*} \geq 0, \quad i=1,2, \cdots, k\\ &h_{j}\left(x^{*}\right)=0, \quad j=1,2, \cdots, l \end{aligned}∇xL(x∗,α∗,β∗)=0αi∗ci(x∗)=0,i=1,2,⋯,kci(x∗)≤0,i=1,2,⋯,kαi∗≥0,i=1,2,⋯,khj(x∗)=0,j=1,2,⋯,l
线性可分支持向量机
线性可分SVM
设有如下两类样本的训练集:
D={(x1,y1),(x2,y2),⋯,(xN,yN)}D=\left\{\left(x_{1}, y_{1}\right),\left(x_{2}, y_{2}\right), \cdots,\left(x_{N}, y_{N}\right)\right\}D={(x1,y1),(x2,y2),⋯,(xN,yN)}
线性可分情况意味着存在超平面,使训练点中的正类和负类样本分别位于该超平面的两侧。
w⋅x+b=0w \cdot x + b = 0 w⋅x+b=0
如果能确定这样的参数对(w,bw, bw,b) 的话,就可以构造决策函数来进行识别新样本。
f(x)=sgn(w⋅x+b)f(x) = sgn(w\cdot x + b) f(x)=sgn(w⋅x+b)
硬间隔最大化
存在的问题:这样的参数对(w,bw,bw,b)有许多。
解决办法是采用最大间隔原则:即选择使得训练集 DDD 对于线性函数 w⋅x+bw \cdot x + bw⋅x+b 的几何间隔取最大值的参数对(w,bw,bw,b),并由此构造优化问题。
目标函数:
maxM=2∥w∥⇒min12wTw\max M=\frac{2}{\|w\|} \Rightarrow \min \frac{1}{2} w^{T} wmaxM=∥w∥2⇒min21wTw
约束条件:
w⋅xi+b≥1if yi=+1w⋅xi+b≤−1if yi=−1yi(w⋅xi+b)−1≥0\begin{aligned} w \cdot x_{i}+b \geq 1 & \text { if } & y_{i}=+1 \\ w \cdot x_{i}+b \leq-1 & \text { if } & y_{i}=-1 \\ y_{i}\left(w \cdot x_{i}+b\right) &-1 \geq 0 \end{aligned}w⋅xi+b≥1w⋅xi+b≤−1yi(w⋅xi+b) if if −1≥0yi=+1yi=−1
基于对偶的线性可分SVM学习算法
构建拉格朗日对偶函数:L(w,b,α)=12∥w∥2−∑i=1Nαi[yi(w⋅x+b)−1]L(w, b, \alpha)=\frac{1}{2}\|w\|^{2}-\sum_{i=1}^{N} \alpha_{i}\left[y_{i}(w \cdot x+b)-1\right]L(w,b,α)=21∥w∥2−∑i=1Nαi[yi(w⋅x+b)−1]
根据拉格朗日对偶性,原问题的对偶问题是极大极小问题:maxαminw,bL(w,b,α)\max _{\alpha} \min _{w, b} L(w, b, \alpha)maxαminw,bL(w,b,α) 即需要先求L(w,b,α)L(w,b,\alpha)L(w,b,α) 对w,bw,bw,b的极小,再求对α\alphaα的极大。
(1) 固定α\alphaα,让LLL关于w,bw,bw,b最小化,分别对w,bw,bw,b求偏导数,令∂L/∂w\partial L / \partial w∂L/∂w和∂L/∂b\partial L / \partial b∂L/∂b等于零:
∇wL(w,b,α)=w−∑i=1Nαiyixi=0∇bL(w,b,α)=0\begin{array}{c} \nabla_{w} L(w, b, \alpha)=w-\sum_{i=1}^{N} \alpha_{i} y_{i} x_{i}=0 \\ \nabla_{b} L(w, b, \alpha)=0 \end{array}∇wL(w,b,α)=w−∑i=1Nαiyixi=0∇bL(w,b,α)=0
可以得到:
w=∑i=1Nαiyixi∑i=1Nαiyi=0\begin{array}{c} w=\sum_{i=1}^{N} \alpha_{i} y_{i} x_{i} \\ \sum_{i=1}^{N} \alpha_{i} y_{i}=0 \end{array}w=∑i=1Nαiyixi∑i=1Nαiyi=0
(2) 将结果代入拉格朗日函数中,整理后可得:
minw,bL(w,b,α)=−12∑i=1N∑j=1Nαiαjyiyj(xi⋅xj)+∑i=1Nαi\min _{w, b} L(w, b, \alpha)=-\frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right)+\sum_{i=1}^{N} \alpha_{i}w,bminL(w,b,α)=−21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)+i=1∑Nαi
根据拉格朗日对偶性,原问题的对偶问题是极大极小问题:
即需要先求L(w,b,α)L(w,b,\alpha)L(w,b,α) 对w,bw,bw,b的极小,再求对α\alphaα 的极大。
(3) 求minw,bL(w,b,α)min_{w,b}L(w,b,\alpha)minw,bL(w,b,α)对α\alphaα的极大,即是对偶问题:
maxα−12∑i=1N∑j=1Nαiαjyiyj(xi⋅xj)+∑i=1Nαis.t. ∑i=1Nαij=0αi⩾0,i=1,2,…,N\begin{aligned} &\max _{\alpha} \quad-\frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right)+\sum_{i=1}^{N} \alpha_{i}\\ &\text { s.t. } \sum_{i=1}^{N} \alpha_{i j}=0\\ &\alpha_{i} \geqslant 0, \quad i=1,2, \ldots, N \end{aligned}αmax−21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)+i=1∑Nαi s.t. i=1∑Nαij=0αi⩾0,i=1,2,…,N
对偶问题:
minα12∑i=1N∑j=1Nαiαjyiyj(xi⋅xj)−∑i=1Nαix=∑i=1Nan=0αi⩾0,i=1,2,…,N\begin{aligned} &\min _{\alpha} \frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right)-\sum_{i=1}^{N} \alpha_{i}\\ &x=\sum_{i=1}^{N} a_{n}=0\\ &\alpha_{i} \geqslant 0, \quad i=1,2, \ldots, N \end{aligned}αmin21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)−i=1∑Nαix=i=1∑Nan=0αi⩾0,i=1,2,…,N
(4) 求解上述问题可得到最优的α∗\alpha^{*}α∗ ,进而求得w∗,b∗w^{*},b^{*}w∗,b∗,最终获得分离超平面和分类决策函数:
w∗=∑i=1Nαi∗yixib∗=yj−∑i=1Nαi∗yi(xi⋅xj)\begin{array}{c} w^{*}=\sum_{i=1}^{N} \alpha_{i}^{*} y_{i} x_{i} \\ b^{*}=y_{j}-\sum_{i=1}^{N} \alpha_{i}^{*} y_{i}\left(x_{i} \cdot x_{j}\right) \end{array}w∗=∑i=1Nαi∗yixib∗=yj−∑i=1Nαi∗yi(xi⋅xj)
分类超平面:
∑i=1Nαi∗yi(x⋅xi)+b∗=0\sum_{i=1}^{N} \alpha^{*}_{i} y_{i}\left(x \cdot x_{i}\right)+b^{*}=0i=1∑Nαi∗yi(x⋅xi)+b∗=0
分类决策函数:
f(x)=sign(∑i=1Nαi∗yi(x⋅xi)+b∗)f(x)=\operatorname{sign}\left(\sum_{i=1}^{N} \alpha_{i}^{*} y_{i}\left(x \cdot x_{i}\right)+b^{*}\right)f(x)=sign(i=1∑Nαi∗yi(x⋅xi)+b∗)
以上是推导过程,实际使用过程是这样的:
- 构造并求解最优化问题
求得最优解:α∗=(α1∗,α2∗,⋯,αN∗)\alpha^{*} = (\alpha^{*}_{1}, \alpha_{2}^{*}, \cdots, \alpha_{N}^{*})α∗=(α1∗,α2∗,⋯,αN∗)
mina12∑i=1N∑j=1Nαiαjyiyj(xi⋅xj)−∑i=1Nαist ∑i=1Naiyi=0αi⩾0,i=1,2,…,N\begin{aligned} &\min _{a} \frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right)-\sum_{i=1}^{N} \alpha_{i}\\ &\text { st } \sum_{i=1}^{N} a_{i}y_{i}=0\\ &\alpha_{i} \geqslant 0, \quad i=1,2, \ldots, N \end{aligned}amin21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)−i=1∑Nαi st i=1∑Naiyi=0αi⩾0,i=1,2,…,N
- 计算w∗,b∗w^{*},b^{*}w∗,b∗:
w∗=∑i=1Nαi∗yixiw^{*}=\sum_{i=1}^{N} \alpha_{i}^{*} y_{i} x_{i}w∗=i=1∑Nαi∗yixi
选择α∗\alpha^{*}α∗的一个正分量αj∗\alpha_{j}^{*}αj∗,计算:
b∗=yj−∑i=1Nαi∗yi(xi⋅xj)b^{*}=y_{j}-\sum_{i=1}^{N} \alpha_{i}^{*} y_{i}\left(x_{i} \cdot x_{j}\right)b∗=yj−i=1∑Nαi∗yi(xi⋅xj)
- 求得分离超平面:
∑i=1Nαi∗yi(x⋅xi)+b∗=0\sum_{i=1}^{N} \alpha_{i}^{*} y_{i}\left(x \cdot x_{i}\right)+b^{*}=0i=1∑Nαi∗yi(x⋅xi)+b∗=0
- 获得分类决策函数:
f(x)=sign(∑i=1Nαi∗yi(x⋅xi)+b∗)f(x)=\operatorname{sign}\left(\sum_{i=1}^{N} \alpha_{i}^{*} y_{i}\left(x \cdot x_{i}\right)+b^{*}\right)f(x)=sign(i=1∑Nαi∗yi(x⋅xi)+b∗)
- 我们得到的原问题的对偶问题的目标函数为:
maxαi⩾0L(w,b,α)=maxαi≥012∥w∥2+∑i=1αi[yi(w⋅x+b)−1]\max _{\alpha_{i} \geqslant 0} L(w, b, \alpha)=\max _{\alpha_{i} \geq 0} \frac{1}{2}\|w\|^{2}+\sum_{i=1} \alpha_{i}\left[y_{i}(w \cdot x+b)-1\right]αi⩾0maxL(w,b,α)=αi≥0max21∥w∥2+i=1∑αi[yi(w⋅x+b)−1]
第一项为正则化项,第二项为模型精度。
如果xix_{i}xi是支持向量的话,上式中yi(wx+b)−1=0y_{i}(wx+b)-1=0yi(wx+b)−1=0 (因为此向量到分类超平面的函数间隔为1);
对于非支持向量来说,函数间隔会大于1,因此会有yi(wx+b)−1>0y_{i}(wx+b)-1 > 0yi(wx+b)−1>0,由于有约束条件αi≥0\alpha_{i} \geq 0αi≥0,因此为了满足最大化,在最优解α∗\alpha^{*}α∗中,必须有αi=0\alpha_{i}=0αi=0。
结构风险最小化:目标函数第二项为模型精度,第一项为正则化项,有效保证稀疏性,以降低置信风险,因而
SVM
是基于结构风险最小化的学习方法。
线性不可分支持向量机
线性不可分
- 设有如下两类样本的训练集:
D={(x1,y1),(x2,y2),⋯,(xN,yN)}D=\left\{\left(x_{1}, y_{1}\right),\left(x_{2}, y_{2}\right), \cdots,\left(x_{N}, y_{N}\right)\right\}D={(x1,y1),(x2,y2),⋯,(xN,yN)}
线性不可分情况意味着不存在这样的超平面,使训练点中的正类和负类样本能 够完全分别位于该超平面的两侧,即无法将它们完全分开。如果要用超平面来 划分的话,必然有错分的点。
w⋅x+b=0w \cdot x + b =0 w⋅x+b=0
现实情况:我们只会线性可分的方法;
处理思路:允许分类误差,并且在目标函数 中引入对分类误差的惩罚。
软间隔最大化
允许支持向量机在一些样本上出错,需要我们将硬间隔最大化改为软间隔最大化,当然,在最大化软间隔的同时,不满足约束的样本应尽可能的少。yi(w⋅x+b)=1y_{i}(w \cdot x +b) = 1yi(w⋅x+b)=1软间隔要求是 yi(w⋅x+b)≥1y_{i}(w \cdot x +b ) \geq 1yi(w⋅x+b)≥1。
为了解决某些样本不满足约束的情况,对每个样本点(xi,yix_{i},y_{i}xi,yi)引入一个松弛变量ξi≥0\xi_{i} \geq 0ξi≥0,使函数间隔加上松弛变量大于等于1,这样约束条件就变为:
yi(w⋅x+b)≥1−ξiy_{i}(w \cdot x+b) \geq 1-\xi_{i}yi(w⋅x+b)≥1−ξi
- 为了避免ξi\xi_{i}ξi取太大的值,需要在目标函数中对他们进行惩罚,其中C>0C > 0C>0称为惩罚系数,CCC值大时,对误分类的惩罚增加,CCC值小时对误分类的惩罚减小。
12∥w∥2+C∑i=1Nξi\frac{1}{2}\|w\|^{2}+C \sum_{i=1}^{N} \xi_{i}21∥w∥2+Ci=1∑Nξi
有了上面的思路,可以和线性可分支持向量机一样来考虑线性支持向量机的学习问题,线性不可分的线性支持向量机的学习问题就变为如下凸二次规划问题:
minw,b,ξ12∥w∥2+C∑i=1Nξis.t. yi(w⋅xi+b)≥1−ξi,i=1,⋯,Nξi≥0,i=1,⋯,N\begin{aligned} &\min _{w, b, \xi} \frac{1}{2}\|w\|^{2}+C \sum_{i=1}^{N} \xi_{i}\\ &\text {s.t. } \quad y_{i}\left(w \cdot x_{i}+b\right) \geq 1-\xi_{i}, i=1, \cdots, N\\ &\xi_{i} \geq 0, i=1, \cdots, N \end{aligned}w,b,ξmin21∥w∥2+Ci=1∑Nξis.t. yi(w⋅xi+b)≥1−ξi,i=1,⋯,Nξi≥0,i=1,⋯,N
- 通过求解以上凸二次规划问题,即软间隔最大化问题,得到分离超平面为:
w∗⋅x+b∗=0w ^{*} \cdot x + b^{*} = 0 w∗⋅x+b∗=0
相应的分类决策函数为:
f(x)=sign(w∗⋅x+b∗)f(x) = sign(w ^{*} \cdot x + b^{*}) f(x)=sign(w∗⋅x+b∗)
基于对偶的学习算法
构建拉格朗日对偶函数:
L(w,b,ξ,α,μ)=12∥w∥2+C∑i=1Nξi−∑i=1Nαi[yi(w⋅xi+b)−1+ξi]−∑i=1NμiξiL(w, b, \xi, \alpha, \mu)=\frac{1}{2}\|w\|^{2}+C \sum_{i=1}^{N} \xi_{i}-\sum_{i=1}^{N} \alpha_{i}\left[y_{i}\left(w \cdot x_{i}+b\right)-1+\xi_{i}\right]-\sum_{i=1}^{N} \mu_{i} \xi_{i}L(w,b,ξ,α,μ)=21∥w∥2+Ci=1∑Nξi−i=1∑Nαi[yi(w⋅xi+b)−1+ξi]−i=1∑Nμiξi
αi≥0\alpha_{i} \geq 0αi≥0,μi≥0\mu_{i} \geq 0μi≥0,需要先求L(w,b,ξ,α,μ)L(w,b,\xi, \alpha,\mu)L(w,b,ξ,α,μ)对w,b,ξw,b,\xiw,b,ξ的极小,再求对α\alphaα的极大。
(1) 分别对w,b,ξw,b,\xiw,b,ξ求偏导数,令∂L/∂w,∂L/∂b,∂L/∂ξ\partial L / \partial w, \partial L / \partial b, \partial L / \partial \xi∂L/∂w,∂L/∂b,∂L/∂ξ等于零:
∇wL(w,b,ξ,α,μ)=w−∑i=1Nαiyixi=0∇bL(w,b,ξ,α,μ)=−∑i=1Nαiyi=0∇ξiL(w,b,ξ,α,μ)=C−αi−μi=0\begin{array}{c} \nabla_{w} L(w, b, \xi, \alpha, \mu)=w-\sum_{i=1}^{N} \alpha_{i} y_{i} x_{i}=0 \\ \nabla_{b} L(w, b, \xi, \alpha, \mu)=-\sum_{i=1}^{N} \alpha_{i} y_{i}=0 \\ \nabla_{\xi_{i}} L(w, b, \xi, \alpha, \mu)=C-\alpha_{i}-\mu_{i}=0 \end{array}∇wL(w,b,ξ,α,μ)=w−∑i=1Nαiyixi=0∇bL(w,b,ξ,α,μ)=−∑i=1Nαiyi=0∇ξiL(w,b,ξ,α,μ)=C−αi−μi=0
可以推出:
w=∑i=1Nαiyixi∑i=1Nαiyi=0C−αi−μi=0\begin{array}{c} w=\sum_{i=1}^{N} \alpha_{i} y_{i} x_{i} \\ \sum_{i=1}^{N} \alpha_{i} y_{i}=0 \\ C-\alpha_{i}-\mu_{i}=0 \end{array}w=∑i=1Nαiyixi∑i=1Nαiyi=0C−αi−μi=0
(2) 将结果代入拉格朗日函数中,整理后可得:
minw,b,ξL(w,b,ξ,α,μ)=−12∑i=1N∑j=1Nαiαjyiyj(xi⋅xj)+∑i=1Nαi\min _{w, b, \xi} L(w, b, \xi, \alpha, \mu)=-\frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right)+\sum_{i=1}^{N} \alpha_{i}w,b,ξminL(w,b,ξ,α,μ)=−21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)+i=1∑Nαi
(3) 求minw,b,ξL(w,b,ξ,α,μ)min_{w,b,\xi}L(w,b,\xi,\alpha,\mu)minw,b,ξL(w,b,ξ,α,μ)对α\alphaα的极大,即得对偶问题:
maxα−12∑i=1N∑j=1Nαiαjyiyj(xi⋅xj)+∑i=1Nαis.t. ∑i=1Nαiyi=0C−αi−μi=0αi⩾0μi⩾0,i=1,2,…,N\begin{aligned} \max _{\alpha} &-\frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right)+\sum_{i=1}^{N} \alpha_{i} \\ & \text { s.t. } \sum_{i=1}^{N} \alpha_{i} y_{i}=0 \\ & C-\alpha_{i}-\mu_{i}=0 \\ & \alpha_{i} \geqslant 0 \\ \mu_{i} \geqslant 0, & i=1,2, \ldots, N \end{aligned}αmaxμi⩾0,−21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)+i=1∑Nαi s.t. i=1∑Nαiyi=0C−αi−μi=0αi⩾0i=1,2,…,N
对偶问题,凸二次规划问题,有唯一的最优解:
minα12∑i=1N∑j=1Nαiαjyiyj(xi⋅xj)−∑i=1Nαis.t. ∑i=1Nαiyi=00⩽αi⩽C,i=1,2,…,N\begin{array}{c} \min _{\alpha} \frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right)-\sum_{i=1}^{N} \alpha_{i} \\ \text { s.t. } \sum_{i=1}^{N} \alpha_{i} y_{i}=0 \\ 0 \leqslant \alpha_{i} \leqslant C, \quad i=1,2, \ldots, N \end{array}minα21∑i=1N∑j=1Nαiαjyiyj(xi⋅xj)−∑i=1Nαi s.t. ∑i=1Nαiyi=00⩽αi⩽C,i=1,2,…,N
(4) 求解上述问题可得到最优的α∗\alpha^{*}α∗,进而求得w∗,b∗w^{*},b^{*}w∗,b∗,最终获得分离超平面和分类决策函数:
w∗=∑i=1Nαi′yixib∗=yj−∑i=1Nαi∗yi(xi⋅xj)\begin{aligned} w^{*} &=\sum_{i=1}^{N} \alpha_{i}^{\prime} y_{i} x_{i} \\ b^{*}=& y_{j}-\sum_{i=1}^{N} \alpha_{i}^{*} y_{i}\left(x_{i} \cdot x_{j}\right) \end{aligned}w∗b∗==i=1∑Nαi′yixiyj−i=1∑Nαi∗yi(xi⋅xj)
得到分类超平面:
w∗⋅x+b∗=0w^{*} \cdot x + b^{*} = 0 w∗⋅x+b∗=0
得到分类决策函数:
f(x)=sign(w∗⋅x+b∗)f(x)=\operatorname{sign}\left(w^{*} \cdot x+b^{*}\right)f(x)=sign(w∗⋅x+b∗)
以上是推导过程,实际使用过程是这样的:
- 构造并求解最优化问题
求得最优解:α∗=(α1∗,α2∗,⋯,αN∗)\alpha^{*} = (\alpha^{*}_{1}, \alpha_{2}^{*}, \cdots, \alpha_{N}^{*})α∗=(α1∗,α2∗,⋯,αN∗)
mina12∑i=1N∑j=1Nαiαjyiyj(xi⋅xj)−∑i=1Nαist ∑i=1Naiyi=00≤αi≤C,i=1,2,…,N\begin{aligned} &\min _{a} \frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right)-\sum_{i=1}^{N} \alpha_{i}\\ &\text { st } \sum_{i=1}^{N} a_{i}y_{i}=0\\ &0 \leq \alpha_{i} \leq C, \quad i=1,2, \ldots, N \end{aligned}amin21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)−i=1∑Nαi st i=1∑Naiyi=00≤αi≤C,i=1,2,…,N
- 计算w∗,b∗w^{*},b^{*}w∗,b∗:
w∗=∑i=1Nαi∗yixiw^{*}=\sum_{i=1}^{N} \alpha_{i}^{*} y_{i} x_{i}w∗=i=1∑Nαi∗yixi
选择α∗\alpha^{*}α∗的一个正分量0<αj∗<C0 < \alpha_{j}^{*} < C0<αj∗<C,计算:
b∗=yj−∑i=1Nαi∗yi(xi⋅xj)b^{*}=y_{j}-\sum_{i=1}^{N} \alpha_{i}^{*} y_{i}\left(x_{i} \cdot x_{j}\right)b∗=yj−i=1∑Nαi∗yi(xi⋅xj)
- 求得分离超平面:
w∗⋅x+b∗=0w^{*} \cdot x + b^{*} = 0w∗⋅x+b∗=0
- 获得分类决策函数:
f(x)=sign(w∗⋅x)+b∗f(x)=sign(w^{*} \cdot x) + b^{*}f(x)=sign(w∗⋅x)+b∗
软间隔支持向量
软间隔支持向量具有以下性质:
软间隔的支持向量xix_{i}xi或在间隔边界上,或在间隔边界与分离超平面之间,,或在分离超平面 误分一侧; L(w,b,ξ,α,μ)L(w,b,\xi,\alpha,\mu)L(w,b,ξ,α,μ)。
若αi∗<C\alpha_{i}^{*} < Cαi∗<C,则ξi=0\xi_{i} = 0ξi=0(前面偏导条件),支持向量xix_{i}xi恰好落在间隔边界上;
若αi∗=C\alpha_{i}^{*} = Cαi∗=C,0<ξi<10 < \xi_{i} < 10<ξi<1,则yi(w⋅x)+b>1−ξi>0y_{i}(w \cdot x) + b > 1-\xi_{i} > 0yi(w⋅x)+b>1−ξi>0,则正确分类,支持向量xix_{i}xi在间隔边界与分离超平面之间;
若αi∗=C\alpha_{i}^{*} = Cαi∗=C,ξi=1\xi_{i} = 1ξi=1,则支持向量xix_{i}xi在分离超平面上;
若αi∗=C\alpha_{i}^{*} = Cαi∗=C,ξi>1\xi_{i} > 1ξi>1,则分类错误,支持向量xix_{i}xi在分离超平面的误分一侧。
非线性支持向量机
非线性数据
在现实任务中,我们得到的数据一般都不是线性可分的,这时线性可分支持向 量机就不适用了。非线性数据意味着不存在这样的超平面,使训练点中的正类 和负类样本能够完全分别位于该超平面的两侧。
Kernel核函数方法
核方法的主要思想: 基于这样一个假设:“在低维空间中不能线性分割的点集,通过转化为高维空间中的点集 时,很有可能变为线性可分的”。
具体来说,在线性不可分的情况下,支持向量机首先在低维空间中完成计算,然后通过核 函数将输入空间映射到高维特征空间,最终在高维特征空间中构造出最优的分离超平面, 从而把平面上本身不好分的非线性数据分开。
SVM
处理非线性数据的一般方法:
选择一个非线性特征集,并将数据改写成新的表达方式,这等价于应用一个固定的非线性 映射,将数据映射到高维特征空间,在高维特征空间中使用线性分类器。
f(x)=∑i=1nwiϕi(x)+bf(x)=\sum_{i=1}^{n} w_{i} \phi_{i}(x)+bf(x)=i=1∑nwiϕi(x)+b
其中,ϕ()\phi()ϕ() 表示从输入空间到某个高维特征空间的映射。
这意味着线性分类方法求解非线性分类问题一般分为两步:
- 使用一个变换将原空间的数据映射到新空间。
- 在新空间里使用线性分类学习方法从训练数据中学习分类模型。
映射函数相当于把原来的分类函数进行了映射:
f(x)=∑i=1nαiyi⟨xi,x⟩+bf(x)=\sum_{i=1}^{n} \alpha_{i} y_{i}\left\langle x_{i}, x\right\rangle+bf(x)=i=1∑nαiyi⟨xi,x⟩+b
映射之后为:
f(x)=∑i=1nαiyi⟨ϕ(xi),ϕ(x)⟩+bf(x)=\sum_{i=1}^{n} \alpha_{i} y_{i}\left\langle\phi\left(x_{i}\right), \phi(x)\right\rangle+bf(x)=i=1∑nαiyi⟨ϕ(xi),ϕ(x)⟩+b
而其中的 α\alphaα 可以通过求解如下对偶问题得到:
maxα∑i=1nαi−12∑i,j=1Nαiαjyiyj⟨ϕ(xi),ϕ(xj)⟩s.t.∑i=1nαiyi=0αi≥0,i=1,⋯,n\begin{aligned} &\max _{\alpha} \sum_{i=1}^{n} \alpha_{i}-\frac{1}{2} \sum_{i, j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j}\left\langle\phi\left(x_{i}\right), \phi\left(x_{j}\right)\right\rangle\\ &\text {s.t.} \quad \sum_{i=1}^{n} \alpha_{i} y_{i}=0\\ &\alpha_{i} \geq 0, i=1, \cdots, n \end{aligned}αmaxi=1∑nαi−21i,j=1∑Nαiαjyiyj⟨ϕ(xi),ϕ(xj)⟩s.t.i=1∑nαiyi=0αi≥0,i=1,⋯,n
- 使用映射函数方法的再思考:
设两个向量x1(η1,η2)Tx_{1}(\eta_{1},\eta_{2})^{T}x1(η1,η2)T和x2=(ξ1,ξ2)x_{2} = (\xi_{1},\xi_{2})x2=(ξ1,ξ2),而ϕ(⋅)\phi(\cdot)ϕ(⋅)即是五维空间的映射,因此可以将x1,x2x_{1},x_{2}x1,x2先通过ϕ(⋅)\phi(\cdot)ϕ(⋅)映射到五维空间,然年计算内积:
ϕ(x1)=(η1,η12,η2,η22,η1η2)T,ϕ(x2)=(ξ1,ξ12,ξ2,ξ22,ξ1ξ2)T⟨ϕ(x1),ϕ(x2)⟩=η1ξ1+η12ζ1z+η2ζ2+η22ζ22+η1η2ξ1∗ξ2\begin{array}{c} \phi\left(x_{1}\right)=\left(\eta_{1}, \eta_{1}^{2}, \eta_{2}, \eta_{2}^{2}, \eta_{1} \eta_{2}\right)^{T}, \phi\left(x_{2}\right)=\left(\xi_{1}, \xi_{1}^{2}, \xi_{2}, \xi_{2}^{2}, \xi_{1} \xi_{2}\right)^{T} \\ \left\langle\phi\left(x_{1}\right), \phi\left(x_{2}\right)\right\rangle=\eta_{1} \xi_{1}+\eta_{1}^{2} \zeta_{1}^{z}+\eta_{2} \zeta_{2}+\eta_{2}^{2} \zeta_{2}^{2}+\eta_{1} \eta_{2} \xi_{1}^{*} \xi_{2} \end{array}ϕ(x1)=(η1,η12,η2,η22,η1η2)T,ϕ(x2)=(ξ1,ξ12,ξ2,ξ22,ξ1ξ2)T⟨ϕ(x1),ϕ(x2)⟩=η1ξ1+η12ζ1z+η2ζ2+η22ζ22+η1η2ξ1∗ξ2
另外,我们注意到:
(⟨x1,x2⟩+1)2=⟨x1,x2⟩2+2⟨x1,x2⟩+1=(η1ξ1+η2ξ2)2+2(η1ξ1+η2ξ2)+1=2η1ξ1+η12ξ1+2η2ξ2+η22ξ2+2η1η2ξ1ξ2+1\begin{array}{c} \left(\left\langle x_{1}, x_{2}\right\rangle+1\right)^{2}=\left\langle x_{1}, x_{2}\right\rangle^{2}+2\left\langle x_{1}, x_{2}\right\rangle+1 \\ =\left(\eta_{1} \xi_{1}+\eta_{2} \xi_{2}\right)^{2}+2\left(\eta_{1} \xi_{1}+\eta_{2} \xi_{2}\right)+1 \\ =2 \eta_{1} \xi_{1}+\eta_{1}^{2} \xi_{1}+2 \eta_{2} \xi_{2}+\eta_{2}^{2} \xi_{2}+2 \eta_{1} \eta_{2} \xi_{1} \xi_{2}+1 \end{array}(⟨x1,x2⟩+1)2=⟨x1,x2⟩2+2⟨x1,x2⟩+1=(η1ξ1+η2ξ2)2+2(η1ξ1+η2ξ2)+1=2η1ξ1+η12ξ1+2η2ξ2+η22ξ2+2η1η2ξ1ξ2+1
可以发现,上面的两个式子有很多相同的地方,实际上,我们只需要把某几个维度线性缩放 一下,然后加上一个常数维度,具体来说,上面这个式子的计算实际上和映射效果相同:
φ(X1,X2)=(2X1,X12,2X2,X22,2X1X2,1)T\varphi\left(X_{1}, X_{2}\right)=\left(\sqrt{2} X_{1}, X_{1}^{2}, \sqrt{2} X_{2}, X_{2}^{2}, \sqrt{2} X_{1} X_{2}, 1\right)^{T}φ(X1,X2)=(2X1,X12,2X2,X22,2X1X2,1)T
- 两种方法的区别:
一个是映射到高维空间中,然后再根据内积的公式计算:
ϕ(x1)=(η1,η12,η2,η22,η1η2)T,ϕ(x2)=(ξ1,ξ12,ξ2,ξ22,ξ1ξ2)T⟨ϕ(x1),ϕ(x2)⟩=η1ξ1+η12ξ12+η2ξ2+η22ξ22+η1η2ξ1ξ2\begin{array}{c} \phi\left(x_{1}\right)=\left(\eta_{1}, \eta_{1}^{2}, \eta_{2}, \eta_{2}^{2}, \eta_{1} \eta_{2}\right)^{T}, \phi\left(x_{2}\right)=\left(\xi_{1}, \xi_{1}^{2}, \xi_{2}, \xi_{2}^{2}, \xi_{1} \xi_{2}\right)^{T} \\ \left\langle\phi\left(x_{1}\right), \phi\left(x_{2}\right)\right\rangle=\eta_{1} \xi_{1}+\eta_{1}^{2} \xi_{1}^{2}+\eta_{2} \xi_{2}+\eta_{2}^{2} \xi_{2}^{2}+\eta_{1} \eta_{2} \xi_{1} \xi_{2} \end{array}ϕ(x1)=(η1,η12,η2,η22,η1η2)T,ϕ(x2)=(ξ1,ξ12,ξ2,ξ22,ξ1ξ2)T⟨ϕ(x1),ϕ(x2)⟩=η1ξ1+η12ξ12+η2ξ2+η22ξ22+η1η2ξ1ξ2
而另一个则直接在原始空间中计算,而不需要显式地写出映射后的结果:
φ(X1,X2)=(2X1,X12,2X2,X22,2X1X2,1)T\varphi\left(X_{1}, X_{2}\right)=\left(\sqrt{2} X_{1}, X_{1}^{2}, \sqrt{2} X_{2}, X_{2}^{2}, \sqrt{2} X_{1} X_{2}, 1\right)^{T}φ(X1,X2)=(2X1,X12,2X2,X22,2X1X2,1)T
现在我们回忆下前面提到的维度爆炸,在前一种方法已经无法计算的情况下,后一种方法却 依旧能处理,甚至无穷维度也没有问题。
我们把这里的计算两个向量在隐式映射过后在空间中的内积的函数叫做核函数,例如,前面 的例子中,核函数为,例如,前面的例子中,核函数为:
k(x1,x2)=(⟨x1,x2⟩+1)2k\left(x_{1}, x_{2}\right)=\left(\left\langle x_{1}, x_{2}\right\rangle+1\right)^{2}k(x1,x2)=(⟨x1,x2⟩+1)2
核函数能够简化映射空间中的内积运算。
- 核函数的定义:
设X\mathcal{X}X是输入空间,H\mathcal{H}H为特征空间,,如果存在一个从X\mathcal{X}X到H\mathcal{H}H的映射:ϕ(x):X→H\phi(x): \mathcal{X} \rightarrow \mathcal{H}ϕ(x):X→H。使得对所有x,z∈Xx,z \in \mathcal{X}x,z∈X,函数K(x,z)K(x,z)K(x,z)满足条件:k(x,z)=ϕ(x)⋅ϕ(z)k(x, z)=\phi(x) \cdot \phi(z)k(x,z)=ϕ(x)⋅ϕ(z)。则称k(x,z)k(x,z)k(x,z)为核函数,ϕ(x)\phi(x)ϕ(x)为映射函数,式中ϕ(x)⋅ϕ(z)\phi(x) \cdot \phi(z)ϕ(x)⋅ϕ(z)为内积。
- 核技巧:
在核函数k(x,z)k(x,z)k(x,z)给定的条件下,可以利用求解线性分类问题的方法求解非线性分类问题的支持向量机;学习是隐式地在特征空间进行,不需要显示地定义特征空间和映射函数,这样的技巧称为核技巧。
使用核技巧,解决了计算的复杂性问题,避开了直接在高维空间中进行计算,,而结果却是等价的。
- 针对任意一个映射,手工设计出相应的核函数是很困难的,所以我们通常是在 常用的核函数中,按照问题和数据特点,进行选择:
多项式核函数:
k(xi,xj)=(xiTxj)pk(x_{i},x_{j}) = (x_{i}^{T}x_{j})^{p} k(xi,xj)=(xiTxj)p
p≥1p \geq 1p≥1为多项式的次数。
高斯核函数:
k(xi,xj)=exp(−∥xi−xj∥22σ2)k\left(x_{i}, x_{j}\right)=\exp \left(-\frac{\left\|x_{i}-x_{j}\right\|^{2}}{2 \sigma^{2}}\right)k(xi,xj)=exp(−2σ2∥xi−xj∥2)
δ≥1\delta \geq 1δ≥1为高斯核的带宽。在实际应用中,采用较多的是高斯核函数,这个核可以将原始空间映射为高维空间(也就是我们前面提到的空间映射)。
- 高斯核函数中参数σ\sigmaσ对模型性能的影响。
如果σ\sigmaσ选得过大的话,高次特征上的权重实际上衰减的非常快,所以实际上相当于一个低维的子空间;
性质1. 当σ\sigmaσ趋于无穷时,SVM的判别函数为一常函数,其推广能力或对新样本的正确分类能力为零,即把所有样本点判别为同一类。
如果σ\sigmaσ选得过小的话,则可以将任意的数据映射为线性可分的–当然这并不完全是好事,因为随着而来的是非常严重的过拟合问题;
性质 2. 若RBF
核中尺度参数σ\sigmaσ趋于0,则拉格朗日 乘子向量的所有分量都大于0,即全部样本点都是 支持向量。
总的来说,通过调控参数σ\sigmaσ,高斯核实际上具有相当高的灵活性,也是使用最广泛的核函数之一。
线性核函数:
k(xi,xj)=xiTxjk(x_{i},x_{j}) = x_{i}^{T}x_{j} k(xi,xj)=xiTxj
核函数的本质
通常我们遇到的数据都是线性不可分的,我们需要将其映射到高维空间,但是这 可能带来维度灾难;这时候,核函数便是一种很好的解决方法,核函数的价值就 在于它虽然也是将特征进行从低维到高维的映射,但是核函数的巧妙之处在于它 事先在低维上进行计算,而将实质上的分类效果表现在高维上,这样做也就避免 了在高维空间中的复杂运算。
基于Kernel
的SVM
:假设现在你是一个农场主,圈养了一批羊,但为了预防狼群 袭击羊群,你需要搭建一个篱笆来把羊和狼分开,但是篱笆应该建在哪儿呢?
基于核函数的非线性支持向量机
给定训练数据集T={(x1,y1),⋯,(xN,yN)}T=\{(x_{1},y_{1}),\cdots , (x_{N},y_{N})\}T={(x1,y1),⋯,(xN,yN)},yi∈{−1,+1}y_{i} \in \{-1,+1\}yi∈{−1,+1},i=1,⋯,Ni = 1, \cdots ,Ni=1,⋯,N,训练方法:
(1) 选取适当的核函数k(xi,xj)k(x_{i}, x_{j})k(xi,xj)和适当的参数CCC,构造并求解最优化问题,得到最优的 α∗\alpha^{*}α∗:
minα12∑i=1N∑j=1NαiαjyiyjK(xi,xj)−∑i=1Nαis.t. ∑i=1Nαiyi=00⩽αi⩽C,i=1,2,…,N\begin{array}{c} \min _{\alpha} \frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j} K\left(x_{i}, x_{j}\right)-\sum_{i=1}^{N} \alpha_{i} \\ \text { s.t. } \sum_{i=1}^{N} \alpha_{i} y_{i}=0 \\ 0 \leqslant \alpha_{i} \leqslant C, i=1,2, \ldots, N \end{array}minα21∑i=1N∑j=1NαiαjyiyjK(xi,xj)−∑i=1Nαi s.t. ∑i=1Nαiyi=00⩽αi⩽C,i=1,2,…,N
(2) 选择α∗\alpha^{*}α∗的一个分量 0<αj∗<C0< α_{j}^{*}<C0<αj∗<C计算:b∗=yj−∑i=1Nαi∗yiK(xi,xj)b^{*}=y_{j}-\sum_{i=1}^{N} \alpha_{i}^{*} y_{i} K\left(x_{i}, x_{j}\right)b∗=yj−∑i=1Nαi∗yiK(xi,xj)。
(3)构造分类决策函数:f(x)=sign(∑i=1Nαi∗yiK(x,xi)+b∗)f(x)=\operatorname{sign}\left(\sum_{i=1}^{N} \alpha_{i}^{*} y_{i} K\left(x, x_{i}\right)+b^{*}\right)f(x)=sign(∑i=1Nαi∗yiK(x,xi)+b∗)
最小二乘支持向量机
LSSVM概述
LSSVM提出的背景
支持向量机是针对小样本问题,基于结构风险最小化,较好地解决了以往机器学习模型中的 过学习、非线性、维数灾难以及局部极小值等问题,具有较好的泛化能力;
然而,该方法在大规模训练样本时,存在训练速度慢、稳定性差等缺陷,从而制约了其使用 范围(学习过程中需要求解二次规划问题);
因此,1999年,
Suykens
和Vandewalle
等人在SVM
的基础上提出LSSVM
(Least Square Support Vector Machine, LSSVM),该算法的计算复杂度大为减少,使得训练速度得到提高。最小二乘支持向量机(
LSSVM
)是标准支持向量机的一种扩展,该算法将支持 向量机的求解从二次规划问题转化为线性方程组。它与支持向量机的不同之处在于它把不等式约束改成等式约束,并把经验风险 由偏差的一次方改为二次方。
分类问题回顾:
给定训练数据集T={(x1,y1),⋯,(xN,yN)}T=\{(x_{1},y_{1}),\cdots , (x_{N},y_{N})\}T={(x1,y1),⋯,(xN,yN)},其中xi∈Rn,yi∈{−1,+1},i=1,…,Nx_{i} \in \mathbb{R}^{n}, y_{i} \in\{-1,+1\}, i=1, \ldots, Nxi∈Rn,yi∈{−1,+1},i=1,…,N;
分类支持向量机的目标是构造如下形式的分类器,使得 f(x)f(x)f(x)能够将样本正确分类
f(x)=sign[ωTφ(x)+b]f(x)=\operatorname{sign}\left[\omega^{T} \varphi(x)+b\right]f(x)=sign[ωTφ(x)+b]
LSSVM
分类算法:
(1) 构建LSSVM
的分类优化问题的目标函数:
min12wTw+12r∑i=1Nξi2\min \frac{1}{2} w^{T} w+\frac{1}{2} r \sum_{i=1}^{N} \xi_{i}^{2}min21wTw+21ri=1∑Nξi2
(2) 相比于SVM
,其约束条件有所不同,它将SVM
的不等式约束改为等式约束:
yi[wTφ(xi)+b]=1−ξi,i=1,2,…,Ny_{i}\left[w^{T} \varphi\left(x_{i}\right)+b\right]=1-\xi_{i}, i=1,2, \dots, Nyi[wTφ(xi)+b]=1−ξi,i=1,2,…,N
(3) 构造拉格朗日函数:
L=12wTw+12r∑i=1Nξi2−∑i=1Nαi{yi[wTφ(xi)+b]−1+ξ}L=\frac{1}{2} w^{T} w+\frac{1}{2} r \sum_{i=1}^{N} \xi_{i}^{2}-\sum_{i=1}^{N} \alpha_{i}\left\{y_{i}\left[w^{T} \varphi\left(x_{i}\right)+b\right]-1+\xi\right\}L=21wTw+21ri=1∑Nξi2−i=1∑Nαi{yi[wTφ(xi)+b]−1+ξ}
(4) 根据KKT
条件,取最优值时应该满足对各变量的偏导数为0
的约束条件:
{ω=∑i=1Nαiyiφ(xi)∑i=1Nαiyi=0αi=rξiyi[ωT×φ(xi)+b]−1+ξi=0\left\{\begin{array}{l} \omega=\sum_{i=1}^{N} \alpha_{i} y_{i} \varphi\left(x_{i}\right) \\ \sum_{i=1}^{N} \alpha_{i} y_{i}=0 \\ \alpha_{i}=r \xi_{i} \\ y_{i}\left[\omega^{T} \times \varphi\left(x_{i}\right)+b\right]-1+\xi_{i}=0 \end{array}\right.⎩⎪⎪⎨⎪⎪⎧ω=∑i=1Nαiyiφ(xi)∑i=1Nαiyi=0αi=rξiyi[ωT×φ(xi)+b]−1+ξi=0
消去www和ξ\xiξ得到线性系统
[0YTYZZT+r−1I][ba]=[01]\left[\begin{array}{cc} 0 & \mathbf{Y}^{T} \\ \mathbf{Y} & \mathbf{Z} \mathbf{Z}^{T}+r^{-1} \mathbf{I} \end{array}\right]\left[\begin{array}{l} b \\ a \end{array}\right]=\left[\begin{array}{l} 0 \\ 1 \end{array}\right][0YYTZZT+r−1I][ba]=[01]
(5) 在上式的线性方程组系统中:
{Z=[φ(x1)Ty1,φ(x2)Ty2,⋯,φ(xl)Tyl,]TY=[y1,y2,⋯,yl]T1=[1,1,⋯,1]Tα=[α1,α2,⋯,αl]T\left\{\begin{array}{l} \mathbf{Z}=\left[\varphi\left(x_{1}\right)^{T} y_{1}, \varphi\left(x_{2}\right)^{T} y_{2}, \cdots, \varphi\left(x_{l}\right)^{T} y_{l},\right]^{T} \\ \mathbf{Y}=\left[y_{1}, y_{2}, \cdots, y_{l}\right]^{T} \\ \mathbf{1}=[1,1, \cdots, 1]^{T} \\ \boldsymbol{\alpha}=\left[\alpha_{1}, \alpha_{2}, \cdots, \alpha_{l}\right]^{T} \end{array}\right.⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧Z=[φ(x1)Ty1,φ(x2)Ty2,⋯,φ(xl)Tyl,]TY=[y1,y2,⋯,yl]T1=[1,1,⋯,1]Tα=[α1,α2,⋯,αl]T
(6) 令A=ZZT+r−1IA=ZZ^{T}+r^{-1}IA=ZZT+r−1I,可以求得上述线性方程组的解,进而获得分类决策函数
{α=A−1(1−Yb)b=YTA−11YTA−1Y\left\{\begin{array}{l} \alpha=\mathbf{A}^{-1}(\mathbf{1}-\mathbf{Y} b) \\ b=\frac{\mathbf{Y}^{T} \mathbf{A}^{-1} \mathbf{1}}{\mathbf{Y}^{T} \mathbf{A}^{-1} \mathbf{Y}} \end{array}\right.{α=A−1(1−Yb)b=YTA−1YYTA−11
得到:
f(x)=sign[∑i=1Nαiyik(x,xi)+b]f(x)=\operatorname{sign}\left[\sum_{i=1}^{N} \alpha_{i} y_{i} k\left(x, x_{i}\right)+b\right]f(x)=sign[i=1∑Nαiyik(x,xi)+b]
回归问题回顾
给定训练数据集T={(x1,y1),⋯,(xN,yN)}T=\{(x_{1},y_{1}),\cdots , (x_{N},y_{N})\}T={(x1,y1),⋯,(xN,yN)},其中xi∈Rn,yi∈R,i=1,…,Nx_{i} \in \mathbb{R}^{n}, y_{i} \in R, i=1, \ldots, Nxi∈Rn,yi∈R,i=1,…,N;
回归(Regression
)支持向量机的目标是构造如下形式的预测函数,使得f(x)f(x)f(x)能够与样本的实际 函数值近似
f(x)=ωTφ(x)+bf(x)=\omega^{T} \varphi(x)+bf(x)=ωTφ(x)+b
最小二乘支持向量回归算法LSSVR
(1) 构建LSSVR
的优化问题的目标函数:
min12wTw+12r∑i=1Nξi2\min \frac{1}{2} w^{T} w+\frac{1}{2} r \sum_{i=1}^{N} \xi_{i}^{2}min21wTw+21ri=1∑Nξi2
(2) 相比于SVM
,其约束条件有所不同,它将SVM
的不等式约束改为等式约束:
yi=ωTφ(xi)+b+ξi,i=1,2,⋯,Ny_{i}=\omega^{T} \varphi\left(x_{i}\right)+b+\xi_{i}, i=1,2, \cdots, Nyi=ωTφ(xi)+b+ξi,i=1,2,⋯,N
(3) 构造拉格朗日函数:
L=12ωTω+12r∑i=1lξi2−∑i=1lαi{ωTφ(xi)+b+ξi−yi}L=\frac{1}{2} \omega^{T} \omega+\frac{1}{2} r \sum_{i=1}^{l} \xi_{i}^{2}-\sum_{i=1}^{l} \alpha_{i}\left\{\omega^{T} \varphi\left(x_{i}\right)+b+\xi_{i}-y_{i}\right\}L=21ωTω+21ri=1∑lξi2−i=1∑lαi{ωTφ(xi)+b+ξi−yi}
(4)根据KKT
条件,取最优值时应该满足对各变量的偏导数为0
的约束条件:
{ω=∑i=1lαiφ(xi)−∑i=1lαi=0αi=rξii=1,⋯,NωTφ(xi)+b+ξi−yi=0i=1,⋯,N\left\{\begin{array}{l} \omega=\sum_{i=1}^{l} \alpha_{i} \varphi\left(x_{i}\right) \\ -\sum_{i=1}^{l} \alpha_{i}=0 \\ \alpha_{i}=r \xi_{i} \quad i=1, \cdots, N \\ \omega^{T} \varphi\left(x_{i}\right)+b+\xi_{i}-y_{i}=0 \quad i=1, \cdots, N \end{array}\right.⎩⎪⎪⎨⎪⎪⎧ω=∑i=1lαiφ(xi)−∑i=1lαi=0αi=rξii=1,⋯,NωTφ(xi)+b+ξi−yi=0i=1,⋯,N
消去www和ξ\xiξ得到线性系统:
[01T1ZZT+r−1I][bα]=[0y]\left[\begin{array}{cc} 0 & \mathbf{1}^{T} \\ \mathbf{1} & \boldsymbol{Z} \boldsymbol{Z}^{T}+r^{-1} \boldsymbol{I} \end{array}\right]\left[\begin{array}{l} b \\ \alpha \end{array}\right]=\left[\begin{array}{l} 0 \\ y \end{array}\right][011TZZT+r−1I][bα]=[0y]
(5) 在上式的线性方程组系统中:
{Z=[φ(x1),φ(x2),⋯,φ(xN)]Ty=[y1,y2,⋯,yN]T1=[1,1,⋯1]Tα=[α1,α2,⋯αN]T\left\{\begin{array}{l} Z=\left[\varphi\left(x_{1}\right), \varphi\left(x_{2}\right), \cdots, \varphi\left(x_{N}\right)\right]^{T} \\ y=\left[y_{1}, y_{2}, \cdots, y_{N}\right]^{T} \\ \mathbf{1}=[1,1, \cdots 1]^{T} \\ \alpha=\left[\alpha_{1}, \alpha_{2}, \cdots \alpha_{N}\right]^{T} \end{array}\right.⎩⎪⎪⎨⎪⎪⎧Z=[φ(x1),φ(x2),⋯,φ(xN)]Ty=[y1,y2,⋯,yN]T1=[1,1,⋯1]Tα=[α1,α2,⋯αN]T
(6) 令A=ZZT+r−1IA=ZZ^{T}+r^{-1}IA=ZZT+r−1I,可以求得上述线性方程组的解,进而获得回归函数。
{b=1TA−1y1TA−11α=A−1(y−b1)\left\{\begin{array}{l} b=\frac{1^{T} A^{-1} y}{1^{T} A^{-1} 1} \\ \alpha=A^{-1}(y-b 1) \end{array}\right.{b=1TA−111TA−1yα=A−1(y−b1)
得到:
f(x)=∑i=1Nαik(x,xi)+bf(x)=\sum_{i=1}^{N} \alpha_{i} k\left(x, x_{i}\right)+bf(x)=i=1∑Nαik(x,xi)+b
在Python中使用支持向量机分类算法
在Scikit-Learn
库中,支持向量机算法族都在sklearn.svm
包中,当前版本一共有8
个类。看起来也与其他机器学习算法族一样似乎有不少变种,其实并不太一样,支持向量机算法总的来说就一种,只是在核函数上有不同的选择,以及用于解决不同的问题,包括分类问题、回归问题和无监督学习问题中的异常点检测,具体为:
LinearSVC
类:基于线性核函数的支持向量机分类算法。LinearSVR
类:基于线性核函数的支持向量机回归算法。SVC
类:可选择多种核函数的支持向量机分类算法,通过“kernel”
参数可以传入“linear”
选择线性函数、传入“polynomial”
选择多项式函数、传入“rbf”
选择径向基函数、传入“sigmoid”
选择Logistics
函数作为核函数,以及设置“precomputed”
使用预设核值矩阵。默认以径向基函数作为核函数。SVR
类:可选择多种核函数的支持向量机回归算法。NuSVC
类:与SVC
类非常相似,但可通过参数“nu”
设置支持向量的数量。NuSVR
类:与SVR
类非常相似,但可通过参数“nu”
设置支持向量的数量。OneClassSVM
类:用支持向量机算法解决无监督学习的异常点检测问题。
from sklearn.datasets import load_iris
from sklearn.svm import SVC
# 载入鸢尾花数据集
X, y = load_iris(return_X_y=True)
clf = SVC().fit(X, y) # 训练模型
print(clf.predict(X)) # 分类预测
print(clf.score(X, y))
参考
【1】本文主要参考东北大学大数据科学课程SVM小节。
经典机器学习系列(八)【支持向量机】相关推荐
- MATLAB机器学习系列-7支持向量机原理及其代码实现
支持向量机原理 分类 如图,在分类中,我们需要找到一个超平面(图中包括间隔的平面)把圆圈和方框分开 原问题 间隔最小,同时保证真实输出和模型输出积大于1 对偶问题 原先的最小化问题变成了最大化问题,原 ...
- 程序员面试、算法研究、编程艺术、红黑树、机器学习5大经典原创系列集锦与总结
程序员面试.算法研究.编程艺术.红黑树.机器学习5大经典原创系列集锦与总结 (七月在线:https://www.julyedu.com/,面试 & 算法 & 机器学习在线课程) 作者: ...
- 神级:程序员面试、算法研究、编程艺术、红黑树、机器学习5大经典原创系列集锦与总结
https://blog.csdn.net/v_JULY_v/article/details/6543438 https://blog.csdn.net/v_JULY_v/article/detail ...
- SVM 支持向量机算法(Support Vector Machine )【Python机器学习系列(十四)】
SVM 支持向量机算法(Support Vector Machine )[Python机器学习系列(十四)] 文章目录 1.SVM简介 2. SVM 逻辑推导 2.1 Part1 化简限制条件 2.2 ...
- 机器学习系列19:将核函数应用于支持向量机
https://www.toutiao.com/a6701463387273953806/ 机器学习系列19:将核函数应用于支持向量机 当我们在已知参数的情况下,如何用带有核函数的支持向量机(SVM) ...
- 支持向量机回归_机器学习系列17:支持向量机
机器学习系列17:支持向量机 支持向量机(Support vector machine)是一种强大的机器学习算法,和神经网络相比,它在学习复杂的非线性方程时,能够提供更清晰和更加强大的方式.为了学习支 ...
- 机器学习系列(8)_回归算法,支持向量机
注:本篇文章参考:b站:机器学习经典算法--回归算法 文章目录 一.机器学习简介 二.回归算法 三.支持向量机要解决的问题 四.支持向量机求解目标 五.核函数变换 一.机器学习简介 机器学习应用的领域 ...
- 机器学习、数据科学与金融行业 系列八:金融科技(FinTech)下 --- 趋势分析
机器学习.数据科学与金融行业 系列八:金融科技(FinTech)下 - 趋势分析 续- 在上篇中,我们主要介绍了金融科技的关键技术和应用,以及两个重要地领域RegTech和SupTech.在本 ...
- 程序员面试、算法研究、编程艺术、红黑树、数据挖掘5大经典原创系列集锦与总结
点击打开链接(具体详情 点击链接) 程序员面试.算法研究.编程艺术.红黑树.数据挖掘5大经典原创系列集锦与总结 (七月在线:点击打开链接,面试 & 算法 & 机器学习在线课程) 作者: ...
- 机器学习系列4 使用Python创建Scikit-Learn回归模型
本文中包含的案例jupyter笔记本可在我的资源中免费下载: 机器学习系列4 使用Python创建Scikit-learn线性回归模型.ipynb 图1 使用Python和Scikit-learn库实 ...
最新文章
- 系统服务器巡查表,服务器操作系统巡检表
- bat等大公司常考java多线程面试题
- IBASE deletion timestamp verification
- apk当安装程序将文件复制到手机自带的指定文件夹
- python整数浮点数复数类型判断函数_Python数值类型(整形、浮点型和复数)及其用法讲解...
- 《Maven_孔浩》Maven介绍及安装
- 疯狂Java讲义笔记汇总
- 2019计算机二级vb考试大纲,2019年全国计算机二级VB试题
- 上海自考计算机应用基础实践,2001年4月份全国高教自考计算机应用基础试题及答案...
- 智能网联汽车仿真测试软件,智能网联汽车测试评价及检测认证
- MAC常用命令和常用软件列表
- 数据仓库实施步骤与关键成功因素
- 单片机:数码管显示实验
- word 手动双面打印设置
- Latex脚注加超链接
- 云-移动手机端项目总结
- html地图多点标记,高德地图多点标记自定义地图
- 为什么我们说“买东西”,而不说“买南北”?
- 注意避坑,Vue Router 4: 路由参数在 created/setup 时不可用
- 最大的疑问:下一跳???
热门文章
- Windows Phone开发(4):框架和页 转:http://blog.csdn.net/tcjiaan/article/details/7263146
- Visual Studio.NET 无法创建或打开应用程序之解决方法
- OSI参考模型(1)
- 二十一、K8s集群设置3-HTTPS-Cert-manager
- Linux命令使用练习二
- 初识计算机操作系统与进程
- 杭电复试笔记第七天--最终篇
- 进程与线程之间最深入形象的比喻
- GNU make manual 翻译(六十六)
- iOS 通讯录编程【总结】