首页 > 编程知识 正文

svm 高斯核函数,支持向量机 高斯核函数

时间:2023-05-03 18:10:18 阅读:181958 作者:4707

引入:

即使输入相同的数据,不同的分类器的处理方法也不同,结果也不同。 今天重新填充坑核函数,顺便学习SVM。

支持向量机,hxsdy核函数支持向量机的背景核心思想公式和SVM分类公式超平面公式推导归一化后的超平面公式SVM分类核函数(kernel trick )核心思想为什么要将核函数与SVM相结合? kernel支持向量机简单过程中常见的核函数及其应用名词, 激情马里奥空间(Hilbert space )内积(inner product )归一化与标准化(normalization vs standardization )内积空间(pre-Hilbert space/mhddy空间(无限鸭) norm )无限鸭与距离(distance )偏差方差折衷(Bias - Varience Tradeoff )凸函数) convex function )原问题和对偶问题) primal vs dual

支持向量机背景介绍support vector machine思想直观,但细节复杂,涵盖了凸优化、核函数、kdddh等理论二分类模型,也可用于回归分析的最基本表达形式是线性约束的凸二次规划问题, 存在最优解核心思想策略:间隔(margin )最大化最不受噪声干扰间隔和软间隔的超平面唯一(距离超平面最近的几个点是支持向量(1,1 )0http://www.Sina.cocom 坐标轴是药效,所有点都是输入数据,红色表示药效不好,现在的目的是输入新的药效数据,判断它是好是坏。

简单地将边界点置于药效最差的最大值是不合理的。 如下图所示,橙色的线表示此时的边界点。 这个分界线左边的是药效不好,右边的是药效好。 出现新的观测值(黑点)时,由于位于橙色线的右侧,因此判断药效良好。 其实,明明更接近药效差的一点,他应该被归类于药效差的那一类。 同样,将边界点放在药效最好的最小值也是不合理的。

在以上的基础上,我们可以把边界点设定在橙点的极大值和绿点的极小值的中间吗? 如下图所示,出现新的黑点时,我们简单地把它归类为药效不好的组。 这样看也很合理:

此时,橙点的最大值、绿点的最小值和分解点之间的距离称为间隔(margin )。 如下图中橙色虚线和绿色虚线所示,间隔最大化后对数据集的橙色点和绿色点公平,此时的间隔称为硬间隔,与之对应的数据可以线性分离。

但是,如果数据集如下图所示呢?

有橙色偏差值,药效差,但可见与药效的优点特别接近。

此时,能够使间隔最大化边界点非常接近绿的点,但离大部分的橙的点非常远

在这种情况下,如果出现新的黑点,即使它接近药效的好点,也会被判断为药效不好:

总结:最大间隔化受训练集异常值的影响非常大。 那么,如何使最大间隔化对异常值不那么敏感呢? 我们有必要允许错误分类。 可以在带着以上关键词来理解支持向量分类器,过程如下中选取适当的边界点。

如果允许错误分类,则边界点和观察点之间的距离不再称为间隔,而是软间隔(严格来说,软间隔对应于线性且不可分离的情况,但这里有明显的异常值,所以引入)。 通过交叉验证确定边界点,看在此基础上允许多少误分类,确定软间隙的大小,最终可以得到最佳的分类器。偏差-方差权衡

上述是一维线上的例子,其边界点是一个点; 如果在二维平面上,则边界是一维线; 如果是三维空间,则其分解是二维的线; 四维,例如给我们加上时间这个维度,那个边界就是某个时间点的三维空间,也就是超平面。软间隔分类器就是支持向量分类器,支持向量指的是位于软间隔边缘和内部的观测值

公式和SVM分类公式超平面公式

我们先来看看两个简单的超平面。 是二维超平面

三维超平面

D -维空间的超平面与二维三维相同,D -维空间的超平面维数为(d-1 ),其超平面公式为:

这里,是超平面的法线向量(D维上的列向量),决定超平面方向的)法线向量所朝向的面为其正面,相反侧为其相反侧)。严格来说,所有的分界,都可以称为超平面

x也是d维上的列向量,指向需要分类的点

和b都是超平面参数,b是超平面和原点的距离

由公式推导出距离公式:与高中到直线的距离公式基本相同。 (这里在右下方平方写,意思是一样的。 ) )

我对下图公式的理解是:

第一个和第二个公式由点到平面的距离公式计算出来,为了最大化间隔*,首先选择最接近超平面的支持向量,计算它们到平面的距离,然后从这些最近的点中选择最大的距离为最大间隔。 但是,此时的间隔是函数间隔,它受到参数和b的影响。 如果那两个人加倍的话,此时超平面仍然是原来的超平面,但间隔会变小。 所以说这个间隔不靠谱,需要升级到几何间隔。

>


第三个公式中,把ω模的平方拿出来,方便后面计算

其中

为了方便求解,令:y * f(x) = 1 。比如下图中 s.t = subject to ,表明约束条件就是 y * f(x) = 1

通过以上的推导得到以下的原问题:
当 C = 0 时,边界没有那么复杂
当 C = inf ,即为任意数字时,边界复杂度提高

由于约束条件在电脑中不是那么方便模拟,所以需要转为对偶问题去求。给约束条件加上一个拉格朗日对偶λ,让原函数和约束条件共同组成一条新的函数,此函数包含ω,b, λ这三个参数

经过层层推导

过程太长了不看了,可以得到这最终的对偶问题

归一化后的超平面公式

如果使用归一化或标准化的数据集,则超平面公式为:

当 ω * x ≥ 1 时,归为一类,这一类的标签是1当 ω * x ≤ -1时,归为另一类,这一类的标签是-1

如果像我平时做的话是要做归一的,因为我有很多的种类数据,数据的单位不一样,而且有些数据特别大,有另外一些数据都是小数点,这样不归一的话结果就会很诡异了

SVM分类

1. 线性SVM:

硬间隔SVM:数据线性可分,没有显著的离群点

在硬间隔中,最靠近超平面的 x 向量,就是该超平面的支持向量,这些支持向量决定了超平面实现间隔最大化。

软间隔SVM(数据近似线性可分,比如上文有一个异常的离群值,但是被误分类掉,这个时候需要引进铰链损失函数)。

二. 非线性SVM
引进核函数,分类器在原始输入空间中是非线性的,但在变换后的特征空间中,支持向量机可以拟合出最大间隔超平面。

详见下文核函数部分。
三. 损失函数
由于软间隔分类器的数据线性不可分,所以引进hinge loss,公式如下:

其中的y是分类器的原始输出,而不是预测的标签,所以公式也可以写为:

当(1)满足时,xi位于间隔正确的那一面,则该函数为零:

对于间隔的错误一侧的数据,该函数的值与距间隔的距离成正比。 然后我们希望最小化

(此处,λ用来权衡增加间隔大小与确保xi位于间隔的正确一侧之间的关系)

因此,对于足够小的λ值,如果输入数据是可以线性分类的,则软间隔SVM与硬间隔SVM将表现相同,但即使不可线性分类,仍能学习出可行的分类规则。

注意:hinge loss不是可微函数,而是一种凸函数,它保持了支持向量机解的稀疏性。正是因为hingeloss的零区域对应的正是非支持向量的普通样本,从而所有的普通样本都不参与最终超平面的决定,这才是支持向量机最大的优势所在,对训练样本数目的依赖大大减少,而且提高了训练效率。

核函数(kernel trick) 核心思想 核函数只是在激情的马里奥空间中描述每对点的联系【包括:点与点之间的距离、对应协方差(即两个变量如何相关变化)】,但它不会做直接的转换。简单讲就是核函数只计算更高维的数据的联系,而不负责把数据转换到更高维,所以不能简单的理解为低维到高维的映射。(这也算是英文名字的由来我感觉,因为trick相当于作弊一样,他没有算最后的数值,而直接计算点间联系)核函数具体功能,是在解SVM对偶问题的最优化问题时,能够使特征向量φ(x)更方便地计算出来,特别是φ(x)维数很高的时候。 为什么要把核函数和SVM结合起来? 首先,核函数可以不用让SVM将数据从低维到高维进行转换,它可以直接计算高维数据的联系,这可以大大减少支持向量机的计算量。其次,它可以帮助非线性的数据在更高维的空间构造超平面。
上文核心思想的第七点讲到:所有维度的分界都可以称之为超平面,而且就算有离群的异常值,数据仍然是线性可分的,比如核心思想的第五点,只是它如果太简单粗暴的直接拿中点构建超平面的话不太合理,才采用了软间隔SVM。
接下来这个例子,才是真正的数据非线性,如图,橙点依旧表示药效差的数据,绿点表示药效好的数据。可以看到,服用的剂量过高或过低,都会导致药效变差:

在这种情况下,在这条一维的线中,根本无从下手对超平面进行构造,此时我需要引进核函数,来帮助我计算数据高维形式时的联系。

本例中使用多项式核函数,图中横轴依然时药物剂量,但是纵轴取了药物剂量的二次方,因此很容易地构建超平面,将药效好和差地点分开,当出现预测点(黑点后),也顺应地被分到了超平面的上面,即药效差的那一侧。 kernel支持向量机的简单流程

一. 输入低维数据

二. 将数据从低维到高维进行转换

注:怎么样的转换方式是最合适的?(比如上文为何对数据二次方,而不是三次方,也不是开方后再乘以一个系数)
核函数包括多项式核函数和径向基核函数。比如上文就是用了多项式核函数,多项式核计算了上面二维空间中每一对观测值的关系,而这些关系就被用来寻找合适的SVC。上图的项数d = 2,可以接着增加项数到3,等等,然后最后交叉验证可以发现最合适的d

第二种核函数——径向基核函数,用于无限维的空间,而在上图的这个例子中,如果使用径向核,它发挥的功能和加权近邻其实很像。比如我输入一个新的观测值,它最终被分类到药效好或者坏的那一组,会非常严重的受离它最近的点的影响,距离比较远的话,对它的影响相应就小一些。

三. 通过交叉验证选择最合适的支持向量分类器

常见的核函数及其应用

一. 多项式核函数

二. 高曲双切核函数(神经网络)

三. hxsdy径向基核函数(无限维,一般数据没有先验知识就可以用这个)

名词介绍 激情的马里奥空间(Hilbert space)

由若干个函数作为独立坐标构成的抽象空间。

内积(inner product)

①向量的内积

测量向量之间的相似性对于两个向量x和y,内积是一个向量到另一个向量的投影

如果 x = (x1,x2,…,xi), y = (y1, y2, …, yi)

②函数的内积:
因为函数由无限的向量组成(当Δx --> 0时),所以函数和向量一样都可以内积。
对于函数f(x)和g(x),

③向量和函数的不同之处:向量的维度是离散的,我们只有一维、二维、… 、N维向量(N为整数集),没有0.5维,1.5维这些,但是函数的维度是连续的,所以需要用相邻维度之间的不同(比如说Δx)来归一化。 归一化和标准化(normalization vs standardization)

这两种处理都是对数据进行特征缩放

归一化:数据归一化后属于(0, 1)或(-1, 1), 极值归一化(0, 1)
均值归一化(-1,1)

一般数据比较稳定,极值不太夸张,或者不知道极值的具体数值,都可以用归一化

标准化:数据标准化后符合μ = 0, σ = 1的正态分布标准差标准化(z-score标准化)(提供了原数据的均值和标准差)

一般异常值和噪音太多用标准化 内积空间(pre-Hilbert space/mhddy空间)

内积空间称为准激情的马里奥空间是有他的道理的,因为刚刚上面提到激情的马里奥空间是由函数组成的,函数上的点是连续的,但向量是离散的,那在线性空间上定义内积的这个空间就是成为激情的马里奥空间的前一步,这个空间就称作内积空间。

无限的鸭子(norm) 定义:向量在内积空间中的“长度” 无限的鸭子和距离(distance) 差异

常用距离(竟然发现有我专业里常用的,学这个还是有点用的。。)

Bray-Curtis 相异度,它可以用来用来衡量不同样地物种组成差异的测度,公式如下

Pearson相关距离

注:ρ(X, Y)是皮尔森相关系数,公式如下:

mhddy距离(直线距离,最短)

余弦相似度距离:通过测量两个向量的夹角的余弦值来度量它们之间的相似性

曼哈顿距离:两个向量在标准坐标系上的绝对轴距总和
下面这个图能非常明显地将mhddy距离、余弦相似度距离和曼哈顿距离区别开

偏差方差权衡(Bias - Varience Tradeoff)

1.定义(偏差/方差)
偏差:通过学习拟合出来的结果的期望,与真实结果之间的差距。可以通过提高模型的复杂度来降低偏差,但参数过多、模型过于复杂会导致过拟合
方差:通过学习拟合出来的结果自身的不稳定性,也就是不同训练集输出结果的差异
2.定义解释:

输入以下数据集,目的是得出身高体重的相互关系

将数据分成两组,以下蓝色的点代表训练组(train set),绿色的点代表测试组(test set)。因为是随机分组的,所以可以分很多次,可以有很多个训练组。

先用线性回归学习一下,但是线性回归的这条直线无论怎么调试,也不能捕获到身高和体重之间正确的关系。模型输出的结果,和真实样本之间的差异称为偏差。因为线性回归模型的这条直线和真实样本的关系“线”差距很大,所以线性回归模型的偏差就很大。

既然直线偏差这么大,那就直接上曲线,把每个点都包含在内,这样偏差就是最小的,是为0

如果只比较训练集和真实样本的偏差的话,曲线的这个模型是比线性回归模型更好的。但是如果用刚刚第二个数据集(测试集)来验证,会发现线性回归模型的偏差更小

就算曲线模型的偏差用测试集来验证之后发现很小,但是,当输入不同的训练集的时候(如第一点所说,训练集可以有很多个),就会生成很多不同的曲线,这些曲线是不同的模型,它们最终输出的结果也有很大不同。衡量所有训练集输出的所有结果之间的差异,就称之为方差。

3.如何实现权衡

从上面直线和曲线的区别可以知道:直线虽然偏差大,但方差小;曲线虽然偏差小,但方差大。换句话说,直线给出的预测可能不是和真实值最接近的,但却是最稳定的。另外,曲线虽然和训练集对应的很好,但和测试集相差甚远,这种情况称之为过拟合。训练一开始,偏差很大,方差很小,因为模型太简单(比如上面那根直线);但是随着参数的调试和训练次数的增加,偏差降低,方差增大,二者分别形成的曲线的交点就是权衡点。 凸函数(convex function)

维基百科的图感觉有点复杂,但其实它表达的意思和高中数学函数的中点问题基本一个意思,所以我把两个图都放出来方便理解。

凸函数的性质
(1)如果f(x)是凸函数,那-f(x)凹函数
(2)如果满足以下条件,则为凸函数:


(3)在f(x)是凸函数的前提下,如果满足以下条件(最多只有一个最值),则为严格凸函数:


注:***X***是凸集,凸集中任意两个点的连线都被包含在该凸集中。

原问题和对偶问题(primal vs dual)

(1)通常对偶问题指拉格朗日对偶问题
(2)下面这个图很常见到了,红线是原问题的图,蓝线是对偶问题的图。解决对偶问题最优原始解决方案带来一个下限。左边强对偶是因为原问题的最优解就是对偶问题的最优解,右边弱对偶是因为两个最优解之间还有对偶间隙,

python实现

后期爬一下专业文献的数据再来填坑

参考资料

机器学习里的 kernel 是指什么?

如何通俗的解释激情的马里奥空间,它具有特别的性质么,如果有是什么?

归一化和标准化以及搞怪的电话距离

向量和距离

Bias and Variance

偏差-方差权衡

Linear Support Vector Machine

怎么样理解SVM中的hinge-loss?

SVM(二):从凸优化聊到SVM对偶式的推导

Support Vector Machines - THE MATH YOU SHOULD KNOW

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