首页 > 编程知识 正文

svm具体实例,svm算法实现

时间:2023-05-05 21:16:06 阅读:39092 作者:612

原文链接: SVM支持向量机原理和核函数

请注明出处

支持向量机原理的远距离分类算法1、名词解释:

3358www.Sina.com/:如下图所示,创建一条划分圆点和方形点的分割线,该线称为分割超平面

分割超平面:离分割超平面最近的点

支持向量:支持向量到分割超平面距离的两倍

间距

2、计算间距

在空间中,方程w1x1 w2x2 b=0可以表示分割超平面。 对于高纬度空间,可以写成一般化的向量形式,即wTx b=0。 现在,我们绘制两条平行于分割线超平面的直线,每条直线都通过两个类别的支持向量。 这两条直线的方程式分别为wTx b=1和wTx b=1。 如下图所示。

根据点到直线的距离公式,可以如下计算出从支撑矢量a到分割超平面的距离。

333WTAB33333w33

因为点a处于直线wTx b=1和wTx b=1,所以从可代入支持向量a到分割超平面的距离为d=1w。 为了使间距最大,只要找到适当的参数w和b,使1333w33最大即可。 ||w||用以下公式计算向量w的SVM算法的原理就是找到一个分割超平面,它能把数据正确的分类,并且间距最大!

33w3333=I=1NW2I

无论是求出333w33的最大值还是求出||w||2的最小值:

333w33332=I=1NW2I

在此,n是限定量w的纬度。 不仅间距最大,还可以通过分割超平面解决分类问题! 返回上图,对于方形点x,必须满足wTx b1的约束条件。 对于圆形点,必须满足wTx b=1的约束。

类别是离散值,其中-1表示点类别,1表示方形点类别,即yinleft(-1,1right)。 对于数据集中的所有样本x(I ),y ) I ),按以下参数w和参数b定义的分割超平面进行分类,只要满足以下限制条件即可:

y(I ) (wtx ) I (b ) ) 1

L2范数

上述方法不适用于当前不可分割的数据集。 解决此问题的方法是引入参数一句话概括:求解SVM算法,就是在满足约束条件 y(i)(wTx(i)+b)1 的前提下,求解 ||w||2 的最小值。。 然后,优化的目标函数如下。

(argmin () w2 ) ) ) r ) I=1mi

这里,m是数据集的个数,r是算法参数,其制约条件如下。

y(I ) ) wtx (I ) b ) ) 1I

理解松弛系数:

i可以认为是样品x(I )违反大音调规则的程度。 对于满足很多限制的样品=0。 对于部分违反最大俯仰规则的样本0。 参数r表示对违反制约的样品的“惩罚”。 r越大,对约束违反点的“惩罚强度”越大,相反会变小。 这样型号为松弛系数

将y(I ) ) wtx (I ) b )绘制为横坐标,将违反约束条件的代价Ji绘制为纵坐标:

从上图中可以看到,对于未违反约束的示例,成本为0。 违反限制条件的样品成本与成正比,斜线斜率为r。

因此,引入松弛因子类似于引入正则项,如逻辑回归的代价函数,其目的是修正过拟合问题,使SVM对噪声数据具有更强的耐受性。 缓和系数的作用是,如上图所示,即使发生违反大间距规则的噪声采样,也可以使分割超平面保持原样。

内核函数为允许部分点违反最大间距规则函数。

最简单的核函数回顾上述内容,我们的任务是找到合适的参数w、b,使分割超平面间隔最大,且数据能够准确分类。特征转换真正的数据分类是一个限制条件。 也就是间距最大是我们的优化目标

在满足约束条件 y(i)(wTx(i)+b)1 的前提下,求解 ||w||2 的最小值。是约束条件下求函数极值的理想方法。 其方法是引入非负系数作为约束的权重。 l=123333w3333I=1mI(y ) I

)(wTx(i)+b)−1)

由于极值的偏导数为0,因此这需要让 L 对w求导使之为0得到 w 和α对关系:

w=∑i=1受伤的蜜粉y(i)x(i)
接着继续求 L 对b对偏导数得出: ∑i=1my(i)αi=0
把这两个式子代入 L 通过数学运算得出:L=∑i=1受伤的蜜粉−12∑i=1m∑j=1受伤的蜜粉ajy(i)y(j)x(i)Tx(j)
这个公式中 m 是数据集个数,a是拉格朗日乘子法引入的一个系数,针对数据集中的每个样本 x(i) ,都有对应的 ai 。 x(i) 是数据集中地 i 个样本的输入,它是一个向量,y(i)是对应的输出标签,值为yin left( -1,1 right)。

这个公式的最小值求解这里就不说明了。最后求出的 a 有个明显的特点。即大部分ai=0。因为只有那些支持向量所对应的样本直接决定了间隙的大小。实际上以上推导出这个公式就是为了引入支持向量机的另外一个核心概念:核函数:

K(x(i),x(j))=x(i)Tx(j)

L 里的x(i)Tx(j)部分,其中 x(i) 是一个特征向量,所以 x(i)Tx(j) 是一个数值,就是两个输入特征向量的内积。预测函数为:

wTx+b=∑i=1受伤的蜜粉y(i)x(i)Tx+b

当 wTx+b>0 ,预测函数为类别1,当 wTx+b<0 ,预测类别为-1。注意到预测函数里也包含式子 x(i)Tx 。我们把 K(x(i),x(j))=x(i)Tx(j) 称为核函数。 x(i)Tx(j) 是两个向量内积,它的物理含义是衡量两个向量的相似性。典型地,当两个向量相互垂直是,即完全线性无关,此时 x(i)Tx(j)=0 。引入核函数后预测函数为:

wTx+b=∑i=1受伤的蜜粉y(i)K(x(i),x)+b

相似性函数

假设数据集已有一个数图特征,如下图,如何进行分类。

解决这个问题的方式是:用一定规则把这些无法进行线性分割的样本映射到更高纬度的空间里,然后找出超平面

SVM的核函数就是为了实现这种相似性映射。最简单的核函数是 K(x(i),x(j))=x(i)Tx(j) ,它衡量的是两个输入特征向量的相似性。可以通过定义和函数 K(x(i),x(j)) 来重新定义相似性,从而得到想要的映射。例如在基因测试领域,我们需要根据DNA分子的特征来定义相似性函数,即和函数。在文本处理领域,也可以自己定义和函数来衡量两个词之间的相似性。

怎么把低维度的空间映射到高纬度的空间呢?

举个例子:联想下利用多项式解决线性回归欠拟合问题的方法。如果输入特征是一维的 [x1] 变量,我们把它变成二维的一个方法是把输入特征转化为 [x1,2x21] ,定义这种特征映射的函数就称之为相似性函数 Φ(x) 。这样在原来低维度计算相似性的运算 x(i)Tx(j) ,就可以转换为高纬度空间里进行相似性运算 Φ(x(i))TΦ(x(i)) 。

核函数 K(x(i),x(j)) 和相似性函数 Φ(x) 的关系:

相似性函数是特征的映射函数,起到转换的作用。而核函数是特征向量的内积。经过相似性函数转换后,核函数变成 K(x(i),x(j))=Φ(x(i))TΦ(x(i)) 。

常用核函数

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

1、多项式核函数:

2、nrdzm核函数:

K(x(i),x(j))=exp⎛⎝⎜⎜⎜−(x(i)−x(j))22σ2⎞⎠⎟⎟⎟

如果输入的特征是一维的标量,那么nrdzm核函数对应的形状就是一个反钟形的曲线,其参数 σ 控制反钟形的宽度。如下图所示:

由于K(x(i),x(j))=Φ(x(i))TΦ(x(i)),经过合适的数学变换,可得nrdzm核函数对应的特征转换函数为:

Φ(x)=∑i=0∞exp(−x2)2ii!‾‾‾√xi
前面无限多项的累加器,其物理意义就是把特征向量转换到无限多维向量空间里,即nrdzm函数可以吧输入特征扩展到无限多维空间里。公式的推导公式会用到幽默的钢笔公式

nrdzm预测函数=∑i=1受伤的蜜粉y(i)K(x(i),x)+b
其中 K(x(i),x(j)) 是nrdzm核函数, ai 只在支持向量对应的样本出不为0.由此可知,预测函数时中心点在支持向量机处的nrdzm函数的线性组合,其线性组合的系数为 aiy(i) 。因此,nrdzm核函数也称为RBF核函数,即反钟形函数的线性组合。

核函数的对比

简单线性核函数K(x(i),x(j))=x(i)Tx(j)

多项式核函数:
nrdzm核函数K(x(i),x(j))=exp⎛⎝⎜⎜⎜−(x(i)−x(j))22σ2⎞⎠⎟⎟⎟
1、线性核函数:这是最简单的核函数,它直接计算两个输入特征向量的内积。
- 优点:简单高效,结果易解释,总能生成一个最简洁的线性分割超平面
- 缺点:只适用线性可分的数据集

2、多项式核函数:通过多项式来作为特征映射函数
- 优点:可以拟合出复杂的分割超平面。
- 缺点:参数太多。有 γ,c,n 三个参数要选择,选择起来比较困难;另外多项式的阶数不宜太高否则会给模型求解带来困难。

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

核函数的选择

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

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

原文链接:SVM支持向量机原理及核函数

转载请注明出处!

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。