前言
核函数在支持向量机中得到广泛应用,并且在降低高维运算复杂度的同时提高低维运算的准确率。
常用核函数
SVM关键是选取核函数的类型,主要有线性核,多项式核,径向基核(RBF),sigmoid核。
核函数 | 计算公式 |
---|---|
线性核 | K ( x i , x j ) = x i T x j K(x_i,x_j)=x^T_ix_j K(xi?,xj?)=xiT?xj? |
多项式核 | K ( x i , x j ) = ( γ x i T x j + b ) d K(x_i,x_j)=(\gamma x_i^Tx_j+b)^d K(xi?,xj?)=(γxiT?xj?+b)d |
径向基核/高斯核 | K ( x i , x j ) = e x p ( ? γ ∣ ∣ x i ? x j ∣ ∣ 2 ) K(x_i, x_j)=exp(-\gamma \mid \mid x_i-x_j \mid\mid ^2) K(xi?,xj?)=exp(?γ∣∣xi??xj?∣∣2) |
sigmoid核 | K ( x i , x j ) = t a n h ( γ x i T x j + b ) K(x_i, x_j)=tanh(\gamma x_i^T x_j + b) K(xi?,xj?)=tanh(γxiT?xj?+b) |
线性核
主要用于线性可分的情形。参数少,速度快,对于一般数据,分类效果已经很理想了。
多项式核
多项式核的参数比RBF多,而参数越多模型越复杂
RBF核
RBF核主要用于线性不可分的情形。参数多,分类结果非常依赖于参数。有很多人是通过训练数据的交叉验证来寻找合适的参数,不过这个过程比较耗时。
使用libsvm,默认参数,RBF核比Linear核效果稍差。通过进行大量参数的尝试,一般能找到比linear核更好的效果。
至于到底该采用哪种核,要根据具体问题,有的数据是线性可分的,有的不可分,需要多尝试不同核不同参数。如果特征的提取的好,包含的信息量足够大,很多问题都是线性可分的。
当然,如果有足够的时间去寻找RBF核参数,应该能达到更好的效果。
这些函数中应用最广的应该就是RBF核了,无论是小样本还是大样本,高维还是低维等情况,RBF核函数均适用,它相比其他的函数有一下优点:
- RBF核函数可以将一个样本映射到一个更高维的空间,而且线性核函数是RBF的一个特例,也就是说如果考虑使用RBF,那么就没有必要考虑线性核函数了。
- 与多项式核函数相比,RBF需要确定的参数要少,核函数参数的多少直接影响函数的复杂程度。另外,当多项式的阶数比较高时,核矩阵的元素值将趋于无穷大或无穷小,而RBF则在上,会减少数值的计算困难。
- 对于某些参数,RBF和sigmoid具有相似的性能。
sigmoid核
下面是吴恩达的见解:
- 如果Feature的数量很大,跟样本数量差不多,这时候选用LR或者是Linear Kernel的SVM
- 如果Feature的数量比较小,样本数量一般,不算大也不算小,选用SVM+Gaussian Kernel
- 如果Feature的数量比较小,而样本数量很多,需要手工添加一些feature变成第一种情况
-更新时间:2021-05-06