支持向量机matlab代码程序_第七章:支持向量机

支持向量机matlab代码程序_第七章:支持向量机_第1张图片

支持向量机(supported vector machine)是一种二分类模型,基本模型是定义在特征空间上的间隔最大的线性分类器,学习策略是间隔最大化,可形式化为求解凸二次规划的问题。

支持向量机的构建的由简至繁的模型:

1.线性可分支持向量机:硬间隔最大化

2.线性支持向量机:软间隔最大化

3.非线性支持向量机:核技巧和软间隔最大化

快速学习方法:序列最小最优化算法(SMO)

1

线性可分支持向量机与硬间隔最大化

线性可分支持向量机

考虑一个二分类问题,输入空间和输出空间为两个不同的空间。线性可分支持向量机和线性支持向量机两个空间的元素一一对应,将输入空间中的输入映射为特征空间中的特征向量。非线性支持向量机利用输入空间到特征空间的非线性映射将输入映射为特征向量。所以支持向量机的学习是在特征空间进行的。

学习的目标是在特征空间找到一个分离超平面,能将实例分到不同的类。当数据线性可分时,感知机利用误分类最小的策略,求得分离超平面,不过这时的解有无穷多个;线性可分支持向量机利用间隔最大化求最优分离超平面,这时的解是唯一的。 

函数间隔和几何间隔

一个点距离分离超平面的远近可以表示分类预测的确信程度。在超平面w.x+b=0确定的情况下,|w.x+b|能够相对的表示x距离超平面的远近,而w.x+b的符号与类标记y的符号是否一致能够表示分类是否正确。所以可以用量y(w.x+b=0)来表示分类的正确性及确信度,这就是函数间隔的概念。

函数间隔可以表示分类预测的正确性和确信度,但是选择分离超平面时,只要成比例的改变w和b,例如2w和2b,超平面并没有改变,但是函数间隔却是原来的两倍。需要对分类超平面的法向量w加约束,如规范化(L2范数),使得间隔是确定的,这时函数间隔为几何间隔。

函数间隔定义

对于给定的训练数据集T和超平面(w, b),定义超平面关于样本点(xi, yi)的函数间隔为

701dddbf1cbc92046527e7206463d1ea.png

定义超平面(w,b)关于训练数据集T的函数间隔为超平面(w,b)关于T中所有样本点(xi, yi)的函数间隔之最小值

d50b80db6f3aa8767ca2233ec12149bd.png

 几何间隔定义

对于给定的训练数据集T和a超平面(w, b),定义超平面关于样本点(xi, yi)的函数间隔为

ce23a0841df281db6c16e2f7b424f8c4.png

定义超平面(w,b)关于训练数据集T的函数间隔为超平面(w,b)关于T中所有样本点(xi, yi)的函数间隔之最小值

67c7e115b6fe02f87c93f228dfb38b08.png

间隔最大化

对训练数据找到几何间隔最大的超平面意味着以充分大的确信度对训练数据分类,不仅将正负实例点分开,而且对最难分的实例点(离超平面近的点)也有足够大的确信度将它们分开。这样对未知的新实例点有很好的分类预测能力。

 如何求得一个几何间隔最大的分离超平面?

几何间隔和函数间隔有如下关系

d988039db343ba957ce1854b720f6e6c.png

可把问题写成

6a48d4a4fb9ee21616871a69cea23451.png

函数间隔的取值并不影响最优化问题的解,不妨令函数间隔=1,并让最大化1/||w||等价为最小化||w||^2/2,问题变为凸二次规划问题

5eb59fb8b71b871b6a8faee85c739f5a.png

支持向量和间隔边界

在线性可分情况下,训练数据集的样本点中与分离超平面距离最近的样本点的实例称为支持向量(support vector),支持向量是使约束条件成立的点,即

dd91d180d6f52f8f3d31553b6f6f0035.png

对yi=+1的正例点,支持向量在超平面

ae83403a9594499e85a2bdde4621e9c2.png

对yi=-1的负例点,支持向量在超平面

20482cc2a6c5a1acd5160c66e73da846.png

H1和H2上的点就是支持向量,H1和H2之间的距离称为间隔(margin)。间隔依赖于分离超平面的法向量w,等于2/||w||。H1和H2称为间隔边界. 在决定分离超平面时只有支持向量起作用,而其他实例点并不起作用。如果移动支持向量将改变所求的解;但是如果移动其他实例点,甚至去掉这些点,则解是不会改变的。由于支持向量在确定分离超平面中起决定性作用,所以将这种分类模型称为支持向量机。支持向量的个数一般很少,所以支持向量机由很少的“重要的”训练样本确定。

支持向量机matlab代码程序_第七章:支持向量机_第2张图片

例题

正例点x1=(3,3), x2=(4,3),负例点x3=(1,1),求最大间隔分离超平面

支持向量机matlab代码程序_第七章:支持向量机_第3张图片

学习的对偶算法

这样做的优点是对偶问题往往更容易求解,二是自然引入核函数,进而推广到非线性分类问题。分类决策函数只依赖于输入x和训练样本输入的内积

支持向量机matlab代码程序_第七章:支持向量机_第4张图片

例题

正例点x1=(3,3), x2=(4,3),负例点x3=(1,1),用对偶算法求最大间隔分离超平面

支持向量机matlab代码程序_第七章:支持向量机_第5张图片

2

线性支持向量机与软间隔最大化

上述线性可分支持向量机的学习(硬间隔最大化)是理想情形,现实问题中,数据往往是线性不可分的,即样本中出现噪声或者特异点。这时可以使用软间隔最大化。线性不可分意味着某些样本点不满足函数间隔大于等于1 的约束条件,为了解决这个问题,可以对每个样本点引入一个松弛变量,使函数间隔加上松弛变量大于等于1,约束条件就变为

8489dac4b747996612789f1115d9f426.png

同时为每一个松弛变量支付一个代价,目标函数则变为

中C>0称为惩罚参数,C值越大对误分类的惩罚也越大.新目标函数包含了两层含义:使间隔尽量大,同时使误分类点的个数尽量小

f80829708c4c4652dde0ec44c0ad4a2b.png

 学习问题变成如下凸二次规划问题:

支持向量机matlab代码程序_第七章:支持向量机_第6张图片

支持向量

线性不可分的情况下,将对偶问题的解a*中对应于aj* > 0的样本点(xi,yi)的实例xi称为支持向量(软间隔的支持向量)。

支持向量机matlab代码程序_第七章:支持向量机_第7张图片

若a*

若a*=C,0

若a*=C,约束=1,则xi在分离超平面上:

若a*=C,约束>1,则xi位于分离超平面误分一侧.

合页函数

线性支持向量机学习还有另外一种解释为合页损失函数(hinge loss ftmction)

最小化以下目标函数

627ee4148fa96816d5fa58ec6fcfe4fe.png

目标函数的第1项是经验损失或经验风险

c2ac8780447e72353e9dc232786f0025.png

目标函数第二项使系数为λ的w的L2范数,是正则化项。合页损失函数是0-1损失函数的上界,由于0-1损失函数不是连续可导,优化由其构成的目标函数比较困难。图中虚线显示的是感知机的损失函数,这时当样本点被正确分类时,损失是0,否则损失是[-y(w.x+b)],相比之下合页损失函数不仅要求分类正确,而且确信度足够高时损失才是0

支持向量机matlab代码程序_第七章:支持向量机_第8张图片

3

非线性支持向量机与核函数

有时问题使非线性的,这时可以使用非线性支持机,主要特点是利用核技巧。

核技巧

给定训练数据集,若能通过一个超曲面将正负例分开,则称这个问题为非线性可分问题,非线性问题不好求解,通过非线性变换将非线性问题变换为线性问题。

支持向量机matlab代码程序_第七章:支持向量机_第9张图片

输入空间的分界面:

8619ac41f67a661f85e63a4958015f76.png

通过非线性变换:

4cb871a063ce24b6e34f58c194ee94e1.png

特征空间的分界面:

14534e101e8bd34cc77da8ce0ebb1bc2.png

通过合适的变换ϕ,可以将非线性分类问题转化为线性分类问题。

核函数

设X是输入空间(欧式空间的子集或离散集合),H为特征空间(希尔伯特空间),一般是高维甚至无穷维的.如果存在一个从X到H的映射,使得对所有x,z属于X,函数K(x,z)满足条件

879d2346ccc829fc2649729be36eb3a0.png

点乘代表内积,则称K(x,z)为核函数.

核技巧在支持向量机中的应用

核技巧的想法在学习与预测中只定义K(x,z), 而不显示的定义映射函数ϕ。直接寻找 ϕ并非易事,实际上也并不需要。因为SVM 需要的是两个样本的内积,准确的说,是新的特征空间中的样本点的内积 可以用核函数K(xi,xj)=Ф(xi)`Ф(xj)来代替. 当映射函数是非线性函数时,学习到的含有核函数的支持向量机是非线性分类模型.此时对偶问题的目标函数变为

e5fad221d5800814d5d65c680dd6a5f1.png

分类决策函数为

9cdc7f7790e7b460ed6d6ec0fa6fd13f.png

正定核

通常所说的核函数是指正定核函数.只要满足正定核的充要条件,那么给定的函数K(x,z)就是正定核函数.设K是定义在X*X上的对称函数,如果任意xi属于X,K(x,z)对应的Gram矩阵是半正定矩阵,则称K(x,z)是正定核.这一定义在构造核函数时很有用,但要验证一个具体函数是否为正定核函数并不容易,所以在实际问题中往往应用已有的核函数,核函数的有效性需要实验验证。 

常用核函数

1.多项式核函数(polynomial kernel function):

a708645b86d5bd01747562690f095c81.png 0ed1d74931813e80a59ed9d05357bbc2.png

对应的支持向量机是一个p次多项式分类器

2.高斯核函数(Gaussian krenel function):

03f46ffa0dac4b74ca42d33626bec985.png 0ed1d74931813e80a59ed9d05357bbc2.png

对应的支持向量机是高斯径向基函数(radial basis function)分类器

3.字符串核函数(string kernel function)

核函数不仅可以定义在欧氏空间上,还可以定义在离散数据的集合上.字符串核函数给出了字符串中长度等于n的所有子串组成的特征向量的余弦相似度.

核函数是如何实现非线性数据的分类的?

非线性分类的关键在于,把输入空间映射至特征空间,在特征空间实现线性分类。为了实现非线性分类,特征空间最好是无穷维的。如何理解无穷维的向量空间呢?

根据泰勒定理,任何余项收敛于0的连续可导函数可以按幂级数展开:

支持向量机matlab代码程序_第七章:支持向量机_第10张图片

实际上不需要映射函数的具体表达式,也不用计算无穷维向量内积,只需计算核函数即可,这就是“核技巧”的巧妙之处。值得注意的是超参数,它可以调节模型的复杂度,当 ϒ增大时,模型容易过拟合,当 ϒ减少时则容易欠拟合。

非线性支持向量机算法

支持向量机matlab代码程序_第七章:支持向量机_第11张图片

4

序列最小最优化SMO算法

SMO算法解如下凸二次规划问题

支持向量机matlab代码程序_第七章:支持向量机_第12张图片

这个问题中,变量使拉格朗日乘子,一个变量αi对应一个样本点(xi,yi),变量的总数等于训练样本容量N。

SMO的思路

如果所有变量都满足此优化问题的KKT条件,那么解就得到了.否则,选择两个变量,固定其他变量,针对这两个变量构建一个二次规划问题.不断地将原问题分解为子问题并对子问题求解,就可以求解原问题.注意子问题两个变量中只有一个是自由变量,另一个由等式约束确定.

SMO算法包括两个部分:

1.   求解两个变量的二次规划的解析方法

在约束条件下求最小,由于只有两个变量(α1,α2),约束可以用二维空间表示。目标函数是在一条平行于对角线的线段上的最优值,这使得两个变量的最优化问题成为实质上的单变量的最优化问题

支持向量机matlab代码程序_第七章:支持向量机_第13张图片

假设初始可行解为α old,最优解为α new,考虑沿着约束方向未经剪辑的最优解α new,unc(即未考虑不等式约束).对该问题求偏导数,并令导数为0,代入原式,令

f4c748a69dcca41c1f0868c11f7a7a57.png 49b5a8e3bbcb2baa71412bc89a647a40.png 392b9ab1417554d0d523f97c038fa8dd.png df19fd0beb236b13fe79b62c136b82bd.png

在固定其他变量的情况下,对向量α的最优化问题转化为:

支持向量机matlab代码程序_第七章:支持向量机_第14张图片

2.选择变量的启发方式

第一个变量:选取违反KKT条件最严重的样本点

第二个变量:希望使得α2变化足够大,即对应的 |E1-E2| 最大

每次更新α1, α2之后,需要同步更新b和 E1,E2

Reference: https://zhuanlan.zhihu.com/p/125735325

你可能感兴趣的:(支持向量机matlab代码程序,支持向量机的基本思想,支持向量机训练集多少个,支持向量机预测matlab代码,支持向量机鸢尾花代码)