一、基本概念

SVM是一种二分类模型,它将实例的特征向量映射为空间中的一些点,SVM 的目的就是想要画出一条线,以 “最好地” 区分这两类点,以至如果以后有了新的点,这条线也能做出很好的分类。

线性可分:能够用一条直线对样本点进行分类的属于线性可区分

线性不可分:不能够用一条直线对样本点进行分类的属于线性不可区分

在线性不可分的情况下,为了解决数据集在空间中对应的向量无法被一个超平面区分开

需要:

利用一个非线性的映射把原数据集中的向量点转化到一个更高维度的空间中(不断映射找到一个可以线性可分的平面 -> 核函数)

在这个高维度的空间中找一个线性的超平面来根据线性可分的情况处理。

让这条线两边有尽可能大的“间隙”(最大间隔——>最优化)。

可以画出无数条线对样本进行区分,它们的区别就在于效果的好坏,每条线都可以叫做一个划分超平面,我们所希望找到的这条效果最好的线就是具有 “最大间隔的划分超平面”。

SVM 将会寻找可以区分两个类别并且能使间隔(margin)最大的划分超平面。比较好的划分超平面,样本局部扰动时对它的影响最小、产生的分类结果稳健性最好、对未见示例的泛化能力最强。

SVM 核心:选择一个最佳的一条线(超平面)

间隔:

对于任意一个超平面,其两侧数据点都距离它有一个最小距离(垂直距离),这两个最小距离的和就是间隔。

超平面方程:

标签问题:

在 SVM 中,我们不用 0 和 1 来区分,而是使用 + 1 和 - 1 来区分,这样会更严格。

假设超平面可以将训练的样本正确分类,那么对于任意样本:

 如果 y=+1,则称为正例

 如果 y=−1,则称为负例

决策问题:

最终改进为:

||w|| = sqrt(w1² + w2² + w3² + ……)

找到最优平面:

1、找到离超平面最近的点(支持向量)(最少有两个)

2、最大化这个距离

使得离超平面最近的点到超平面的距离越近越好。

二、应用实例

eg:

知道了两个支持向量点(1,1)和(2,3),设置权重为 w = ( a , 2 a ) w = (a,2a)w=(a,2a),那么将这两个支持向量点坐标分别带入公式  w T x + b = ± 1 ,中可以得到:

a+2a+w0​=−1,

2a+6a+w0​=1,

解方程组可得:a = 2/5,w0= -11/5

w=(a,2a)=(2/5,4/5)

划分超平面为 x1 +2x2 -5.5 = 0

三、核函数

线性不可不可分情况:

在二维空间无法用一条直线分开,映射到三维(或者更高维)空间即可解决。

目标:找到一个 Φ(xi​),对原始数据做一个变换。

Φ(xi​):核函数

常用核函数:

多项式核函数示例:

假如有两个数据,x1​=(x1​,x2​),x2​=(y1​,y2​),如果数据在二维空间无法线性可分,我们通过核函数将其从二维空间映射到更高的三维空间,那么此时:

f(x)=(x12​,2​x1​x2​,x22​)

更具体的例子:x1​=(1,2),x2​=(3,4) (先内积再平方与先映射再内积结果一致)

(1) 转换到三维再内积(高维运算)x1​→(1,22​,4)x2​→(9,122​,16)⟨x1​⋅x2​⟩=9+48+64=121

(2) 先内积,再平方(低维运算)⟨x1​⋅x2​⟩=3+8=11→112=121

高斯核函数:

谈一下 γ 值:

四、总结

优点:

  1. 有严格的数学理论支持,可解释性强,不同于传统的统计方法能简化我们遇到的问题。
  2. 能找出对任务有关键影响的样本,即支持向量。
  3. 软间隔可以有效松弛目标函数。
  4. 核函数可以有效解决非线性问题。
  5. 最终决策函数只由少数的支持向量所确定,计算的复杂性取决于支持向量的数目,而不是样本空间的维数,这在某种意义上避免了 “维数灾难”。
  6. SVM 在小样本训练集上能够得到比其它算法好很多的结果。

缺点:

  1. 对大规模训练样本难以实施。SVM 的空间消耗主要是存储训练样本和核矩阵,当样本数目很大时该矩阵的存储和计算将耗费大量的机器内存和运算时间。超过十万及以上不建议使用 SVM。
  2. 对参数和核函数选择敏感。支持向量机性能的优劣主要取决于核函数的选取,所以对于一个实际问题而言,如何根据实际的数据模型选择合适的核函数从而构造 SVM 算法。目前没有好的解决方法解决核函数的选择问题。
  3. 模型预测时,预测时间与支持向量的个数成正比。当支持向量的数量较大时,预测计算复杂度较高。

更多推荐