通俗讲解支持向量机SVM(四)用尽洪荒之力把核函数与核技巧讲得明明白白(精华篇)

点赞再看,养成习惯,您动动手指对原创作者意义非凡🤝
备战秋招面试 微信搜索公众号【TechGuide】关注更多新鲜好文和互联网大厂的笔经面经。
作者@TechGuide

当你的才华还撑不起你的野心时,你应该静下心去学习 。

前言

之前本系列也有简单提过SVM处理非线性问题,我在这篇文章会用最简单明了的语言讲明白非线性分类问题的解决方法,以及为什么要引入核函数,什么是核技巧,最后会总结一下SVM算法,拎出重点,把脉络梳理清楚。

正文

建议在看这篇之前,把通俗讲解支持向量机SVM(二)对偶性的几何解释 看一下,对SVM的对偶性有一个直观的理解,接下来会顺畅很多。好啦!准备好了吗?耐下心来,咱们开始!

一、高维映射

在这里插入图片描述
现在我们抛出一个例子,引出问题。先考虑情况一,我们可以很容易的将如上的样本集分类,用一个线性分类器即可。但是如下图的情况二呢?很明显,无法找到一条二维的线性直线将蓝黑两类点分类正确。在这里插入图片描述
怎么办呢?是的没错!就是用高维映射 φ ( ) \varphi () φ(),我们将二维坐标点A1(1,0),A2(0,1),B1(1,1),B2(0,0)
[ x y ] \left[ \begin{matrix} x \\ y \\ \end{matrix} \right] [xy]
转化到高维空间就可以用直线划分,比如转化为五维坐标点:
φ ( X ) = φ ( A or B ) = [ x 2 y 2 x y x y ] (1) \varphi(X) =\varphi(A \text{or} B) = \left[ \begin{matrix} x^2 \\ y^2 \\ x \\ y \\ xy \\ \end{matrix} \right] \tag 1 φ(X)=φ(AorB)=x2y2xyxy(1)
这样,我们得到转化到五维的四个坐标点,接着,我们再找到一条在五维的直线( ω \omega ω , b)将这四个点分开,以什么为标准呢?参照二维情况,这里我们用:
{ ω T φ ( X ) + b ≥ 1 点X ∈ 类C1 ω T φ ( X ) + b < 1 点X ∈ 类C2 (2) \begin{cases} \omega^T\varphi(X)+b \geq 1& \text{点X} \in \text{类C1}\\ \omega^T\varphi(X)+b < 1& \text{点X} \in \text{类C2} \end{cases} \tag 2 {ωTφ(X)+b1ωTφ(X)+b<1XC1XC2(2)
注意,我们是以上式为标准,找的一条直线,何谓找到一条直线呢?也就是找到其参数( ω \omega ω , b),找到的参数值为:
ω = [ − 1 − 1 − 1 − 1 4 ] \omega = \left[ \begin{matrix} -1 \\ -1 \\ -1 \\ -1 \\ 4 \\ \end{matrix} \right] ω=11114,以此标准代入参数验证这些坐标点,可以得到 { ω T φ ( A 1 ) + b = 1 点X ∈ 类C1 ω T φ ( A 2 ) + b = 3 点X ∈ 类C1 ω T φ ( B 1 ) + b = − 1 点X ∈ 类C2 ω T φ ( B 2 ) + b = − 1 点X ∈ 类C2 (2) \begin{cases} \omega^T\varphi(A1)+b = 1& \text{点X} \in \text{类C1}\\ \omega^T\varphi(A2)+b = 3& \text{点X} \in \text{类C1} \\ \omega^T\varphi(B1)+b = -1& \text{点X} \in \text{类C2}\\ \omega^T\varphi(B2)+b = -1& \text{点X} \in \text{类C2} \end{cases} \tag 2 ωTφ(A1)+b=1ωTφ(A2)+b=3ωTφ(B1)+b=1ωTφ(B2)+b=1XC1XC1XC2XC2(2),看!如此,我们很清楚的将在二维平面难以线性划分的样本集在五维平面上线性划分开来了,perfect!那说明什么呢?
事 实 上 , 任 何 样 本 集 如 果 利 用 高 维 映 射 φ ( ) {\color{red} 事实上,任何样本集如果利用高维映射}\varphi() φ() 转 化 到 无 限 维 上 都 可 以 线 性 划 分 开 ! ! ! {\color{red} 转化到无限维上都可以线性划分开!!!} 线!!!

二、什么叫核函数

看上面想的多完美,对于任意线性不可分的样本集,我们只要找到高维映射 φ ( ) \varphi() φ()就都可以在高维空间上划分开了,但是吧,事实是这个 φ ( ) \varphi() φ()并不都像上面那个例子那么容易求出来,有时是非常困难的,所以呀,我们引出了核函数(kernal function):
K ( X 1 , X 2 ) = φ ( X 1 ) T φ ( X 2 ) K(X_1,X_2) = \varphi(X_1)^T \varphi(X_2) K(X1,X2)=φ(X1)Tφ(X2)我们直接给出了核函数的形式,现在肯定有些难以理解,没关系,只要清楚核函数就是两无限维向量的内积而已,我们现在要记住我们的目的就是: 在 计 算 过 程 中 用 这 个 已 知 的 核 函 数 来 代 ! 替 ! {\color{red} 在计算过程中用这个已知的核函数来代!替!} 难 以 确 定 的 、 “ 虚 无 的 ” 的 高 维 映 射 函 数 φ ( ) {\color{red} 难以确定的、“虚无的”的高维映射函数\varphi()} φ(),由此,我们在这里总结出SVM算法最大的创意点——核技巧(Kernal Trick):我们在做分类问题的时候,可以不清楚无限维映射 φ ( ) \varphi() φ()的显示表达,只要知道核函数 K ( X 1 , X 2 ) K(X_1,X_2) K(X1,X2),那么这个优化问题仍然可解! Min       1 2 ω T ω + C ∑ i = 1 N ζ i (3) \text{Min}\,\,\,\,\, \frac{1}{2} \omega^T\omega +C\sum_{i=1}^{N} \zeta_i \tag 3 Min21ωTω+Ci=1Nζi(3) Subject to: y i ( ω T X + b ) ≥ 1 − ζ i ,       ζ i ≥ 0 \text{Subject to:} y_i(\omega^TX+b) \geq 1-\zeta_i,\,\,\,\,\,\zeta_i \geq 0 Subject to:yi(ωTX+b)1ζi,ζi0 (对于这个优化式的来由不清楚的可以查看文末链接)。

三、只有核函数K的优化问题

好啦!先喘一口气,我们总结一下,你看上面核函数的表达式,等号左边实际上是一个变量值,而等号右边是两无限维向量的内积,我们前面做的工作实际上就是引入了核函数,这里有个误区,核函数不是将低维度样本集线性不可分划分的方法,高维映射才是,核函数只是简化了这个过程,我们不需要去求解 φ ( X ) \varphi(X) φ(X)的具体形式而已!(这里有几个关于常用核函数和核函数的举例,你一看就明白了)那么为什么引入核函数呢,没错,借助它,避开 φ ( X ) \varphi(X) φ(X),解以上优化问题!准备好了吗,耐心看下去,我们接着解出上面的优化问题。
在这里插入图片描述

首先,为了后续求导方便,我们把 ζ \zeta ζ设为小于等于零,所以上述优化式改写为: Min       1 2 ω T ω − C ∑ i = 1 p i c c e n t e r N ζ i (4) \text{Min}\,\,\,\,\, \frac{1}{2} \omega^T\omega - C\sum_{i=1}^{pic_centerN} \zeta_i \tag 4 Min21ωTωCi=1piccenterNζi(4) Subject to:     1 + ζ i − y i ( ω T φ ( X ) + b ) ≤ 0 \text{Subject to:\,\,\,} 1+\zeta_i -y_i(\omega^T\varphi(X)+b) \leq 0 Subject to:1+ζiyi(ωTφ(X)+b)0 ζ i ≥ 0 \zeta_i \geq 0 ζi0 (这个部分很好理解, ζ \zeta ζ前加上负号就ok了)。
我们设 D = 1 + ζ i − y i ( ω T φ ( X ) + b ) D = 1+\zeta_i -y_i(\omega^T\varphi(X)+b) D=1+ζiyi(ωTφ(X)+b),那么这个原问题的对偶问题(dual problem)为(目标函数用了拉格朗日函数,引入了参数 α i 和 β i \alpha_i 和 \beta_i αiβi):
Maxmize   Θ ( α i , β i ) = inf ⁡ 对 于 所 有 ω , b , ζ { 1 2 ω T ω − C ∑ i = 1 N ζ i + ∑ i = 1 N β i ζ i + ∑ i = 1 N α i D } \text{Maxmize} \,\Theta(\alpha_i,\beta_i) = \inf_{对于所有\omega,b,\zeta}\left\{\frac{1}{2} \omega^T\omega - C\sum_{i=1}^{N} \zeta_i + \sum_{i=1}^N\beta_i\zeta_i+\sum_{i=1}^N\alpha_iD\right\} MaxmizeΘ(αi,βi)=ω,b,ζinf{21ωTωCi=1Nζi+i=1Nβiζi+i=1NαiD}
Subject to:     α i ≥ 0 \text{Subject to:\,\,\,}\alpha_i \geq 0 Subject to:αi0 β i ≥ 0 ,   i = 1 到 N \beta_i \geq 0,\, i=1到N βi0,i=1N
免得有人在这里犯糊涂,我在这里多唠叨几句,D表明已知有N个样本点(X,yi),我们要做的就是通过这个优化问题在所有的 ω , b , ζ \omega,b,\zeta ω,b,ζ中找到最优的那三个值,怎么算最优,就是这里最大化到什么程度,怎么求出这个值呢?套路!求导呗!
∂ Θ ∂ ω = 0 − − − − − − > ω = ∑ i = 1 N α i y i φ ( X i ) \frac{\partial \Theta}{\partial \omega} = 0 ------>\omega=\sum_{i=1}^{N}\alpha_iy_i\varphi(X_i) ωΘ=0>ω=i=1Nαiyiφ(Xi) ∂ Θ ∂ ζ = 0 − − − − − − > α i + β i = C (5) \frac{\partial \Theta}{\partial \zeta} = 0------>\alpha_i + \beta_i = C \tag 5 ζΘ=0>αi+βi=C(5) ∂ Θ ∂ b = 0 − − − − − − > ∑ i = 1 N α i y i = 0 \frac{\partial \Theta}{\partial b} = 0------>\sum_{i=1}^{N}\alpha_iy_i=0 bΘ=0>i=1Nαiyi=0我觉得大家都明白,求导比较繁琐,但肯定不难,稍耐心,肯定能得出正确结果,大家不妨算一算,看看和给出的结果是否一致。
所以,依照求导的结果代入后获得的应该是下确界的值,在maxmize它,再次改写优化问题,约掉 β \beta β,用的是(5)式:
Maxmize   Θ ( α i ) = ∑ i = 1 N α i − 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j K ( X i , X j ) \text{Maxmize} \,\Theta(\alpha_i) =\sum_{i=1}^N\alpha_i-\frac{1}{2} \sum_{i=1}^{N}\sum_{j=1}^{N}\alpha_i\alpha_jy_iy_jK(X_i,X_j) MaxmizeΘ(αi)=i=1Nαi21i=1Nj=1NαiαjyiyjK(Xi,Xj)
Subject to:     0 ≤ α i ≤ C \text{Subject to:\,\,\,}0 \leq \alpha_i \leq C Subject to:0αiC ∑ i = 1 N α i y i = 0 \sum_{i=1}^{N}\alpha_iy_i=0 i=1Nαiyi=0 ,再次分析一波,上式中yi,yj是label,已知的值。核函数K则是一开始用户确定采用的那一种核函数(比如常见的高斯核函数和多项式核函数等),而待求的则是 α i , α j \alpha_i,\alpha_j αi,αj,细心的朋友可能已经发现了,优化问题中的 φ ( X ) \varphi(X) φ(X)都慢慢“消失”,被核函数K(X1,X2)代替,这就是前面我们折腾半天的原因, 避 开 φ ( X ) , 用 K 代 替 , 这 也 是 全 篇 的 核 心 所 在 ! ! ! ! ! {\color{red} 避开\varphi(X),用K代替,这也是全篇的核心所在!!!!!} φ(X)K

四、测试样本X流程

OK,整理清楚思路,这个问题就很好解了,回归文章开头,我们在测试样本属于哪一类时,用的标准是 { ω T φ ( X i ) + b ≥ 1 y i = + 1 ω T φ ( X i ) + b < 1 y i = − 1 (6) \begin{cases} \omega^T\varphi(X_i)+b \geq 1& y_i=+1\\ \omega^T\varphi(X_i)+b < 1& y_i=-1 \end{cases} \tag 6 {ωTφ(Xi)+b1ωTφ(Xi)+b<1yi=+1yi=1(6)我们一般的思路是求出各个部分在求出结果和1比较,但是如果我们把 ω T φ ( X ) + b \omega^T\varphi(X)+b ωTφ(X)+b当作一个整体就简洁多了。那么这个整体的形式( 避开 φ ( X ) \varphi(X) φ(X),用K代替)最终是什么呢?实际上,经过代入计算可得, ω T φ ( X ) = ∑ i = 1 N α i y i K ( X i , X ) \omega^T\varphi(X) = \sum_{i=1}^{N}\alpha_iy_iK(X_i,X) ωTφ(X)=i=1NαiyiK(Xi,X),再次解释一波,这里的(Xi,yi)是已知的训练集样本,而样本X是未知的,我们正是要判断此样本的label值y。

坚持到这里啦!胜利就在前方!现在已经知道 ω T φ ( X ) \omega^T\varphi(X) ωTφ(X)的值,要想知道整体的值,还差一个b,怎么求这个b呢?没错,引出最后一个知识点,KKT条件,要想这个对偶问题的解与原问题相等,需要满足这个KKT条件,即:
对 于 ∀ i = 1 到 N { β i = 0 o r ζ i = 0 α i = 0 o r D = 0 对于\forall i = 1 \text{到} N \begin{cases} \beta_i =0 & or &\zeta_i=0\\ \alpha_i = 0&or & D=0 \end{cases} i=1N{βi=0αi=0ororζi=0D=0
因为约束 0 ≤ α i ≤ C 0 \leq \alpha_i \leq C 0αiC,则 β i = C − α i > 0 \beta_i = C-\alpha_i > 0 βi=Cαi>0,所以根据KKT条件, ζ i = 0 , and D = 0 \zeta_i=0 ,\text{and} D = 0 ζi=0,andD=0,由此可得出 b = 1 − y i ∑ i = 1 N α j y j K ( X i , X j ) y i b=\frac{1-y_i\sum_{i=1}^{N}\alpha_jy_jK(X_i,X_j)}{y_i} b=yi1yii=1NαjyjK(Xi,Xj)

五、总结

感谢你一路看到现在,我们对SVM算法做出最后的总结,帮助加深理解:

1)训练阶段

输入样本集(Xi,yi),解优化问题,得到所有的N个 α i \alpha_i αi,并由此得到 β i 和 b \beta_i和b βib

2)测试阶段

输入你想要测试的样本X,再根据(6)分类器:
{ ω T φ ( X i ) + b ≥ 1 y i = + 1 ω T φ ( X i ) + b < 1 y i = − 1 \begin{cases} \omega^T\varphi(X_i)+b \geq 1& y_i=+1\\ \omega^T\varphi(X_i)+b < 1& y_i=-1 \end{cases} {ωTφ(Xi)+b1ωTφ(Xi)+b<1yi=+1yi=1进行分类,看吧!问题完美解决了!漂亮的算法!

写到深夜了,但还是为这个美丽的算法所折服,你呢?有收获吗?

创作不易,你的鼓励是我创作的动力,如果你有收获,点个赞吧👍

我接下来还会陆续更新机器学习相关的学习笔记,补充这个系列。如果看到这里的话,说明你有认真看这篇文章,希望你能有所收获!最后,欢迎交流指正!

还有不明白的欢迎阅读其他文章:
通俗讲解支持向量机SVM(一)面试官:什么?线性模型你不会不清楚吧?
通俗讲解支持向量机SVM(二)另辟蹊径!对偶性的几何解释
通俗讲解支持向量机SVM(三)SVM处理非线性问题及软间隔之引出
通俗讲解支持向量机SVM(四)用尽洪荒之力把核函数与核技巧讲得明明白白(精华篇)

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TechGuide

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值