SVM显然是线性分类器,但数据如果根本就线性不可分怎么办?
数据在原始空间(称为输入空间)线性不可分,但是映射到高维空间(称为特征空间)后很可能就线性可分了。
但是映射到高维空间同时带来一个问题:在高维空间上求解一个带约束的优化问题显然比在低维空间上计算量要大得多,这就是所谓的“维数灾难”。
于是就引入了“核函数”,核函数虽然也是把特征进行从低维到高维的转换,但是它事先在低维上进行计算,而将实质上的分类效果表现在了高维上,即避免了直接在高维空间中的复杂计算。
常用的核函数包括:
1.线性核函数(Linear Kernel)表达式为:
2.多项式核函数(Polynomial Kernel)是线性不可分SVM常用的核函数之一,表达式为:
其中,各种参数都需要自己调参定义,调参比较麻烦
3.高斯核函数(Gaussian Kernel),在SVM中也称为径向基核函数(Radial Basis Function,RBF),它是libsvm默认的核函数,也是scikit-learn默认的核函数。表达式为:
其中,γ大于0,需要自己调参定义
Sigmoid核函数(Sigmoid Kernel)也是线性不可分SVM常用的核函数之一,表达式为:
其中γ,r也都需要自己调参定义