SVM-非线性支持向量机及SMO算法

简介:

如果您想体验更好的阅读:请戳这里littlefish.top

##线性不可分情况

线性可分问题的支持向量机学习方法,对线性不可分训练数据是不适用的,为了满足函数间隔大于1的约束条件,可以对每个样本$(x_i, y_i)引进一个松弛变量\xi_i \ge 0$,使函数间隔加上松弛变量大于等于1,,

y\_i (w \cdot x\_i + b) \ge 1 - \xi\_i

目标函数变为

\frac 1 2 {||w||^2} + C \sum\_{j=1}^N \xi\_i

其中,C>0称为惩罚参数,值越大对误分类的惩罚越大,值越小对误分类的惩罚越小。

因此,最小化目标函数也就是使12||w||212||w||2尽量小(间隔尽量大),同时使误分类点的个数尽量小。

线性不可分的线性支持向量机的学习问题变成如下凸二次规划问题:

minw,b,ξ12||w||2+Ci=1Nξi s.t.yi(wxi+b)1ξi,i=1,2,...,N,ξi0,i=1,2,...,Nminw,b,ξ12||w||2+C∑i=1Nξi s.t.yi(w⋅xi+b)≥1−ξi,i=1,2,...,N,ξi≥0,i=1,2,...,N

###线性支持向量学习算法

  • 选择惩罚参数C>0,构造并求解凸二次规划问题

minα12i=1Nj=1Nαiαjyiyj(xixj)i=1Nαi s.t.i=1Nαiyi=0 0αiC,i=1,2,...,Nminα12∑i=1N∑j=1Nαiαjyiyj(xi⋅xj)−∑i=1Nαi s.t.∑i=1Nαiyi=0 0≤αi≤C,i=1,2,...,N

求得最优解α=(α1,α2,...,αN)Tα∗=(α1∗,α2∗,...,αN∗)T

  • 计算$w^*=\sum_{i=1}N \alpha_i* y_i x_i$

选择$\alpha^*的一个分量\alpha_j^*适合条件0<\alpha_j^*<C$,计算

b^\*=y\_i - \sum\_{i=1}^N y\_i \alpha\_i^\*(x\_i \cdot x\_j)

  • 求得分离超平面

w^\* \cdot x + b^\* = 0

分类决策函数:

f(x) = sign(w^\* \cdot x + b^\*)

##核函数

用线性分类方法求解非线性分类问题分为两步:首先使用一个变换将原空间的数据映射到新空间;然后在新空间里用线性分类学习方法从训练数据中学习分类模型。

核函数的空间转换

核技巧应用在支持向量机的基本思想:通过一个非线性变换将输入空间(欧式空间$RnH使或离散集合)对应于一个特征空间(希尔伯特空间H),使得在输入空间Rn$中的超曲面模型对应于特征空间H中的超平面模型(支持向量机)。

##非线性支持向量分类机

###非线性支持向量机

从非线性分类训练集,通过核函数与间隔最大化或凸二次规划,学习得到的分类决策函数:

f(x)=sign(\sum\_{i=1}^N \alpha\_i^\*y\_i K(x,x\_i) + b^\*)

称为非线性支持向量,K(x,z)K(x,z)是正定核函数。

###学习算法

  • 选择适当的核函数K(x,z)K(x,z)和适当的参数C,构造并求解最优化问题

minα12i=1Nj=1NαiαjyiyjK(xi,xj)i=1Nαi s.t.i=1Nαiyi=0,0<αi<C,i=1,2,...,Nminα12∑i=1N∑j=1NαiαjyiyjK(xi,xj)−∑i=1Nαi s.t.∑i=1Nαiyi=0,0<αi<C,i=1,2,...,N

求解最优解α=(α1,α2,...,αN)α∗=(α1∗,α2∗,...,αN∗)

  • 选择αα∗的第一个正分量0<αj<C0<αj∗<C,计算

b^\*=y\_i - \sum\_{i=1}^N \alpha\_i^\* y\_i K(x\_i \cdot x\_j)

  • 构造决策函数

f(x)=sign(\sum\_{i=1}^N \alpha\_i^\* y\_i K(x \cdot x\_i) + b^\*)

##序列最小优化算法

SMO算法是一种启发式算法。如果所有变量都满足KKT条件,那么这个最优化问题就解决了(KKT问题是该最优化问题的充要条件),否则,选择两个变量,固定其他变量,针对这两个变量构造二次规划问题。该方法会使原始二次规划问题的目标函数变小,不断分解自问题并对子问题求解进而达到求解原问题的目的。

由于

\sum\_{i=1}^N \alpha\_i y\_i = 0

所以

\alpha\_i = - \frac 1 {y\_i} \sum\_{i=2}^N \alpha\_i y\_i

###两个变量的二次规划求解

假设选择两个变量α1α2α1,α2

$$\min_{\alpha_1\alpha_2} \quad = \frac 1 2 K_{11} \alpha_12 + \frac 1 2 K_{22} \alpha_22 + y_1 y_2 K_{12} \alpha_1 \alpha_2 \
\quad (\alpha_1 + \alpha_2) + y_1 \alpha_1 \sum_{i=3}^N y_i \alpha_i K_ + y_2\alpha_2\sum_{i=3}^N y_i \alpha_i K_{12} \
s.t. \quad \alpha_1 y_1 + \alpha_2 y_2 = - \sum_{i=3}^N y_i \alpha_i = \xi \
0 \le \alpha_i \le C, i=1,2$$

由于只有两个变量$(\alpha_i,\alpha_j),因此根据两变量的符号情况约束条件可用二位空间中的图表示(参考\alpha_1 y_1 + \alpha_2 y_2 = \xi(常数)$),

二变量优化问题

L和H是αα取值的最小和最大值,如果yi!=yjyi!=yj,则

L=\max(0,\alpha\_2 - \alpha\_1), H=\min(C,C+\alpha\_2-\alpha\_1)

如果yi=yjyi=yj,则

L=\max(0,\alpha\_2 + \alpha\_1 + C), H=\min(C,\alpha\_2+\alpha\_1)

g(x) = \sum\_{i=1}^N \alpha\_i y\_i K(x\_i, x) + b

得到误差值:

E\_i = g(x\_i) - y\_i = ( \sum\_{i=1}^N \alpha\_i y\_i K(x\_i, x) + b) - y\_i$, \quad i = 1,2

此最优问题的解是:

\alpha\_2^{new} = \alpha\_2^{old} + y\_2 \frac {(E\_1 - E\_2)} \eta

其中,

\eta = K\_{11} + K\_{22} - 2K\_{12} = {||\phi(x\_1) - \phi(x\_2)||}^2

ϕ(x)ϕ(x)为输入空间到特征空间的映射,经过剪辑后是

f(n)=\begin
H,\quad \alpha_2^ > H \ 
\alpha_2^, \quad L \le \alpha_2^ \le H \ 
L,\quad \alpha_2^ < L \end
f(n)=\beginH,\quad \alpha_2^ > H \ \alpha_2^, \quad L \le \alpha_2^ \le H \ L,\quad \alpha_2^ < L \end

\alpha_1^\alpha_1^

\alpha\_1^{new} = \alpha\_1^{old} + y\_1 y\_2 (\alpha\_2^{old} - \alpha\_2^{new})

###变量的选择方法

SMO算法在每个子问题中选择两个变量优化,其中至少一个变量是违反KKT条件的。

1.第1个变量的选择

SMO算法在外层循环中选取违反KKT条件最严重的样本点,并将其对应的变量作为第1个变量,KKT条件如下

αi=0<=>yig(xi)1 0<αi<C<=>yig(xi)=1 αi=C<=>yig(xi)1αi=0<=>yig(xi)≥1 0<αi<C<=>yig(xi)=1 αi=C<=>yig(xi)≤1

其中,g(x\_i) = \sum_{j=1}^N \alpha\_j y\_j K(x\_i,x\_j)+b

该检验在ϵϵ范围内进行的,在校验过程中,外层循环首先遍历所有满足条件0<αi<C0<αi<C的样本点,即在间隔边界上的支持向量点,检验它们是否满足KKT条件。如果这些样本点都满足KKT条件,那么遍历整个训练集,检验它们是否满足KKT条件。

2.第2个变量的选择

SMO算法在内层循环,假设在外层循环中已经找到第一个变量α1α1,现在要在内层循环中找到第2个变量α2α2,第2个变量选择的标准是希望能使α2α2有足够的变化。根据上一节可知,$\alpha_2^是依赖|E_1 - E_2|的,为了加快计算速度,最简单的做法是选择|E_1 - E_2|最大的(如果E_1为负值,则选择最大的E_i作为E_2,否则选择最小的E_iE_2,需要保存所有的E_i$)。

3.计算阈值b和差值EiEi

在每次完成两个变量优化后,都要重新计算阈值b。

由KKT条件得

\sum\_{i=1}^N \alpha\_i y\_i K\_{i1} + b = y\_i

从而

b\_1^{new} = y\_1 - \sum\_{i=3}^N \alpha\_i y\_i K\_{i1} - \alpha\_1^{new} y\_1 K\_{11} - \alpha\_2^{new} y\_2 K\_{21}

由于Ei=g(xi)yi=(Ni=1αiyiK(xi,x)+b)yiEi=g(xi)−yi=(∑i=1NαiyiK(xi,x)+b)−yi, \quad i = 1,2$,则

E\_1 = g(x\_1) - y\_1 = \sum\_{i=3}^N \alpha\_i y\_i K\_{i1} + \alpha\_1^{old} y\_1 K\_{11} + \alpha\_2^{old} y\_2 K\_{21} + b^{old} - y\_1

将上式中的$y_i - \sum_{i=3}N \alpha_i y_i K_ 代入b_1$的公式中,得到

b\_1^{new} = -E\_1 - y\_1 K\_{11} (\alpha\_1^{new} - \alpha\_1^{old} ) - y\_2 K\_{21} (\alpha\_2^{new} - \alpha\_2^{old} ) + b^old

对于b的取值:

b^=\beginb_1^=b_2^, \quad 0 < \alpha_i^ < C, i =1,2 \ 
\frac {b_1^ + b_2^} 2,\quad \alpha_i^ == 0 or C,满足KKT条件\end
b^=\beginb_1^=b_2^, \quad 0 < \alpha_i^ < C, i =1,2 \ \frac {b_1^ + b_2^} 2,\quad \alpha_i^ == 0 or C,满足KKT条件\end
本文转自cococo点点博客园博客,原文链接:http://www.cnblogs.com/coder2012/p/4589963.html,如需转载请自行联系原作者
相关文章
|
12小时前
|
机器学习/深度学习 数据采集 算法
深入理解并应用机器学习算法:支持向量机(SVM)
【5月更文挑战第13天】支持向量机(SVM)是监督学习中的强分类算法,用于文本分类、图像识别等领域。它寻找超平面最大化间隔,支持向量是离超平面最近的样本点。SVM通过核函数处理非线性数据,软间隔和正则化避免过拟合。应用步骤包括数据预处理、选择核函数、训练模型、评估性能及应用预测。优点是高效、鲁棒和泛化能力强,但对参数敏感、不适合大规模数据集且对缺失数据敏感。理解SVM原理有助于优化实际问题的解决方案。
|
12小时前
|
机器学习/深度学习 人工智能 算法
探索机器学习中的支持向量机(SVM)算法
【5月更文挑战第6天】在数据科学和人工智能的广阔天地中,支持向量机(SVM)以其强大的分类能力与理论深度成为机器学习领域中的一个闪亮的星。本文将深入探讨SVM的核心原理、关键特性以及实际应用案例,为读者提供一个清晰的视角来理解这一高级算法,并展示如何利用SVM解决实际问题。
47 7
|
12小时前
|
机器学习/深度学习 人工智能 算法
探索机器学习中的支持向量机算法
【5月更文挑战第6天】 在数据科学和人工智能领域,支持向量机(SVM)是一种强大的监督学习模型,它凭借其出色的分类能力在众多机器学习任务中占据重要地位。本文旨在深入剖析支持向量机的工作原理,探讨其在高维数据处理中的优势以及面对大规模数据集时的应对策略。通过对核技巧、软间隔以及优化问题的讨论,我们将揭示SVM如何优雅地处理线性不可分问题,并保持模型的泛化性能。
|
12小时前
|
机器学习/深度学习 算法 数据挖掘
【视频】支持向量机算法原理和Python用户流失数据挖掘SVM实例(下)
【视频】支持向量机算法原理和Python用户流失数据挖掘SVM实例(下)
|
12小时前
|
算法 数据安全/隐私保护 计算机视觉
基于二维CS-SCHT变换和LABS方法的水印嵌入和提取算法matlab仿真
该内容包括一个算法的运行展示和详细步骤,使用了MATLAB2022a。算法涉及水印嵌入和提取,利用LAB色彩空间可能用于隐藏水印。水印通过二维CS-SCHT变换、低频系数处理和特定解码策略来提取。代码段展示了水印置乱、图像处理(如噪声、旋转、剪切等攻击)以及水印的逆置乱和提取过程。最后,计算并保存了比特率,用于评估水印的稳健性。
|
12小时前
|
算法 计算机视觉
基于高斯混合模型的视频背景提取和人员跟踪算法matlab仿真
该内容是关于使用MATLAB2013B实现基于高斯混合模型(GMM)的视频背景提取和人员跟踪算法。算法通过GMM建立背景模型,新帧与模型比较,提取前景并进行人员跟踪。文章附有程序代码示例,展示从读取视频到结果显示的流程。最后,结果保存在Result.mat文件中。
|
12小时前
|
资源调度 算法 块存储
m基于遗传优化的LDPC码OMS译码算法最优偏移参数计算和误码率matlab仿真
MATLAB2022a仿真实现了遗传优化的LDPC码OSD译码算法,通过自动搜索最佳偏移参数ΔΔ以提升纠错性能。该算法结合了低密度奇偶校验码和有序统计译码理论,利用遗传算法进行全局优化,避免手动调整,提高译码效率。核心程序包括编码、调制、AWGN信道模拟及软输入软输出译码等步骤,通过仿真曲线展示了不同SNR下的误码率性能。
8 1
|
12小时前
|
存储 算法 数据可视化
基于harris角点和RANSAC算法的图像拼接matlab仿真
本文介绍了使用MATLAB2022a进行图像拼接的流程,涉及Harris角点检测和RANSAC算法。Harris角点检测寻找图像中局部曲率变化显著的点,RANSAC则用于排除噪声和异常点,找到最佳匹配。核心程序包括自定义的Harris角点计算函数,RANSAC参数设置,以及匹配点的可视化和仿射变换矩阵计算,最终生成全景图像。
|
12小时前
|
算法 Serverless
m基于遗传优化的LDPC码NMS译码算法最优归一化参数计算和误码率matlab仿真
MATLAB 2022a仿真实现了遗传优化的归一化最小和(NMS)译码算法,应用于低密度奇偶校验(LDPC)码。结果显示了遗传优化的迭代过程和误码率对比。遗传算法通过选择、交叉和变异操作寻找最佳归一化因子,以提升NMS译码性能。核心程序包括迭代优化、目标函数计算及性能绘图。最终,展示了SNR与误码率的关系,并保存了关键数据。
15 1
|
12小时前
|
算法 调度
考虑需求响应的微网优化调度模型【粒子群算法】【matlab】
考虑需求响应的微网优化调度模型【粒子群算法】【matlab】