svm支持向量机核函数有哪些

如果任意给定一个数据集,通常情况下你不会知道到底采用哪种核函数效果最好 。由于你还不太了解这些数据的分布特性,我的建议是先从最简单的假设空间开始试起,然后逐步向着更为复杂的假设空间进行搜索 。
因此,如果你的数据是线性可分的情况,那么采用线性核函数,分类效果会比较理想;如果你的数据属于线性不可分的情况,那么线性核函数就帮不到你喽 。
为了简单起见,也为了看得明白,假设我们的数据集仅由2个维度构成 。在下图中,我绘制了一个鸢尾花两个数据特征的线性支持向量机的分类图:

svm支持向量机核函数有哪些

文章插图
【svm支持向量机核函数有哪些】可以看到,分类效果已经相当完美了 。接下来我们采用径向基核函数SVM再看一下:
svm支持向量机核函数有哪些

文章插图
上图来看,该数据集好像采用线性和径向基核函数SVM的分类效果都不错 。那么,为什么会倾向于更为简单的线性假设呢?在这样的特定情况下,请想想奥卡姆剃刀理论吧 。线性核函数SVM只是一个参数模型,而径向基核函数SVM则不是,它的复杂程度会随着训练数据量的增大而增加 。这意味着训练径向基核函数SVM不仅成本更高,还必须存储相应的核矩阵元素值,将数据映射到可以达到“无穷维”的高维空间,从而在高维空间将数据变成线性可分 。此外,你还要设定更多的超参数进行调整,所以,在模型选择上成本也会更高!最后还有一点,就是它很容易被过度拟合为一个复杂模型!
我得承认,我上面所说的这些核函数算法听起来都挺负面的,不过它确实非常依赖于数据参数 。举个例子吧,如果您的数据是线性不可分的,那么你采用线性分类是没有任何意义的:
svm支持向量机核函数有哪些

文章插图
在这种情况下,径向基核函数就能派上用场了:
svm支持向量机核函数有哪些

文章插图
不论在什么情况下,我都不大会用到多项式核函数 。因为在实际应用中,由于它性能的原因,导致无论是在计算还是预测方面的分类效果都差强人意 。因此,我的经验法则是:在应对线性问题时,采用线性SVM或是逻辑回归,在应对线性不可分的问题时,则使用非线性核函数,例如径向基核函数 。
顺便说一句,径向基核函数在SVM的分类区域其实也是线性分类区 。径向基核函数SVM实际上就是创建了一个特征样本的非线性组合,并将其映射到高维特征空间,由此构建出最优分类超平面:
svm支持向量机核函数有哪些

文章插图
通过上面这幅图,我们可以非常直观的将二维数据可视化 。但是,如果要解决实际问题,我们又该怎么做呢?比如说,如果我们的数据有两个以上的维度怎么办?首先,我们要着眼于我们的目标函数:将损失函数值最小化 。我们将设定一个超参数搜索,例如网格搜索 。同时通过交叉验证来寻找适合的核函数 。然后基于损失函数,或是譬如准确性、F1值、MCC曲线、 ROC曲线的auc值等性能指标,判断出哪种核函数适用于我们的任务要求 。

    推荐阅读