本文仅针对SVM的核函数如何选择这一问题做了相关总结,不涉及其他参数的选择。总结的情况仅供参考,实际情况中还是得结合经验和实验的实际结果来选择最合适的核函数,最好都试一遍,看哪个最符合自己的数据分布特性。
linear:线性内核
- 参数少,速度快,对于一般数据,分类效果已经很理想了
linear
核可以是RBF
核的特殊情况- 数据线性可分:如果特征提取的好,很多问题都线性可分
- 数据特征维数高,跟样本量差不多
- 特征维数低,而样本数量很多,则需手工添加一些
feature
后选用linear
核- 数据量特别大:可避免造成庞大的计算量
RBF:高斯核
- 应用最广的核函数,无论是线性/非线性,高维/低维,其适用性都蛮高
- 参数多,较为耗时,分类结果非常依赖于参数
- 线性核函数是
RBF
的一个特例,也就是说如果考虑使用RBF
,那么就没有必要考虑linear
核函数了- 与
polynomial
核函数相比,RBF
需要确定的参数要少,核函数参数的多少直接影响函数的复杂程度- 初始参数的效果一般没有
linear
核好,但一般只要参数设置得当,其效果都比linear
核效果更好- 样本数量一般/较为客观,特征维数低时选
rbf
libsvm
工具箱默认选择RBF
sigmoid 核
sigmoid
核在某些参数下和RBF很像
polynomial:多项式内核
polynomial
核的参数比RBF
多,而参数越多模型越复杂RBF
核更方便计算,取值在[0,1]
;而用polynomial
核取值范围是(0,inf)
,在自由度高的情况下更凸显出劣势
总结
- 高维用
linear
,不行换特征;低维试linear
,不行换RBF
- 优先选择
RBF或linear