【机器学习系列】之SVM核函数和SMO算法

本文介绍了SVM中的核函数概念,解释了核函数如何解决线性不可分问题,并列举了几种常用的核函数。接着详细阐述了SMO算法,包括其目标函数优化、变量选择策略和阈值b的计算。文章适合对机器学习有一定基础的读者,旨在帮助理解SVM的核心思想和算法实现。
摘要由CSDN通过智能技术生成

作者:張張張張
github地址:https://github.com/zhanghekai
【转载请注明出处,谢谢!】

【机器学习系列】之SVM硬间隔和软间隔
【机器学习系列】之SVM核函数和SMO算法
【机器学习系列】之支持向量回归SVR
【机器学习系列】之sklearn实现SVM代码

一、SVM核函数

SVM基本型假设的是训练样本是线性可分的,即存在一个划分超平面能将训练样本正确分类。然而在现实任务中,原始样本空间内也许并不存在一个能正确划分两类样本的超平面,如下图所示的“异或”问题就不是线性可分的。
在这里插入图片描述
对于这样的问题,可将样本从原始空间映射到一个更高维的特征空间,使得样本在这个特征空间内线性可分。如果原始空间是有限维,即特征数有限,那么一定存在一个高维特征空间使样本可分。

1.核函数的介绍

定义一个低维特征空间到高维特征空间的映射 ϕ \phi ϕ,令 ϕ ( x ) \phi(x) ϕ(x)表示将 x x x映射后的特征向量,将所有特征映射到一个更高的维度,让数据线性可分。此时,SVM的优化目标函数变成:
m i n ⎵ α    1 2 ∑ i = 1 m ∑ j = 1 m α i α j y i y j ϕ ( x i ) T ϕ ( x j ) − ∑ i = 1 m α i s . t .    ∑ i = 1 m α i y i = 0 0 ≤ α i ≤ C \underbrace{min}_{\alpha}\;\frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\alpha_i \alpha_j y_i y_j\phi(x_i)^T\phi(x_j)-\sum_{i=1}^{m}\alpha_i\\ s.t.\;\sum_{i=1}^{m}\alpha_iy_i=0\\ 0\leq\alpha_i\leq C α min21i=1mj=1mαiαjyiyjϕ(xi)Tϕ(xj)i=1mαis.t.i=1mαiyi=00αiC

由此可见,和线性可分SVM的优化目标函数的区别仅仅是将内积 x i T x j x_i^T x_j xiTxj替换为 ϕ ( x i ) T ϕ ( x j ) \phi(x_i)^T\phi(x_j) ϕ(xi)Tϕ(xj)
若低维特征过多,映射到高维的维度特征是程几何暴增的,解决低维特征过多的问题,于是就引出了“核函数”。

“核函数”的定义: 假设 χ \chi χ为低维输入空间, κ ( ⋅ , ⋅ ) \kappa(\cdot,\cdot) κ(,)是定义在 χ × χ \chi\times\chi χ×χ上的对称函数,则 κ \kappa κ是核函数的充要条件是当且仅当对于任意数据 D = { x 1 , x 2 , ⋯   , x m } D=\{x_1,x_2,\cdots,x_m\} D={ x1,x2,,xm}“核矩阵(kernel matrix)” k k k 总是半正定的:在这里插入图片描述
其中: κ ( x i , x j ) = ϕ ( x i ) T ϕ ( x j ) \kappa(x_i,x_j)=\phi(x_i)^T\phi(x_j) κ(xi,xj)=ϕ(xi)Tϕ(xj)
那么我们就称 κ ( x i , x j ) \kappa(x_i,x_j) κ(xi,xj)为核函数。上述定义表明:只要一个对称函数所对应的核矩阵半正定,它就能作为核函数使用。 κ ( x i , x j ) \kappa(x_i,x_j) κ(xi,xj)的计算是在低维特征空间来计算的,它避免了在高维空间计算内积的恐怖计算量。

线性不可分核函数的引入过程: 我们遇到线性不可分的样例时,常用做法是把样例特征映射到高维空间中去,但是遇到线性不可分的样例,若一律映射到高维空间,那么这个维度大小是会高到令人恐怖的。此时,核函数就体现出它的价值了,核函数的价值在于它虽然也是将特征进行从低维到高维的转换,核函数是在低维空间上进行计算,而将实质上的分类效果(利用内积)表现在了高维上,这样避免了直接在高维空间中的复杂计算,真正解决了SVM线性不可分的问题。

2.几种常用的核函数

在这里插入图片描述
此外,核函数还可以通过函数组合得到:

  • κ 1 \kappa_1 κ1 κ 2 \kappa_2 κ2为核函数,则对于任意正数 γ 1 、 γ 2 \gamma_1、\gamma_2 γ1γ2,其线性组合
    γ 1 κ 1 + γ 2 κ 2 \gamma_1\kappa_1+\gamma_2\kappa_2 γ1κ1+γ2κ2
    也是核函数。
  • κ 1 \kappa_1 κ1 κ 2 \kappa_2 κ2为核函数,则核函数的直积
    κ 1 ⨂ κ 2 ( x , z ) = κ 1 ( x , z ) κ 2 ( x , z ) \kappa_1\bigotimes\kappa_2(x,z)=\kappa_1(x,z)\kappa_2(x,z) κ1κ2(x,z)=κ1(x,z)κ2(x,z)
    也是核函数。
  • κ 1 \kappa_1 κ1为核函数,则对于任意函数 g ( x ) g(x) g(x)
    κ ( x , z ) = g ( x ) κ 1 ( x , z ) g ( z ) \kappa(x,z)=g(x)\kappa_1(x,z)g(z) κ(x,z)=g(x)κ1(x,z)g(z)
    也是核函数。

3.分类SVM算法流程

引入核函数后,SVM算法才算是比较完整了,现在对分类SVM的算法过程做一个总结,不再区分是否线性可分。
在这里插入图片描述

二、SMO算法

首先回顾下SVM的优化目标函数,SMO算法要求解如下凸二次规划的对偶问题:
m i n ⎵ α    1 2 ∑ i = 1 m ∑ j = 1 m α i α j y i y j κ ( x i , x j ) − ∑ i = 1 m α i s . t .    ∑ i = 1 m α i y i = 0 0 ≤ α i ≤ C \underbrace{min}_{\alpha}\;\frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\alpha_i \alpha_j y_i y_j\kappa(x_i,x_j)-\sum_{i=1}^{m}\alpha_i\\ s.t.\;\sum_{i=1}^{m}\alpha_iy_i=0\\ 0\leq\alpha_i\leq C α min21i=1mj=1mαiαjyiyjκ(xi,xj)i=1mαis.t.i=1mαiyi=00αiC

其应满足如下KKT条件:

{ α i ≥ 0 , μ i ≥ 0 , y i ( w T x i + b ) − 1 + ξ i ≥ 0 , α i ( y i ( w T x i + b ) − 1 + ξ i ) = 0 ξ i ≥ 0 , μ i ξ i = 0 \begin{cases}\alpha_i\geq0, \qquad \mu_i \geq0,\\[2ex] y_i(w^Tx_i+b)-1+\xi_i \geq 0,\\[2ex] \alpha_i(y_i(w^Tx_i+b)-1+\xi_i)=0\\[2ex] \xi_i\geq0,\quad \mu_i\xi_i=0\end{cases} αi0,μi0,yi(wTxi+b)1+ξi0,αi(yi(wTxi+b)1+ξi)=0ξi0,μiξi=0

SMO是一种启发式算法,其基本思路是: 它每次只优化两个变量,将其它的变量都视为常数。由于 ∑ i = 1 m α i y i = 0 \sum_{i=1}^{m}\alpha_iy_i = 0 i=1mαiyi=0,假如将 α 3 , α 4 , ⋯ , α m \alpha_3,\alpha_4,\cdots,\alpha_m α3α4αm固定,那么 α 1 、 α 2 \alpha_1、\alpha_2 α1α2之间的关系也确定了,这样SMO算法将一个复杂的优化算法转化为一个比较简单的两变量优化问题,这样目标优化函数变为:
m i n ⎵ α 1 , α 2    1 2 κ 11 α 1 2 + 1 2 κ 22 α 2 2 + y 1 y 2 κ 12 α 1 α 2 − ( α 1 + α 2 ) + y 1 α 1 ∑ i = 3 m y i α i κ i 1 + y 2 α 2 ∑ i = 3 m y i α i κ i 2 ( 1 ) s . t . α 1 y 1 + α 2 y 2 = − ∑ i = 3 m y i α i 0 ≤ α i ≤ C i = 1 , 2 \underbrace{min}_{\alpha_1,\alpha_2}\;\frac{1}{2}\kappa_{11}\alpha_1^2+\frac{1}{2}\kappa_{22}\alpha_2^2+y_1y_2\kappa_{12}\alpha_1\alpha_2-(\alpha_1+\alpha_2)+y_1\alpha_1\sum_{i=3}^{m}y_i\alpha_i\kappa_{i1}+y_2\alpha_2\sum_{i=3}^{m}y_i\alpha_i\kappa_{i2}\qquad\qquad(1)\\ s.t.\quad \alpha_1y_1+\alpha_2y_2=-\sum_{i=3}^{m}y_i\alpha_i\\ 0\leq\alpha_i\leq C\quad i=1,2 α1,α2 min21κ11α12+21κ22α22+y1y

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值