Python3入门机器学习之9.3核函数

时间:2024-03-26 21:37:32

Python3入门机器学习

9.3 核函数

首先回顾一下SVM算法的本质,就是求解以下最优化问题:
Python3入门机器学习之9.3核函数

在求解这个最优化问题的过程中,我们需要将其变形,变成在数学上更好解的形式(不进行推导过程的介绍):
Python3入门机器学习之9.3核函数
在我们转变的这个式子中,对于样本数据集任意的两个向量都要进行向量间的点乘。如果我们想使用多项式特征的话,方块中的式子就变为如下:
Python3入门机器学习之9.3核函数
而核函数是这样的思想:有没有可能不将这两个样本点xi和xj先分别转换成xi‘ 和xj’,再做乘法,而是设置一个函数,直接对原来的样本进行数学运算,直接计算出xi‘ 和xj’。如下:
Python3入门机器学习之9.3核函数
Python3入门机器学习之9.3核函数
K函数的作用其实是想省略这一步:不需要变形了,直接拿原来的样本代进一个函数中,用这个函数直接算出来本身的xi‘ 和xj’进行点乘之后得到的结果。K函数就是核函数。
使用核函数,一方面计算量会减少,另一方面会减少存储空间。
核函数并不是SVM算法特有的一种技巧,事实上只要我们的算法转化成了最优化问题,在求解这个最优化的问题中存在xi点乘xj这样的式子或者类似的式子,都可以应用核函数技巧。

下面以多项式(二次项)核函数为例,来说明核函数是如何运作的:
Python3入门机器学习之9.3核函数
用核函数计算的结果和把x、y先变成x‘ 和y’再进行点乘的结果是一样的。只就是核函数的一个优势,大大的降低了计算的复杂度。
于是:
Python3入门机器学习之9.3核函数
在这里拓展一下,由于多项式核函数不仅仅能制造二次方的多项式特征,可以计算任意的degree特征,于是有:
Python3入门机器学习之9.3核函数
在这里C和d是两个超参数。