您的位置:首页 > 其它

SVM—当样本数小于维度的时候

2015-09-13 21:28 411 查看
比如:人脸识别的时候,两个人脸的样本数分别为5,PCA降维后维度为35。

用SVM训练的模型进行分类时候,往往发现线性核要比高斯核正确率高。这是为什么?

我想到的原因如下,并不一定正确,欢迎网友指正:

(1)一般来说,当选取高斯核函数时候,训练得到的函数(就是那个分类超平面)可以以任意高的精度逼近给定的连续函数,这意味着用高斯核的效果至少不会比线性核差。但是问题在于,g值的选择会对得到的分类超平面有很大的影响,能否选择到合适的g就决定了分类器的效果。当选择的g不好的时候,效果比线性核差也是合理的。

(2)当样本数比维度少的时候,在原始的样本空间上,样本一定是线性可分的,一定可以找到那样的超平面,但是有一个前提,样本在原始空间上不能够同在一个超平面上。比如三维情况下,两个类别的样本都只有两个,只要这四个样本不在一个平面上,就一定可以找到一个超平面将他们分开(我没有找到数学上的证明,也不太确定是否真的正确,希望有网友可以证明下)。就是说,样本的维度为n,只要样本不要全部都分布在同一个超平面上,就可在n维上找一个超平面将他们分开。但是在这种特殊情况下需要注意的是,原始样本空间可以线性可分,并不意味着用线性核训练得到的超平面就一定好。因为样本太少,它很可能没有办法充分体现该类别的分布,会出现欠学习的现象。当然利用高斯核得到的超平面可能会比较好,但是也可能更差(原因如上)。

说到这里,让我回想起高斯核的作用不就是把样本的维度映射到更高维度而实现线性可分的吗?当维度本来就远比样本数多,相对样本数,可以说已经处于高维了,岂不是也可以线性可分了呢?当然我觉得略有不同,但是意思可能是差不多的。

当然很多问题中,比如维度过高,或者样本海量的情况下,大家更倾向于用线性核,因为效果相当,但是在速度和模型大小方面,线性核会有更好的表现。

如果可以,最好能够选择比较有代表性的样本,它会训练后得到更好的分类器。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: