深入浅出机器学习技法(三):核支持向量机(KSVM)

简介: 上节课我们主要介绍了SVM的对偶形式,即dual SVM。Dual SVM也是一个二次规划问题,可以用QP来进行求解。之所以要推导SVM的对偶形式是因为:首先,它展示了SVM的几何意义;然后,从计算上,求解过程“好像”与所在维度d^无关,规避了d^很大时难以求解的情况。

1Kernel Trick


我们上节课推导的dual SVM是如下形式:

42.png


43.png

44.png45.png46.png


我们先来看一个简单的例子,对于二阶多项式转换,各种排列组合为:47.png


这里提一下,为了简单起见,我们把x0=1包含进来,同时将二次项x1x2和x2x1也包含进来。转换之后再做内积并进行推导,得到:


48.png


49.png

至此,我们发现如果把特征转换和z空间计算内积这两个步骤合并起来,有可能会简化计算。因为我们只是推导了二阶多项式会提高运算速度,这个特例并不具有一般推论性。但是,我们还是看到了希望。


我们把合并特征转换和计算内积这两个步骤的操作叫做Kernel Function,用大写字母K表示。例如刚刚讲的二阶多项式例子,它的kernel function为:

50.png


有了kernel function之后,我们来看看它在SVM里面如何使用。在dual SVM中,二次项系数qn,m中有z的内积计算,就可以用kernel function替换:


51.png


所以,直接计算出K(xn,xm),再代入上式,就能得到qn,m的值。


qn,m值计算之后,就能通过QP得到拉格朗日因子αn。然后,下一步就是计算b(取αn>0的点,即SV),b的表达式中包含z,可以作如下推导:


52.png


这样得到的b就可以用kernel function表示,而与z空间无关。


最终我们要求的矩可以作如下推导:



53.png


至此,dual SVM中我们所有需要求解的参数都已经得到了,而且整个计算过程中都没有在z空间作内积,即与z无关。我们把这个过程称为kernel trick,也就是把特征转换和计算内积两个步骤结合起来,用kernel function来避免计算过程中受d^的影响,从而提高运算速度。


54.jpg

那么总结一下,引入kernel funtion后,SVM算法变成:


55.jpg


分析每个步骤的时间复杂度为:

56.png


我们把这种引入kernel function的SVM称为kernel SVM,它是基于dual SVM推导而来的。kernel SVM同样只用SV(αn>0)就能得到最佳分类面,而且整个计算过程中摆脱了d^的影响,大大提高了计算速度。


2Polynomial Kernel


我们刚刚通过一个特殊的二次多项式导出了相对应的kernel,其实二次多项式的kernel形式是多种的。例如,相应系数的放缩构成完全平方公式等。下面列举了几种常用的二次多项式kernel形式:

57.png


比较一下,第一种Φ2(x)(蓝色标记)和第三种Φ2(x)(绿色标记)从某种角度来说是一样的,因为都是二次转换,对应到同一个z空间。但是,它们系数不同,内积就会有差异,那么就代表有不同的距离,最终可能会得到不同的SVM margin。所以,系数不同,可能会得到不同的SVM分界线。通常情况下,第三种Φ2(x)(绿色标记)简单一些,更加常用。


58.png


不同的转换,对应到不同的几何距离,得到不同的距离,这是什么意思呢?举个例子,对于我们之前介绍的一般的二次多项式kernel,它的SVM margin和对应的SV如下图(中)所示。对于上面介绍的完全平方公式形式,自由度γ=0.001,它的SVM margin和对应的SV如下图(左)所示。比较发现,这种SVM margin比较简单一些。对于自由度γ=1000,它的SVM margin和对应的SV如下图(右)所示。与前两种比较,margin和SV都有所不同。


59.jpg


通过改变不同的系数,得到不同的SVM margin和SV,如何选择正确的kernel,非常重要。


归纳一下,引入ζ≥0和γ>0,对于Q次多项式一般的kernel形式可表示为:


60.png


所以,使用高阶的多项式kernel有两个优点:


  • 得到最大SVM margin,SV数量不会太多,分类面不会太复杂,防止过拟合,减少复杂度
  • 计算过程避免了对d^的依赖,大大简化了计算量。


61.jpg


顺便提一下,当多项式阶数Q=1时,那么对应的kernel就是线性的,即本系列课程第一节课所介绍的内容。对于linear kernel,计算方法是简单的,而且也是我们解决SVM问题的首选。还记得机器学习基石课程中介绍的奥卡姆剃刀定律(Occam’s Razor)吗?


3Gaussian Kernel


刚刚我们介绍的Q阶多项式kernel的阶数是有限的,即特征转换的d^是有限的。但是,如果是无限多维的转换Φ(x),是否还能通过kernel的思想,来简化SVM的计算呢?答案是肯定的。


先举个例子,简单起见,假设原空间是一维的,只有一个特征x,我们构造一个kernel function为高斯函数:

62.png

构造的过程正好与二次多项式kernel的相反,利用反推法,先将上式分解并做泰勒展开:


63.jpg


将构造的K(x,x’)推导展开为两个Φ(x)和Φ(x′)的乘积,其中:


64.png


通过反推,我们得到了Φ(x),Φ(x)是无限多维的,它就可以当成特征转换的函数,且d^是无限的。这种Φ(x)得到的核函数即为Gaussian kernel。


更一般地,对于原空间不止一维的情况(d>1),引入缩放因子γ>0,它对应的Gaussian kernel表达式为:


65.png

那么引入了高斯核函数,将有限维度的特征转换拓展到无限的特征转换中。根据本节课上一小节的内容,由K,计算得到αn和b,进而得到矩gSVM。将其中的核函数K用高斯核函数代替,得到:

66.png

通过上式可以看出,gSVM有n个高斯函数线性组合而成,其中n是SV的个数。而且,每个高斯函数的中心都是对应的SV。通常我们也把高斯核函数称为径向基函数(Radial Basis Function, RBF)。

67.png


总结一下,kernel SVM可以获得large-margin的hyperplanes,并且可以通过高阶的特征转换使EinEin尽可能地小。kernel的引入大大简化了dual SVM的计算量。而且,Gaussian kernel能将特征转换扩展到无限维,并使用有限个SV数量的高斯函数构造出矩gSVM。68.png


值得注意的是,缩放因子γ取值不同,会得到不同的高斯核函数,hyperplanes不同,分类效果也有很大的差异。举个例子,γ分别取1, 10, 100时对应的分类效果如下:



70.jpg


从图中可以看出,当γ比较小的时候,分类线比较光滑,当γ越来越大的时候,分类线变得越来越复杂和扭曲,直到最后,分类线变成一个个独立的小区域,像小岛一样将每个样本单独包起来了。为什么会出现这种区别呢?这是因为γ越大,其对应的高斯核函数越尖瘦,那么有限个高斯核函数的线性组合就比较离散,分类效果并不好。所以,SVM也会出现过拟合现象,γ的正确选择尤为重要,不能太大。


4Comparison of Kernels


目前为止,我们已经介绍了几种kernel,下面来对几种kernel进行比较。


首先,Linear Kernel是最简单最基本的核,平面上对应一条直线,三维空间里对应一个平面。Linear Kernel可以使用上一节课介绍的Dual SVM中的QP直接计算得到。


71.png


Linear Kernel的优点是计算简单、快速,可以直接使用QP快速得到参数值,而且从视觉上分类效果非常直观,便于理解;缺点是如果数据不是线性可分的情况,Linear Kernel就不能使用了。

72.png

然后,Polynomial Kernel的hyperplanes是由多项式曲线构成。73.png

Polynomial Kernel的优点是阶数Q可以灵活设置,相比linear kernel限制更少,更贴近实际样本分布;缺点是当Q很大时,K的数值范围波动很大,而且参数个数较多,难以选择合适的值。74.jpg

对于Gaussian Kernel,表示为高斯函数形式。75.png

Gaussian Kernel的优点是边界更加复杂多样,能最准确地区分数据样本,数值计算K值波动较小,而且只有一个参数,容易选择;缺点是由于特征转换到无限维度中,w没有求解出来,计算速度要低于linear kernel,而且可能会发生过拟合。


76.jpg

除了这三种kernel之外,我们还可以使用其它形式的kernel。首先,我们考虑kernel是什么?实际上kernel代表的是两笔资料x和x’,特征变换后的相似性即内积。但是不能说任何计算相似性的函数都可以是kernel。有效的kernel还需满足几个条件:


  • K是对称的
  • K是半正定的


这两个条件不仅是必要条件,同时也是充分条件。所以,只要我们构造的K同时满足这两个条件,那它就是一个有效的kernel。这被称为Mercer 定理。事实上,构造一个有效的kernel是比较困难的。


77.jpg



5Summary


本节课主要介绍了Kernel Support Vector Machine。首先,我们将特征转换和计算内积的操作合并到一起,消除了d^的影响,提高了计算速度。然后,分别推导了Polynomial Kernel和Gaussian Kernel,并列举了各自的优缺点并做了比较。对于不同的问题,应该选择合适的核函数进行求解,以达到最佳的分类效果。

相关文章
|
机器学习/深度学习
深入浅出机器学习技法(二):对偶支持向量机(DSVM)
上节课我们主要介绍了线性支持向量机(Linear Support Vector Machine)。
199 0
深入浅出机器学习技法(二):对偶支持向量机(DSVM)
|
机器学习/深度学习 算法 数据挖掘
干货 | 林轩田机器学习「基石+技法」历史文章汇总
干货 | 林轩田机器学习「基石+技法」历史文章汇总
165 0
|
7月前
|
机器学习/深度学习 存储 搜索推荐
利用机器学习算法改善电商推荐系统的效率
电商行业日益竞争激烈,提升用户体验成为关键。本文将探讨如何利用机器学习算法优化电商推荐系统,通过分析用户行为数据和商品信息,实现个性化推荐,从而提高推荐效率和准确性。
246 14
|
7月前
|
机器学习/深度学习 算法 数据可视化
实现机器学习算法时,特征选择是非常重要的一步,你有哪些推荐的方法?
实现机器学习算法时,特征选择是非常重要的一步,你有哪些推荐的方法?
125 1
|
7月前
|
机器学习/深度学习 算法 搜索推荐
Machine Learning机器学习之决策树算法 Decision Tree(附Python代码)
Machine Learning机器学习之决策树算法 Decision Tree(附Python代码)
|
7月前
|
机器学习/深度学习 数据采集 算法
解码癌症预测的密码:可解释性机器学习算法SHAP揭示XGBoost模型的预测机制
解码癌症预测的密码:可解释性机器学习算法SHAP揭示XGBoost模型的预测机制
324 0
|
7月前
|
机器学习/深度学习 数据采集 监控
机器学习-特征选择:如何使用递归特征消除算法自动筛选出最优特征?
机器学习-特征选择:如何使用递归特征消除算法自动筛选出最优特征?
932 0
|
7月前
|
机器学习/深度学习 人工智能 算法
探索机器学习中的支持向量机(SVM)算法
【2月更文挑战第20天】 在数据科学与人工智能的领域中,支持向量机(SVM)是一种强大的监督学习算法,它基于统计学习理论中的VC维理论和结构风险最小化原理。本文将深入探讨SVM的核心概念、工作原理以及实际应用案例。我们将透过算法的数学原理,揭示如何利用SVM进行有效的数据分类与回归分析,并讨论其在处理非线性问题时的优势。通过本文,读者将对SVM有更深层次的理解,并能够在实践中应用这一算法解决复杂的数据问题。
90 0
|
7月前
|
机器学习/深度学习 分布式计算 算法
大模型开发:你如何确定使用哪种机器学习算法?
在大型机器学习模型开发中,选择算法是关键。首先,明确问题类型(如回归、分类、聚类等)。其次,考虑数据规模、特征数量和类型、分布和结构,以判断适合的算法。再者,评估性能要求(准确性、速度、可解释性)和资源限制(计算资源、内存)。同时,利用领域知识和正则化来选择模型。最后,通过实验验证和模型比较进行优化。此过程涉及迭代和业务需求的技术权衡。
112 2
|
7月前
|
机器学习/深度学习 数据采集 存储
使用机器学习算法进行文本分类的方法与实践
本文将介绍使用机器学习算法进行文本分类的方法与实践。通过分析文本特征、选择合适的机器学习算法和构建有效的训练模型,可以实现准确和高效的文本分类任务。我们还将探讨如何处理文本数据预处理、特征提取和模型评估等方面的关键问题,以帮助读者更好地应用机器学习技术解决文本分类挑战。