支持向量机实战 核函数的小试验

Posted 挖挖机ML

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了支持向量机实战 核函数的小试验相关的知识,希望对你有一定的参考价值。

        第五节介绍了SVM配合核函数进行非线性分类的机制。本节通过一个小例子来演示带核函数的SVM的分类效果。

        仍然使用PythonSklearn包来建立支持向量机分类器。用到的训练集同(鸢尾花)。首先引入用到的包,如下:

打印SVC函数,即支持向量机分类器,列出了默认的参数,其中C就是前文提到的惩罚因子;class_weight为各分类的权重;decision_function_shape为分类决策函数的类别,ovr(一对其它)和ovo(一对一);degree为多项式核的最高次方;gamma为rbf核的方差(类似正态分布的sigma),默认为auto取值为1/特征数kernel为核函数类型,本文演示:linear线性核、rbf高斯径向基核、poly多项式核、以及sigmoid核。其他参数random_state为随机种子值,tol为迭代停止的条件,默认小于0.001停止。

        下图为不同核函数的平均准确率,代码和结果如下:

支持向量机实战(六) 核函数的小试验

        在其他参数默认的情况下,鸢尾花这样只有150行的小数据集使用线性核就能达到高斯核同样高的精度0.98。

        而使用最广泛的高斯核rbf,在不同gamma值情况下的精度。如下:

支持向量机实战(六) 核函数的小试验

gamma值很小只有0.01时,高斯核函数的分布呈”瘦高型“,在训练集上准确率较高,但容易过拟合,它的交叉验证平均准确率相比其他最低(0.93)。当gamma增大到0.5时,准确率达到最高的0.98,之后继续增大gamma隔离地带会变得较宽,导致分错的数据变多,精度下降。

        再来看另一种常用的核——多项式核poly取不同次方的效果:

如上,degree取3时,交叉验证效果最好0.96,当degree继续增大一直到9次方时,出现了过拟合,准确率下降到0.94。

        最后,SVC有几个关于支持向量的属性,如下:

通过fit方法训练模型之后,模型的属性support_能给出训练得到的支持向量的样本号,而support_vectors_得到具体的支持向量样本。

        OK,到此,支持向量机的主要内容介绍完毕,希望本系列文章能起到抛砖引玉的效果,让大家能以此为基础更深入的探究支持向量机的奥秘。

        这居然是第一个完结的系列!后续还会有其他模型单独的系列文章发布。下次再见!


历史文章回顾





以上是关于支持向量机实战 核函数的小试验的主要内容,如果未能解决你的问题,请参考以下文章

机器学习之支持向量机:核函数和KKT条件的理解

机器学习之支持向量机:支持向量机的公式推导

机器学习之支持向量机:支持向量机的Python语言实现

机器学习之支持向量机:SMO算法

支持向量机SVM(3)核函数、非线性支持向量机

python实现支持向量机之非线性支持向量机和核函数(理论五)