python svm核函数_机器学习算法实践-SVM核函数和软间隔
前言
上文中简单总结了对于线性可分数据的SVM的算法原理,本文对于非线性可分以及有噪声存在的时候我们需要对基本SVM算法的改进进行下总结其中包括:
核函数在SVM算法中的使用
引入松弛变量和惩罚函数的软间隔分类器
SVM对偶问题
这里稍微回顾下SVM最终的对偶优化问题,因为后面的改进都是在对偶问题的形式上衍生的。
标准形式
subject to
对偶形式
subject to
,
其中
和
的关系:
SVM预测
SVM通过分割超平面
来获取未知数据的类型,将上述
用
替换得到
通过
输出+1或者-1来获取未知数据的类型预测.
核函数
对于分线性可分的数据我们通常需要将数据映射到高维空间中使得原本在低维空间线性不可分的数据在高维空间中线性可分。例如从一维映射到4维:
然后对偶形式中也有数据向量的乘积,于是便可以进行替换:
但是呢,有时候
会使得 维度太高,这样计算内积的复杂度很高,计算起来就会很困难,这个时候我们便需要核函数来拯救我们的计算复杂度。
我们需要使用一个函数来代替向量内积,但是这个核函数是可以表示成向量内积的形式的,只不过在计算结果的时候我们直接求函数值就好了,不需要做内积运算。这样复杂度会降低:
核函数例子
这里总结下几个例子来对核函数的作用加深下理解.
对于
, 我们令核函数为:
对于
, 这个时候
的作用就相当于:
那么我们可以分析下,如果没有引入核函数,我们需要计算维数为
的向量的内积,其运算时间复杂度为
。但是通过核函数的引入我们不需要显式的计算向量内积了,而是直接计算核函数
的值,计算核函数的值我们只需要计算一次维数为 的向量内积和一次平方运算,时间复杂度为
。
可见,我们通过计算核函数,隐式的处理了一个维数很高的向量空间,降低了计算复杂度
。
对于上面的核函数进行推广,我们可以有核函数:
对于
, 这时
相当于:
这样我们将原本需要计算长度为
的向量内积改成了直接计算两个长度为 的向量内积以及一个求和一次乘积运算。复杂度从
降到了
更通用的形式可以写成:
可见,在我们原始的SVM推导中,直接使用原始向量的内积便是这种形式的一种特殊形式,即
另外,可以直观的看到,如果
与
的夹角比较小,则计算出来的
就会比较大,相反如果
与
的夹角比较大,则核函数
会比较小。所以核函数一定程度上是
与
相似度的度量。
高斯核函数(Gaussian kernel)
通过高斯核函数的公式可以看出,如果 和 相差很小,则
趋近于1, 相反如果相差很大则
趋近于0。高斯核函数能够将数据映射到无限维空间,在无限维空间中,数据都是线性可分的。
核函数的合法性
判定核函数的合法性需要构造一个矩阵,即核函数矩阵
。
对于一个核函数
以及
个训练数据
, 核函数矩阵中的元素
定义如下:
现在在这里简单推导下核函数有效的必要条件:
若
有效,则矩阵元素可写成(矩阵为对称矩阵)
对于向量 , 我们有:
此为矩阵
为半正定矩阵的必要条件。这就证明了,矩阵
是对应核函数KK有效的必要条件。当然他也是充分条件(参考 Mercer’s theorem )
因此通过mercer定理我们可以不需要显式的去寻找核函数对应的
而是构造核函数矩阵
,进而判断
是否半正定来判断核函数的有效性。
L1软间隔SVM(L1 soft margin SVM)
通过核函数将数据映射到高维空间能够增加数据线性可分的可能性,但是对于含有噪声的数据,优化出来的SVM可能不是我们最想要的,我们并不希望SVM会被噪声影响,因此我们可以通过引入松弛变量来使我们优化SVM时忽略掉噪声的影响,仅仅考虑那些真正有效的数据。
对于原始SVM标砖形式的约束条件:
意味着所有数据点距离分割平面的距离都大于1.
但有的时候具有噪声,完全按照原始的约束条件,可能会是SVM发生较大的误差,如下图:
为了能让SVM忽略某些噪声,我们可以引入一个松弛变量
来允许错误的分类发生,也就是允许有间隔小于1的数据点出现, 即:
但是只松弛约束条件可不行,我们同样要限制这种松弛,这时候我们需要在目标函数上加一个惩罚函数。
原始的目标函数为:
加入惩罚后:
其中CC为惩罚因子来衡量惩罚的程度, C越大表明离群点越不被希望出现。
于是加上惩罚函数的SVM优化问题就变为:
subject to
,
然后我们求此问题的对偶问题,方法与原始SVM推导方法相同,使用拉格朗日乘子法,然后获取
的表达式,回代最后获得对偶形式:
subject to
,
可见,软间隔SVM的目标函数形式同硬间隔的形式相同,唯一不同的就在于
的范围。
总结
本文对SVM中的核函数以及软间隔的原理进行了总结,对于非线性可分以及含有噪声的数据我们可以通过以上两种方法获得合适的分类器。后面将对目标函数的优化方法进行总结。
python svm核函数_机器学习算法实践-SVM核函数和软间隔相关推荐
- 机器学习算法实践-SVM中的SMO算法
前言 前两篇关于SVM的文章分别总结了SVM基本原理和核函数以及软间隔原理,本文我们就针对前面推导出的SVM对偶问题的一种高效的优化方法-序列最小优化算法(Sequential Minimal Opt ...
- svm通俗讲解_机器学习算法:SVM
关于支持向量机(SVM)的文章在互联网上当真不知凡几,各人理解不同所呈现的方式也各有不同,当然其中也不乏很多写的非常精彩的文章,如: 支持向量机通俗导论(理解SVM的三层境界)blog.csdn.n ...
- python进行对应分析_机器学习算法---对应分析
--------仅用于个人学习知识整理和sas/R语言/python代码整理 --------该文章首发于csdn 正在迁移优化文章中 1.前言 对应分析,主要适用于有多个类别的分类变量,可以揭示同一 ...
- 机器学习算法总结--SVM
简介 SVM是一种二类分类模型,其基本模型定义为特征空间上的间隔最大的线性分类器,即支持向量机的学习策略便是间隔最大化,最终可转化为一个凸二次规划问题的求解.或者简单的可以理解为就是在高维空间中寻找一 ...
- python算法的缺陷和不足_机器学习算法优缺点及其应用领域
决策树 一. 决策树优点 1.决策树易于理解和解释,可以可视化分析,容易提取出规则. 2.可以同时处理标称型和数值型数据. 3.测试数据集时,运行速度比较快. 4.决策树可以很好的扩展到大型数据库中 ...
- 机器学习系列(9)_机器学习算法一览(附Python和R代码)
转载自:http://blog.csdn.net/longxinchen_ml/article/details/51192086 – 谷歌的无人车和机器人得到了很多关注,但我们真正的未来却在于能够使电 ...
- 转机器学习系列(9)_机器学习算法一览(附Python和R代码)
转自http://blog.csdn.net/han_xiaoyang/article/details/51191386 – 谷歌的无人车和机器人得到了很多关注,但我们真正的未来却在于能够使电脑变得更 ...
- sklearn svm如何选择核函数_文本挖掘篇|利用SVM进行短文本分类
何为数据挖掘,顾名思义就是从大量数据中挖掘或抽取出知识.在实际中,进行数据挖掘的数据不仅仅有数值型数据,还有图片型数据,文本型数据等.而所谓文本挖掘,就是从大量文本数据中,提取出对信息使用者有价值的信 ...
- 基于python的分类预测_机器学习算法(五): 基于支持向量机的分类预测
声明:本次撰写以Datawhale团队提供的学习材料以自学为主,代码为Datawhale团队提供,利用阿里云天池实验室与编辑器pycharm完成测试. 支持向量机(Support Vector Mac ...
最新文章
- 运维基础-文件权限管理
- Apache用户认证,域名跳转
- 【转】不用软件,解压Win8/Win8.1的install.wim文件
- python爬虫脚本ie=utf-8_Python网络爬虫出现乱码问题的解决方法
- mysql 查询语句_MySQL相关(一)- 一条查询语句是如何执行的
- 【计算机系统设计】重点 · 学习笔记(0)
- 图解安装CentOS 6.6
- 现在以及未来 互联网名词记录
- 开花(在b数组中二分查找a数组元素)
- $与一些特殊字符的组合用法
- 什么是反射,为什么要用反射,反射的知识讲解
- 滴滴数据分析实习SQL笔试题
- NIST SP800系列标准
- FMCW激光雷达原理推导公式
- JAVA发布栅格图层_简单实现栅格布局的两种方式
- 曹金明:Zynga大败局--数据控是如何把游戏做败的
- dede {dede:channel currentstyle 中使用~seotitle~
- 计算机科学引论2021英文,计算机科学引论= Computing Essentials : 英文
- 02 从亚马逊的实践,谈分布式系统的难点
- Asp.Net支付宝沙箱支付(也可用手机扫描支付)详细教程