关于惩罚因子和核函数的思考

2017/10/10 14:24
阅读数 833

最初理解的SVM是从最大化分类间隔提出的,直观的理解,最好的分类界面应该是使分割的类别越远越好,通过获得分类间隔转换成对偶问题,利用SMO算法解决。我理解的SVM的优势在于:

1.        对于二分类线性可分问题可以直接分类;

2.        对于多分类线性可分问题可以转换成一对一的二分类问题(不能算优势)

3.        对于线性不可分问题通过特征映射在新的映射空间下线性可分的问题;

4.        对于映射到高维或者无穷维可以通过核技巧解决映射的维数灾难问题。

基于以上优势,主要探讨了不同的C和不同的核函数对SVM二分类问题的影响。

对于惩罚因子C的作用,是用来权衡损失和分类间隔的权重,惩罚因子C越大,表明重视损失,如果C选取的非常大,那么如果有分错的样本,对其的惩罚非常大,将导致出现硬间隔的效果。不断增大C的值,总能实现将样本点完全正确的分类,但是这样将会导致过拟合,泛化能力不够。

通过LibSVM自带的svm-toy可以直观的看出随着C的增大,对分类效果的影响。实验中,在考虑惩罚因子C的影响的时候,选取的核函数为RBF核,C的值依次为10、25、50、100。

关于惩罚因子和核函数的思考

如果在同一个问题中,对不同的样本点用不同的惩罚因子也是可以的。通过查阅文献看到有给定正负样本不同的惩罚因子,这样对于如果正负样本点的数目差别比较大,可以对样本数目比较小的样本类别赋予较大的权重,否则此类样本错分的概率将增大。

如果对于不同的样本点赋予不同的惩罚因子,这样从理论上来说,应该会有更好的分类效果,分别考虑每个样本的惩罚因子,确定其对于错分的影响,但是这样对于复杂性又有所提高,需要单独考虑每个样本。但是对于样本点比较少的时候,比较适合分别赋予权重,有更好的效果。

关于惩罚因子C的选取是依靠经验,在LibSVM中一般取值为10或者100。

对于不同核函数的影响,一般在SVM中用到的核函数主要有RBF核、线性核、多项式核、Sigmoid核。

核函数的重要性在于可以将无穷维的映射转换为简单的点乘,对于某一特征映射,可能将原空间映射到高维空间产生维数灾难,核函数有效的解决了这个问题。文献[5]中指出不同核函数的选取对于分类效果有明显的差别,而文献[6]中则指出核函数的具体形式对分类效果的影响不大,对此,利用了小型数据集对不同核函数的效果进行验证。

实验中利用了三个训练和测试集,分别为train1.txt、test1.txt、train2.txt、test2.txt、train3.txt、test3.txt,数据集的特点如下:均为二分类问题,特征维数为二维,数据集的样本数少(仅供测试)。

 

实验中利用LibSVM的库函数仿真的效果如下:

关于惩罚因子和核函数的思考
       关于惩罚因子和核函数的思考

    关于惩罚因子和核函数的思考

从实验结果中可以看出,不同的核函数选取对于小数据集来说,影响并不大,对于分类的正确率及精度等无明显差别,但是对于线性不可分问题则有差异,并且不同的核函数对运算速度有一定的影响。

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部