> For the complete documentation index, see [llms.txt](https://windmising.gitbook.io/liu-yu-bo-play-with-machine-learning/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://windmising.gitbook.io/liu-yu-bo-play-with-machine-learning/src/chapter11-5/11-6.md).

# 11-6 什么是核函数

![](http://windmissing.github.io/images/2019/225.png)

这是11-3中推导出来的公式。MVC本质上是这样的一个带条件的最优化问题。\
在求解这个问题的过程要，要把公式变形：

![](http://windmissing.github.io/images/2019/237.jpg)

公式中红框标出来的部分，配合前面了两层累加符号，表示样本中任意两个x相乘。\
所谓的给SVM增加多项式，就是：\
![](http://windmissing.github.io/images/2019/238.jpg)\
把x做一些变形得到x'，并且用x'代替公式中的x\
核函数的思想是：有没有可能不显式地将x转换成x'，而是直接使用一个函数得到\
![](http://windmissing.github.io/images/2019/239.jpg)

那么SVM的目标函数就可以写成：\
![](http://windmissing.github.io/images/2019/240.jpg)

K函数 = Kernel function = Kernel trick\
优点：1.节省了存储空间2.计算量变少

核函数本身不是SVM独有的技巧。只要算法转成了最优化问题，并且在求解最优化问题的过程中存在xi \* xj或者类似这样的式子，都可以应该核函数技巧。

## 多项式核函数

![](http://windmissing.github.io/images/2019/241.jpg)\
相当于给原来的x添加了二次项。\
系数前面的常数项根号2不会影响模型的训练效果。

多项式的核函数：\
![](http://windmissing.github.io/images/2019/243.jpg)\
下图是sklearn的SVM的文档，当核函数指定为poly时，degree相当于公式中的d，coef0相当于公式中的c ![](http://windmissing.github.io/images/2019/242.jpg)

线性核函数：K(x, y) = x \* y
