svm 简单理解

1.线性可分(linearly separable):如果很容易就可以在图中画出一条直线将两组数据点分开,就称这组数据为线性可分数据

2.分隔超平面(separating hyperplane):将数据集分隔开来的直线称为分隔超平面

3. 如果数据集是1024维的,那么就需要一个1023维的超平面来对数据进行分隔

4. 间隔(margin):数据点到分隔面的距离称为间隔

5.支持向量(support vector):离分隔超平面最近的那些点

   支持向量机的优点:泛化错误率低,计算开销不大,结果易解释

   支持向量机的缺点:对参数调节核函数的选择敏感,原始分类器不加修改仅适用于处理二类问题

    适用数据类型:数值型和标称型数据

6. 对于线性不可分的数据集,可以利用核函数(kernel)将数据转换成易于分类器理解的形式。

 将数据投影到一个线性可分的空间,然后在那个空间寻找超平面,将线性不可分转为线性可分,并且可以解决维度炸裂问题,

  如下图,如果在x轴和y轴构成的坐标系中插入直线进行分类的话, 不能得到理想的结果,或许我们可以对圆中的数据进行某种形式的转换,从而得到某些新的变量来表示数据。在这种表示情况下,我们就更容易得到大于0或者小于0的测试结果。在这个例子中,我们将数据从一个特征空间转换到另一个特征空间,在新的空间下,我们可以很容易利用已有的工具对数据进行处理,将这个过程称之为从一个特征空间到另一个特征空间的映射。在通常情况下,这种映射会将低维特征空间映射到高维空间

  这种从某个特征空间到另一个特征空间的映射是通过核函数来。

  SVM优化中一个特别好的地方就是,所有的运算都可以写成内积(inner product)的形式。向量的内积指的就是两个向量相乘,之后得到单个标量或者数值。我们可以把内积运算替换成核函数,而并不必做简化处理。将内积替换成核函数的方法被称之为核技巧(kernel trick)或者核“变电”(kernel substation)

           多项式核 ,显然刚才我们举的例子是这里多项式核的一个特例()。虽然比较麻烦,而且没有必要,不过这个核所对应的映射实际上是可以写出来的,该空间的维度是 ,其中 是原始空间的维度。
           高斯核 ,这个核就是最开始提到过的会将原始空间映射为无穷维空间的那个家伙。不过,如果 选得很大的话,高次特征上的权重实际上衰减得非常快,所以实际上(数值上近似一下)相当于一个低维的子空间;反过来,如果 选得很小,则可以将任意的数据映射为线性可分——当然,这并不一定是好事,因为随之而来的可能是非常严重的过拟合问题。不过,总的来说,通过调控参数 ,高斯核实际上具有相当高的灵活性,也是使用最广泛的核函数之一。
           线性核 ,这实际上就是原始空间中的内积。这个核存在的主要目的是使得“映射后空间中的问题”和“映射前空间中的问题”两者在形式上统一起来了。


最后,总结一下:对于非线性的情况,SVM 的处理方法是选择一个核函数 ,通过将数据映射到高维空间,来解决在原始空间中线性不可分的问题。由于核函数的优良品质,这样的非线性扩展在计算量上并没有比原来复杂多少,这一点是非常难得的。当然,这要归功于核方法——除了 SVM 之外,任何将计算表示为数据点的内积的方法,都可以使用核方法进行非线性扩展。

SVM算法核函数的选择


SVM支持向量机,一般用于二分类模型,支持线性可分和非线性划分。SVM中用到的核函数有线性核'linear'、多项式核函数pkf以及高斯核函数rbf。

当训练数据线性可分时,一般用线性核函数,直接实现可分;

当训练数据不可分时,需要使用核技巧,将训练数据映射到另一个高维空间,使再高维空间中,数据可线性划分,

但需要注意的是,若样本n和特征m很大时,且特征m>>n时,需要用线性核函数,因为此时考虑高斯核函数的映射后空间维数更高,更复杂,也容易过拟合,此时使用高斯核函数的弊大于利,选择使用线性核会更好;

若样本n一般大小,特征m较小,此时进行高斯核函数映射后,不仅能够实现将原训练数据再高维空间中实现线性划分,而且计算方面不会有很大的消耗,因此利大于弊,适合用高斯核函数;

若样本n很大,但特征m较小,同样难以避免计算复杂的问题,因此会更多考虑线性核。

常用核函数
核函数一般和应用场景相关,在不同领域所应用的核函数可能也不相同。但是实际上也有一些通用核函数“万金油”,一般有两种:多项式核函数和高斯核函数。

1、多项式核函数:

2、高斯核函数:
K(x(i),x(j))=exp⎛⎝−(x(i)−x(j))22σ2⎞⎠
K(x(i),x(j))=exp⁡(−(x(i)−x(j))22σ2)
如果输入的特征是一维的标量,那么高斯核函数对应的形状就是一个反钟形的曲线,其参数σσ控制反钟形的宽度。如下图所示:

由于K(x(i),x(j))=Φ(x(i))TΦ(x(i))K(x(i),x(j))=Φ(x(i))TΦ(x(i)),经过合适的数学变换,可得高斯核函数对应的特征转换函数为: 
Φ(x)=∑i=0∞exp(−x2)2ii!−−−√xi
Φ(x)=∑i=0∞exp⁡(−x2)2ii!xi

前面无限多项的累加器,其物理意义就是把特征向量转换到无限多维向量空间里,即高斯函数可以吧输入特征扩展到无限多维空间里。公式的推导公式会用到泰勒公式。
高斯预测函数=∑i=1maiy(i)K(x(i),x)+b
高斯预测函数=∑i=1maiy(i)K(x(i),x)+b

其中K(x(i),x(j))K(x(i),x(j))是高斯核函数,aiai只在支持向量对应的样本出不为0.由此可知,预测函数时中心点在支持向量机处的高斯函数的线性组合,其线性组合的系数为aiy(i)aiy(i)。因此,高斯核函数也称为RBF核函数,即反钟形函数的线性组合。
核函数的对比
简单线性核函数K(x(i),x(j))=x(i)Tx(j)
简单线性核函数K(x(i),x(j))=x(i)Tx(j)
多项式核函数:
多项式核函数:
 
高斯核函数K(x(i),x(j))=exp⎛⎝−(x(i)−x(j))22σ2⎞⎠
高斯核函数K(x(i),x(j))=exp⁡(−(x(i)−x(j))22σ2)

1、线性核函数:这是最简单的核函数,它直接计算两个输入特征向量的内积。 
- 优点:简单高效,结果易解释,总能生成一个最简洁的线性分割超平面 
- 缺点:只适用线性可分的数据集
2、多项式核函数:通过多项式来作为特征映射函数 
- 优点:可以拟合出复杂的分割超平面。 
- 缺点:参数太多。有γ,c,nγ,c,n三个参数要选择,选择起来比较困难;另外多项式的阶数不宜太高否则会给模型求解带来困难。

3、高斯核函数: 
- 优点:可以把特征映射到无限多维,并且没有多项式计算那么困难,参数也比较好选择。 
- 缺点:不容易解释,计算速度比较慢,容易过拟合。

核函数的选择
1、最一般的选择原则是针对数据量很大的时候,可以选择复杂一点的模型。虽然复杂模型容易过拟合,但由于数据量很大,可以有效弥补过拟合问题。如果数据集较小选择简单点的模型,否则很容易过拟合,此时特别要注意模型是否欠拟合,如果欠拟合可以增加多项式纠正欠拟合。

2、根据样本量mm和特征量nn进行选择: 
- 特征相比样本较大(如m=10~1000,n=10000):选逻辑回归或者线性函数SVM 
- 特征较少,样本量中(如m=10~10000,n=1~1000):选择高斯SVM 
- 特征量少,样本多(如m=50000+,n=1~1000):选多项式或高斯SVM

 

发布了114 篇原创文章 · 获赞 18 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/WangYouJin321/article/details/101513482