svm中常用的核函数包括哪些(svm的核函数作用是什么)
大家好!今天让创意岭的小编来大家介绍下关于svm中常用的核函数包括哪些的问题,以下是小编对此问题的归纳整理,让我们一起来看看吧。
开始之前先推荐一个非常厉害的Ai人工智能工具,一键生成原创文章、方案、文案、工作计划、工作报告、论文、代码、作文、做题和对话答疑等等
只需要输入关键词,就能返回你想要的内容,越精准,写出的就越详细,有微信小程序端、在线网页版、PC客户端
创意岭作为行业内优秀的企业,服务客户遍布全球各地,如需了解SEO相关业务请拨打电话175-8598-2043,或添加微信:1454722008
本文目录:
一、机器学习有很多关于核函数的说法,什么是核函数?核函数的作用是什么
核函数一般是为了解决维度过高导致的计算能力不足的缺陷,实质就是特征向量内积的平方。
为什么会提出核函数:
一般我们在解决一般的分类或者回归问题的时候,给出的那个数据可能在低维空间并不线性可分,但是我们选用的模型却是在特征空间中构造超平面,从而进行分类,如果在低维空间中直接使用模型,很明显,效果必然会大打折扣。
但是!如果我们能够将低纬空间的特征向量映射到高维空间,那么这些映射后的特征线性可分的可能性更大【记住这里只能说是可能性更大,并不能保证映射过去一定线性可分】,由此我们可以构造映射函数,但问题随之而来了,维度扩大,那么随之而言的计算成本就增加了,模型效果好了,但是可用性降低,那也是不行的。
于是有人提出了核函数的概念,可以在低维空间进行高维度映射过后的计算,使得计算花销大为降低,由此,使得映射函数成为了可能。举个简单的例子吧,假设我们的原始样本特征维度为2,将其映射到三维空间,随便假设我们的映射函数为f(x1,x2) = (x1^2, x2^2, 2*x1*x2),那么在三维空间中,样本线性可分更大,但是向量内积的计算开销从4提高到9【如果从10维映射到1000维,那么计算花销就提高了10000倍,而实际情况下,特征维度几万上百万十分常见】,再看对于样本n1=(a1,a2),n2=(b1,b2),映射到三维空间之后,两者的内积I1为:a1^2 * b1^2 + a2^2 * b2^2 + 4 * a1 * a2 * b1 * b2,此时,又有,n1,n2在二维空间中的内积为:a1b1 + a2b2,平方之后为I2:a1^2 * b1^2 + a2^2 * b2^2 + 4 * a1 * a2 * b1 * b2,此时 I1 和 I2 是不是很相似,只要我们将f(x1,x2)调整为: (x1^2, x2^2, 根号(2*x1*x2) ) ,那么此时就有I1 = I2,也就是说,映射到三维空间里的内积,可以通过二维空间的内积的平方进行计算! 个人博客:www.idiotaron.org 里有关于svm核函数的描述~
实际上核函数还是挺难找的,目前常用的有多项式核,高斯核,还有线性核。
希望能帮到你,也希望有更好的想法,在下面分享下哈。
二、支持向量机(SVM)
支持向量机(support vector machine),故一般简称SVM,通俗来讲,它是一种二分类模型,其基本模型定义为特征空间上的间隔最大的线性分类器,这族分类器的特点是他们能够同时最小化经验误差与最大化几何边缘区,因此支持向量机也被称为最大边缘区分类器。其学习策略便是间隔最大化,最终可转化为一个凸二次规划问题的求解。SVM在很多诸如文本分类,图像分类,生物序列分析和生物数据挖掘,手写字符识别等领域有很多的应用。
支持向量机将向量映射到一个更高维的空间里,在这个空间里建立有一个最大间隔超平面。在分开数据的超平面的两边建有两个互相平行的超平面,分隔超平面使两个平行超平面的距离最大化。假定平行超平面间的距离或差距越大,分类器的总误差越小。
假设给定一些分属于两类的2维点,这些点可以通过直线分割, 我们要找到一条最优的分割线,如何来界定一个超平面是不是最优的呢?
如图:
在上面的图中,a和b都可以作为分类超平面,但最优超平面只有一个,最优分类平面使间隔最大化。 那是不是某条直线比其他的更加合适呢? 我们可以凭直觉来定义一条评价直线好坏的标准:
距离样本太近的直线不是最优的,因为这样的直线对噪声敏感度高,泛化性较差。 因此我们的目标是找到一条直线(图中的最优超平面),离所有点的距离最远。 由此, SVM算法的实质是找出一个能够将某个值最大化的超平面,这个值就是超平面离所有训练样本的最小距离。这个最小距离用SVM术语来说叫做间隔(margin) 。
描述:给定一些数据点,它们分别属于两个不同的类,现在要找到一个线性分类器把这些数据分成两类。如果用x表示数据点,用y表示类别(y可以取1或者-1,分别代表两个不同的类),一个线性分类器的学习目标便是要在n维的数据空间中找到一个超平面(hyper plane),这个超平面的方程可以表示为( wT中的T代表转置):
例如:现在有一个二维平面,平面上有两种不同的数据,分别用圈和叉表示。由于这些数据是线性可分的,所以可以用一条直线将这两类数据分开,这条直线就相当于一个超平面,超平面一边的数据点所对应的y全是-1 ,另一边所对应的y全是1。
我们令分类函数为:
当f(x) 等于0的时候,x便是位于超平面上的点,而f(x)大于0的点对应 y=1 的数据点,f(x)小于0的点对应y=-1的点,如下图所示:
一个点距离超平面的远近可以表示分类预测的确信或准确程度,如何确定这个超平面呢?从直观上而言,这个超平面应该是最适合分开两类数据的直线。而判定“最适合”的标准就是这条直线离直线两边的数据的间隔最大。所以,得寻找有着最大间隔的超平面。
补充知识点: 点到平面的距离
支持向量机学习的基本想法是求解能够正确划分训练数据集并且几何间隔最大的分离超平面.。对线性可分的训练数据集而言,线性可分分离超平面有无穷多个(等价于感知机),但是几何间隔最大的分离超平面是唯一的。这里的间隔最大化又称为硬间隔最大化。
间隔最大化的直观解释是:对训练数据集找到几何间隔最大的超平面意味着以充分大的确信度对训练数据进行分类。也就是说,不仅将正负实例点分开,而且对最难分的实例点(离超平面最近的点)也有足够大的确信度将它们分开。这样的超平面应该对未知的新实例有很好的分类预测能力。
按照我们前面的分析,对一个数据点进行分类, 当它的margin越大的时候,分类的confidence越大。 对于一个包含n个点的数据集,我们可以很自然地定义它的margin为所有这n个点的margin值中最小的那个。于是,为了使得分类的confidence高,我们希望所选择的超平面hyper plane能够最大化这个margin值。让所选择的超平面能够最大化这个“间隔”值,这个间隔就是下图中的Gap的一半:
为什么用几何间隔求最大的分离超平面而不用函数间隔?
例题:
我们构造了约束最优化问题,就是下面这个:
此外,由于这个问题的特殊结构,还可以通过拉格朗日对偶性(Lagrange Duality)变换到对偶变量 (dual variable) 的优化问题,即通过求解与原问题等价的对偶问题(dual problem)得到原始问题的最优解,这就是线性可分条件下支持向量机的对偶算法,这样做的优点在于:一者对偶问题往往更容易求解;二者可以自然的引入核函数,进而推广到非线性分类问题。
补充知识点: 拉格朗日乘子法学习
拉格朗日KKT条件
KKT条件介绍
拉格朗日对偶
通过给每一个约束条件加上一个拉格朗日乘子(Lagrange multiplier)α,定义拉格朗日函数(通过拉格朗日函数将约束条件融合到目标函数里去,从而只用一个函数表达式便能清楚的表达出我们的问题):
求解这个式子的过程需要拉格朗日对偶性的相关知识。
例题:
接下来谈谈线性不可分的情况,因为 线性可分这种假设实在是太有局限性 了。下图就是一个典型的线性不可分的分类图,我们没有办法用一条直线去将其分成两个区域,每个区域只包含一种颜色的点。
要想在这种情况下的分类器,有两种方式, 一种是用曲线 去将其完全分开,曲线就是一种 非线性 的情况,跟之后将谈到的 核函数 有一定的关系:
另外一种还是用直线,不过不用去保证可分性 ,就是包容那些分错的情况,不过我们得加入惩罚函数,使得点分错的情况越合理越好。其实在很多时候,不是在训练的时候分类函数越完美越好,因为训练函数中有些数据本来就是噪声,可能就是在人工加上分类标签的时候加错了,如果我们在训练(学习)的时候把这些错误的点学习到了,那么模型在下次碰到这些错误情况的时候就难免出错了。这种学习的时候学到了“噪声”的过程就是一个过拟合(over-fitting),这在机器学习中是一个大忌。
我们可以为分错的点加上一点惩罚,对一个分错的点的 惩罚函数 就是 这个点到其正确位置的距离:
对于线性不可分的情况,我们可以用核函数让空间从原本的线性空间变成一个更高维的空间 , 在这个高维的线性空间下,再用一个超平面进行划分 。 这儿举个例子,来理解一下如何利用空间的维度变得更高来帮助我们分类的:
上图是一个线性不可分的图,当我们把这两个类似于椭圆形的点映射到一个高维空间后,映射函数为:
用这个函数可以将上图的平面中的点映射到一个三维空间(z1,z2,z3),并且对映射后的坐标加以旋转之后就可以得到一个线性可分的点集了。
形象说明:例如世界上本来没有两个完全一样的物体,对于所有的两个物体,我们可以通过增加维度来让他们最终有所区别,比如说两本书,从(颜色,内容)两个维度来说,可能是一样的,我们可以加上作者这个维度,是在不行我们还可以加入页码,可以加入拥有者,可以加入购买地点,可以加入笔记内容等等。当维度增加到无限维的时候,一定可以让任意的两个物体可分了。
核函数定义:
核技巧在支持向量机中的应用:
常用核函数:
非线性支持向量机学习算法:
支持向量机的学习问题可以形式化为求解凸二次规划问题。这样的凸二次规划问题具有全局最优解,并且有许多最优化算法可以用于这一一问题的求解。但是当训练样本容量很大时,这些算法往往变得非常低效,以致无法使用。所以,如何高效地实现支持向量机学习就成为一一个重要的问题。目前人们已提出许多快速实现算法.本节讲述其中的序列最小最优化(sequential minimal optimization, SMO)算法。
上述问题是要求解N个参数(α1,α2,α3,...,αN),其他参数均为已知,序列最小最优化算法(SMO)可以高效的求解上述SVM问题,它把原始求解N个参数二次规划问题分解成很多个子二次规划问题分别求解,每个子问题只需要求解2个参数,方法类似于坐标上升,节省时间成本和降低了内存需求。每次启发式选择两个变量进行优化,不断循环,直到达到函数最优值。
整个SMO算法包括两部分,求解两个变量的 二次规划 问题和选择这两个变量的 启发式 方法。
上面求得的(α1)new和(α2)new是在η>0的情况下求得的:
当时为了推导公式我们直接默认它是大于0了,现在我们需要重新审视这一项(η)。这一项是原来关于的二次项的系数。我们可以分下面三种情况讨论:
(1)当η>0时 :这个二次函数开口向上,所以要求这个二次函数的最小值,如果说极值点不在计算出的可行域的范围内,就要根据这个极值点和可行域边界值的关系来得到取最小值的地方:
①如果这个极值点在可行域左边,那么我们可以得到这个可行域内二次函数一定在单增,所以此时L应该是那个取最小值的地方。就如大括号的第三种情况。
②如果这个极值点在可行域右边,那么此时可行域内一定单减,所以此时H就是那个取最小值的地方,就是大括号里的第一种情况。
(2)当η=0时: 这个二次函数就变成了一个一次函数,那么不管这个一次函数的单调性怎样,最小值一定是在边界处取到。所以到时候计算可行域的两个边界的值,看哪个小就用哪个。
(3)当η<0时: 这个二次函数开口向下,那么此时怎么得到取最小值的点呢?很容易就能想到:最小值也是在可行域的边界处取到。很容易理解,此时开口向下,当极值点在区间内时,最小值只能在端点处取,因为极值点处是最大的。而当极值点在区间外时,区间内一定是单调的,此时最小值也只能在端点处取。通过计算比较边界处的目标函数值,哪个小取哪个。
通过以上判断求出(α2)new以后,再根据公式求出(α1)new,然后带入目标函数(1)中。即如下过程:
上述分析是在从N个变量中已经选出两个变量进行优化的方法,下面分析如何高效地选择两个变量进行优化,使得目标函数下降的最快。
三、SVM由浅入深的尝试(五)核函数的理解
对于线性分类问题,线性分类向量机是一种非常有效的方法。但是,当分类变得不线性,线性分类向量机就会失效,我们就需要新的方法去解决,那就是非线性向量机,而在非线性向量机中,一种非常重要的方法就必须要知道,那就是核函数。
对于我本人来说,因为之前也涉猎过核函数,因此,在理解上可能相对快一点。
网上有很多对核函数的介绍,知乎上的介绍我印象很深,有兴趣的可以搜一下。
核函数的入门理解还是要从,将二维非线性问题转化为三维线性问题。
原本线性不可分的问题瞬间变成了线性分割面可以分类的问题。很神奇!
具体实现的手段就是增加维度。
上图中,我们发现x1,x2是非线性分类,于是我们通过变化,z=phi(x),我们发现,z1,z2是线性分类问题。
这里的phi(x)便是映射函数。
其实白话理解就是,假设存在映射函数phi(x),对初始空间所有的x,z,存在
那么,K(x,z)便是核函数。
从上例可以看出,核函数一定,映射函数是不唯一的,而且当维度是无线大的时候,我们几乎无法求得映射函数,那么核函数的作用就在于此,核函数避免了映射函数的求解,叫做核技巧。
核函数是半正定矩阵。
分类决策函数为
分类决策函数为:
...太复杂,没看懂,有时间再看。
我们的线性问题也可以用线性核来解决。
Linear kernel
因此,我们得到的对偶问题就可以切换,
切换为
注:书中的SMO算法也是用线性核的凸二次规划对偶方程求解。
四、哲哲的ML笔记(二十六:SVM之核函数)
分类问题中,可以使用高级数的多项式模型来解决无法用直线进行分隔的分类问题
除了对原有的特征进行组合以外,有没有更好的方法来构造?我们可以利用核函数来计算出新的特征
可以用一系列的新的特征 来替换模型中的每一项: , , ……
给定一个训练样本 ,我们利用的各个特征与我们预先选定的地标 (landmarks)的近似程度来选取新的特征
如果一个训练样本 与地标 之间的距离近似于0,则新特征 近似于1,如果训练样本与地标之间距离较远,则近似于0
假设我们的训练样本含有两个特征 ,给定地标与不同的 值,见下图
如下图,假设了一组 值,假设一个样本是图中的粉色点,距离 很近, 趋近于1, 和 趋近于0,那么假设函数的值为1,预测为1
假设一个样本数是图中蓝色的点, 和 和 都趋近于0,假设函数为0,预测为0
通常是根据训练集的数量选择地标的数量,即如果训练集中有 个样本,则我们选取 个地标,并且令: 。这样做的好处在于:现在我们得到的新特征是建立在原有特征与训练集中所有其他特征之间距离的基础之上的,即
对于一个样本 ,根据核函数计算出 ,当 ,预测
怎么得到 ?通过代价函数,注意 是加到m,不是n
下面是支持向量机的两个参数 和 的影响:
尽管你不去写你自己的SVM的优化软件,但是你也需要做几件事:
1、参数 的选择,上一部分讨论过误差/方差在这方面的性质。
2、你选择不需要任何内核参数,没有内核参数的理念,也叫线性核函数。因此,如果有人说他使用了线性核的SVM(支持向量机),这就意味这他使用了不带有核函数的SVM(支持向量机)。
下面是一些普遍使用的准则: 为特征数, 为训练样本数。
值得一提的是,神经网络在以上三种情况下都可能会有较好的表现,但是训练神经网络可能非常慢,选择支持向量机的原因主要在于它的代价函数是凸函数,不存在局部最小值
以上就是关于svm中常用的核函数包括哪些相关问题的回答。希望能帮到你,如有更多相关问题,您也可以联系我们的客服进行咨询,客服也会为您讲解更多精彩的知识和内容。
推荐阅读:
百度网盘svip永久免费(2022年百度网盘svip免费领取)