笔记(总结)-SVM(支持向量机)的理解-3

使用支持向量机SVM进行分类 欢迎关注”生信修炼手册”!SVM, 全称为support vector machines, 翻译过来就是支持向量机。该算法最常见的应用场景就是解决二分类问题,当然也可以用于回归异常值检... 阅读详情

上篇讲述的Soft Margin SVM是为了解决线性不可分的问题,它解决问题的逻辑是通过允许一部分样本分得不那么准确(进入“楚河汉界”)甚至错分,使得在绝大多数样本能够正确地线性可分。本篇引入核函数(kernel),从另一个思维角度来解决线性不可分问题。


问题引入

当样本在某个特征空间不可分时,可以通过将样本映射到另一个特征空间,在该空间中样本分布满足线性可分条件,再使用SVM进行学习分类:
这里写图片描述

根据cover定理:将复杂模式分类问题非线性映射到高维空间比映射到低维空间更加可能线性可分。这直观上是很容易理解的,正如上图所示。

回到我们SVM的问题,对偶问题和判别函数为:

maxW(α)=iαi12ijαiαjyiyjxTixjmaxW(α)=∑iαi−12∑i∑jαiαjyiyjxiTxj

s.t. iαiyi=0, 0αiCs.t. ∑iαiyi=0, 0≤αi≤C

f(x)=wTx+b=(iαiyixTi)x+b=iαiyi(xTix)+bf(x)=wTx+b=(∑iαiyixiT)x+b=∑iαiyi(xiTx)+b

将目标函数稍微变下形式W(α)=iαi12ijαiαjyiyj<xi,xj>W(α)=∑iαi−12∑i∑jαiαjyiyj<xi,xj>,可以看到W(α)W(α)最终只和样本内积有关,同样的最终判别函数也只和内积有关。因此在SVM的计算过程中,我们从头到尾对样本的使用都是通过内积形式,建模开销基本上等同于内积运算的开销。

此时我们考虑在不同空间下内积的计算,当样本空间为nn维时,计算一次内积运算需要n次乘法、n1n−1次加法,时间开销为O(n)。在样本量较大的情况下,将样本从低维空间映射到高维空间,计算内积增加的开销是巨大的。有没有办法能降低这种开销呢?答案是核函数。


核函数(kernel)

给出核函数定义如下:

  • 给定输入空间XX和映射空间H,如果存在映射函数ϕϕ和函数KK,对于任意x,zX,满足K(x,z)=<ϕ(x),ϕ(z)>K(x,z)=<ϕ(x),ϕ(z)>,则我们将KK称为核函数。

对于给定的核函数,映射空间和映射函数通常是不唯一的。举例如下:

X为2维空间,K(x,z)=<x,z>2K(x,z)=<x,z>2,取样本x=(x1,x2)x=(x1,x2)z=(z1,z2)z=(z1,z2),则有:

K(x,z)=<x,z>2=(x1z1+x2z2)2=(x1z1)2+2x1z1x2z2+(x2z2)2K(x,z)=<x,z>2=(x1z1+x2z2)2=(x1z1)2+2x1z1x2z2+(x2z2)2

HH为3维空间时,取ϕ(x)=(x12,2x1x2,x22)Tϕ(x)=12((x1x2)2,2x1x2,(x1+x2)2)Tϕ(x)=12((x1−x2)2,2x1x2,(x1+x2)2)T都能满足K(x,z)=<ϕ(x),ϕ(z)>K(x,z)=<ϕ(x),ϕ(z)>;当HH为4维空间时,取ϕ(x)=(x12,x1x2,x1x2,x22)T也能满足要求。

当我们不使用核函数时,若HH为4维空间,直接计算ϕ(x)的内积需要4次乘法和3次加法,而使用核函数只需要3次乘法,1次加法,计算次数显著下降。当HH为高维空间时,这种技巧能降低巨大的计算开销。


Kernel SVM

先将线性不可分情况下的样本映射到高维空间,得到对偶问题和判别函数:

maxW(α)=iαi12ijαiαjyiyj<ϕ(xi),ϕ(xj)>

s.t. iαiyi=0, 0αiCs.t. ∑iαiyi=0, 0≤αi≤C

f(x)=wTx+b=(iαiyixTi)x+b=iαiyi<ϕ(xi),ϕ(xj)>+bf(x)=wTx+b=(∑iαiyixiT)x+b=∑iαiyi<ϕ(xi),ϕ(xj)>+b

使用核函数转换,得到:

maxW(α)=iαi12ijαiαjyiyjK(xi,xj)maxW(α)=∑iαi−12∑i∑jαiαjyiyjK(xi,xj)

s.t. iαiyi=0, 0αiCs.t. ∑iαiyi=0, 0≤αi≤C

f(x)=wTx+b=(iαiyixTi)x+b=iαiyiK(xi,xj)+bf(x)=wTx+b=(∑iαiyixiT)x+b=∑iαiyiK(xi,xj)+b

不论最后ϕϕ函数映射后的特征空间维度多高,SVM的求解都在原样本空间内用核函数进行。


常用的核

由上所述,选择不同的核函数实际上对应的是不同的映射方式。介绍几种常用的核函数。

线性核

即SVM中最基本的<xi,xj><xi,xj>,不进行任何映射变换。在样本线性可分情况下(实际中一般通过训练Linear SVM观察拟合效果来判断是否线性可分),线性核运算开销小,通常能达到比较好的效果。

多项式核

多项式核定义如下:

K(x,z)=(αxTz+β)pK(x,z)=(αxTz+β)p

多项式核实际中应用比较少,在线性可分情况下性能不如线性核,在线性不可分情况下效果不如高斯核。

高斯核

高斯核(Gaussian Kernel)也称radial basis function(RBF) kernel,定义如下:

K(x,z)=exp(||xz||22σ2)K(x,z)=exp⁡(−||x−z||22σ2)

高斯核是最强大、应用最广泛的核函数。线性不可分情况下能展现出强大的分类能力,但是开销较大。为何说高斯核最强大,因为高斯核可以看做“无穷度数的正则化多项式核”。首先将指数函数进行泰勒展开:

exp(xTz)=0(xTz)ii!exp(xTz)=∑0∞(xTz)ii!

只写出展开式前几项,看得更清晰:

exp(xTz)=1+xTz+(xTz)22!+(xTz)33!+...exp(xTz)=1+xTz+(xTz)22!+(xTz)33!+...

与多项式核定义对比,每一项几乎都是最简化版的多项式核。再考虑将上述指数函数进行正则化:

exp(xTz)exp(xTx)exp(zTz)=exp[12(xTx+zTz2xTz)]=exp(||xz||22)exp(xTz)exp(xTx)exp(zTz)=exp[−12(xTx+zTz−2xTz)]=exp(−||x−z||22)

可以看到我们几乎得到了高斯核,由此可以论证高斯核是“无穷度数的正则化多项式核”,它实际上考虑了常数项、一次项、二次项…一直到无穷多次项,功能强大之处一目了然。

在实际中,具体使用哪种核一是靠经验分析,二是试错调参。在具体应用中,分析数据进行尝试,再通过模型结果反过来理解数据,没有捷径可走。对核有一定的了解能让调参变得更有迹可循。


本文先阐述了核函数的引入来由,具体讲述了核函数的定义和SVM中如何应用核函数来降低计算量,最后列举了SVM中常用的几种核函数并给出解释。

SVM支持向量机超详细数学推导过程 SVM有三宝:间隔、对偶、核技巧(核函数) 三个不同的分类算法:hard-margin SVM、soft-margin SVM、Kenel SVM SVM起初用来解决二分类问题 阅读详情

相关推荐

简单点理解 SVM支持向量机

1、SVM简介 支持向量机(support vector machines, SVM)是一种二分类模型,它的基本模型是定义在特征空间上的间隔最大的线性分类器,间隔最大使它有别于感知机;SVM还包括核技巧,这使它成为实质上的非线性分类器。SVM的的学习策略就是间隔最大化,可形式化为一个求解凸二次规划的问题,也等价于正则化的合页损失函数的最小化问题。SVM的的学习算法就是求解凸二次规划的最优化算法。可能不好理解,那我们来举个例子吧 根据体重判断小鼠是否肥胖,首先得找到一个阈值,这个阈值怎么找呢?按从小到

qq_56688614的博客 3218

高斯核函数多项式核函数的比较

白话机器学习算法理论+实战之支持向量机SVM

1. 写在前面 如果想从事数据挖掘数据分析的工作,掌握常用的机器学习算法是非常有必要的,比如我之前写过的一篇十大机器学习算法的小总结,在这简单的先捋一捋, 常见的机器学习算法: 监督学习算法:逻辑回归,线性回归,决策树,朴素贝叶斯,K近邻,支持向量机,集成算法Adaboost等 无监督算法:聚类,降维,关联规则, PageRank等 为了详细的理解这些,曾经看过西瓜书,统计学习方法,机器学习...

Miracle8070 5917

常用的核函数

在机器学习建模过程中,核函数的选择通常应用场景有关,有专用核函数,但实际上,还是有一些通用核函数,本文重点介绍一些通用核函数理解核函数,有助于在实战过程中选择合理的调参范围,指导我们对超参数的调整。 常用的核函数有两种,一种是多项式核函数,另外一种是高斯核函数。 1.多项式核函数 数学表达式为:             , 其中为正数,非负,相对于线性函数可以表达更复杂,非直线的分隔...

小王的博客 1万+

核函数多项式高斯核)以及svm解决回归问题

核函数多项式高斯核)以及svm解决回归问题

qq_45906101的博客 5508

SVM几种核函数的对比分析以及SVM算法的优缺点

SVM核函数的作用 SVM核函数是用来解决数据线性不可分而提出的,把数据从源空间映射到目标空间(线性可分空间)。 SVM核函数的种类 1、线性核 优点: 方案首选,奥卡姆剃刀定律 简单,可以求解较快一个QP问题 可解释性强:可以轻易知道哪些feature是重要的 限制:只能解决线性可分问题 2、多项式核 基本原理:依靠升维使得原本线性不可分的数据线性可分; 升维的意义:使得原本线性不可分的数...

qq_29462849的博客 4万+

核函数 高斯核函数,线性核函数多项式核函数

核函数是我们处理数据时使用的一种方式。对于给的一些特征数据我们通过核函数的方式来对其进行处理。我们经常在SVM中提到核函数,就是因为通过核函数来将原本的数据进行各种方式的组合计算,从而从低维数据到高维数据。比如原来数据下样本点1是x向量,样本点2是y向量,我们把它变成e的x+y次方,就到高维中去了。 把数据映射到高维在我们直观上理解起来是很难的,其实也并不用深刻理解,因为做这些的目的只是为了让机器去理解,帮助机器通过自己的模型去更好的挖掘一些语义信息。所以对于我们人来说,“样本点1是x向量,样本点...

TranSad的博客 3万+

opencv官方样例学习笔记——introduction_to_svm

Andrew moore的ppthttp://www.autonlab.org/tutorials/svm15.pdf这个ppt介绍svm说的挺好的。 svm是(support vector machine)简称,我现还是初学状态,了解到了以下几个概念: 1)线性与非线性 有若干黑点白点,用一根直线把他们分开,就是线性(不精于数学,若理解有误欢迎指正) 不能用直线分开,就

muerbingsha的博客 584

支持向量机SVM)学习笔记-Python3.6+git代码

(主要是个人的一些记录,如果有遗漏或者错误,仅供参考。。。。) github地址:https://github.com/PANBOHE/study_MachineLearning_Python3.x/tree/master/Svm  

盼你开心 441

支持向量机SVM—实现多分类问题的解决方案

支持向量机SVM—实现多分类问题的解决方案前言一、支持向量机SVM如何应用在多分类问题中?二、解决方案1.引入库2.读入数据3.读入数据4.读入数据总结 前言 众所周知,支持向量机SVM是机器学习中典型的二值分类算法。但现实生活中,有很多实际应用是没有办法用简单的二值分类器去完成分类的。因此,为了拓展支持向量机SVM的应用场景,必须考虑在多分类情况下的算法实现。 一、支持向量机SVM如何应用在多分类问题中? 原本应用在二值分类上的SVM算法是否可以应用在多分类问题上呢?答案是肯定的。 通过重新构造后。.

weixin_44822636的博客 1万+

支持向量机SVM算法原理及应用(R)

只要接触到数据挖掘/机器学习,相比都会听过“支持向量机”的大名。在机器学习领域,支持向量机SVM(Support Vector Machine)是一个有监督的学习模型,通常用来进行模式识别、分类、以及回归分析。SVM涉及的知识面非常广,目标函数、优化过程、并行方法、算法收敛性、样本复杂度等。学习SVM可以看《统计学习方法》、Andrew Ng支持向量机等,这里推荐一个博客,讲的非常详细,我就不搬过...

程松 5万+

支持向量机SVM——简单实例应用

例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考支持向量机(Support Vector Machine,SVM)是一种常见的监督学习算法,用于分类回归任务。SVM的目标是构建一个能够将不同类别的数据点尽可能正确地分隔开的决策边界。核函数支持向量机SVM)中的一种技术,用于将数据从原始特征空间映射到另一个高维特征空间。

fjstjsjg的博客 3333

PyTorch支持向量机SVM)详解

支持向量机是一种二分类算法,其目标是找到一个最优的超平面,将不同类别的数据点分隔开。这个超平面被称为决策边界,支持向量机的任务是找到使决策边界最佳的超平面。适用于线性非线性分类问题。在高维空间中表现出色,适用于处理具有大量特征的数据。通过选择支持向量(距离决策边界最近的数据点)来提高模型的鲁棒性。支持向量机的核心思想是最大化分类间隔(两个类别之间的距离),以确保决策边界尽可能远离数据点。这种距离通常称为间隔(margin)。在下一节中,我们将深入探讨支持向量机的工作原理。

DeepViewInsight的博客 7495

【数据挖掘基础】——支持向量机(SVM)+代码实现(8)

支持向量机算法分类回归方法的中都支持线性性非线性类型的数据类型。非线性类型通常是二维平面不可分,为了使数据可分,需要通过一个函数将原始数据映射到高维空间,从而使得数据在高维空间很容易可分,需要通过一个函数将原始数据映射到高维空间,从而使得数据在高维空间很容易区分,这样就达到数据分类或回归的目的,而实现这一目标的函数称为核函数

lingxw的博客 5145

SVM支持向量机的python实现

写在前面 博主现在在学《统计学习方法》这本书,折腾支持向量机也有半个月多了,之前一直想要把支持向量机搞懂,所以就想集中一段时间来学支持向量机,但是因为懒惰,断断续续地磨了很久。这两天终于实现了支持向量机,这里想把代码分享给大家。 代码主要参考了两个网友的实现,这里给出参考的网页链接:1)参考代码1;2)参考代码2。 参考的两个代码都有比较模糊的地方。而我的代码也没好到哪里去,但是代码中每个地方对应于什么内容都有注释,相对会比较清晰些。我也给出了两个小的数据集用于训练,训练完后画出决策边界,所以就没用测试集了

lyn5832500的博客 3358

MATLAB实现支持向量机SVM分类简介

1. 支持向量机SVM 支持向量机SVM, support vector machine)是名噪一时的机器学习方法,自20世纪末以来在模式识别领域风生水起,至今仍然活跃在各大论文期刊中。无论是其他特征提取方法的结合,还是其他模式识别方法的对比,SVM的表现都可圈可点。 SVM的目标是通过在属于两个不同类别的两组数据点之间找到良好决策边界(decision boundary)来解决分类问题。决策边界可以看作一条直线或一个平面,将训练数据划分为两块空间,分别对应于两个类别。对于新数据点的分类,你只需要判断

qq_36108664的博客 7929

支持向量机SVM

支持向量机SVM)是一种强大的机器学习算法,广泛应用于分类回归分析任务。通过深入了解SVM的基本原理、数学推导、核函数选择以及参数调优等方面的知识,我们可以更好地应用SVM解决实际问题。然而,SVM也存在一些局限性,如对大规模数据集不友好、对参数核函数选择敏感等。未来,随着机器学习技术的不断发展,我们可以期待出现更多更优秀的算法来弥补SVM的不足,并推动机器学习领域的进一步发展。

m0_75013835的博客 3207

基于SVM支持向量机实现人脸识别

文章目录基于SVM支持向量机实现人脸识别SVM支持向量机的定义SVM支持向量机的原理作用如何计算SVM支持向量机的权值w偏置项b代码实现原理步骤代码实例演示: 基于SVM支持向量机实现人脸识别 本人本科大三,非985,211出身,这是我写的第一篇博客,其目的是对我这段时间学习SVM支持向量机PCA降维算法的一次总结。若有错误之处,还请各位路过的大神积极指正。若要转载,请注明出处,谢谢! SVM支持向量机的定义 支持向量机(support vector machines,SVM)是一种十分优秀的二分类算法

小叶MW 的博客 3673
上一篇: 笔记(总结)-SVM(支持向量机)的理解-2
下一篇: 笔记(总结)-SVM(支持向量机)的理解-4
ZSYGOOOD
博客等级 码龄12年 113粉丝 94原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值