0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

机器学习-8. 支持向量机(SVMs)概述和计算

lviY_AI_shequ 2018-04-02 08:49 次阅读

‍Content:

8.1 Optimization Objection

8.2 Large margin intuition

8.3 Mathematics Behind Large Margin Classification

8.4 Kernels

8.5 Using a SVM

8.5.1 Multi-class Classification

8.5.2 Logistic Regression vs. SVMs

8.1 Optimization Objection

支持向量机(Support Vector Machine: SVM)是一种非常有用的监督式机器学习算法。首先回顾一下Logistic回归,根据log()函数以及Sigmoid函数的性质,有:

机器学习-8. 支持向量机(SVMs)概述和计算

同时,Logistic回归的代价函数(未正则化)如下:

机器学习-8. 支持向量机(SVMs)概述和计算

为得到SVM的代价函数,我们作如下修改:

机器学习-8. 支持向量机(SVMs)概述和计算

因此,对比Logistic的优化目标

机器学习-8. 支持向量机(SVMs)概述和计算

SVM的优化目标如下:

机器学习-8. 支持向量机(SVMs)概述和计算

注1:事实上,上述公式中的Cost0与Cost1函数是一种称为hinge损失的替代损失(surrogate loss)函数,其他常见的替代损失函数有指数损失和对率损失,具体参见《机器学习》P129 周志华)

注2:注意参数C和λ的对应关系: C与(1 / λ)成正相关。

8.2 Large margin intuition

根据8.1中的代价函数,为使代价函数最小,有如下结论:

现假设C很大(如C=100000),为使代价函数最小,我们希望

所以代价函数就变为:

机器学习-8. 支持向量机(SVMs)概述和计算

所以问题就变成:

机器学习-8. 支持向量机(SVMs)概述和计算

该问题最后的优化结果是找到具有"最大间隔"(maximum margin)的划分超平面,所以支持向量机又称大间距分类器(large margin classifier)。那么什么是间隔? 为什么这样优化就可以找到最大间隔?首先,我们通过图8-1所示的二维的0/1线性分类情况来直观感受。

机器学习-8. 支持向量机(SVMs)概述和计算

图8-1 SVM Decision Boundary: Linearly separable case

直观上,应该去找位于两类训练样本"正中间"的划分超平面,即图8-1的黑色直线(二维),因为该划分超平面对训练样本局部扰动的"容忍"性最好。例如,图中的粉色和绿色直线,一旦输入数据稍有变化,将会得到错误的预测。换言之,这个划分超平面所产生的分类结果是最鲁棒的,对要预测数据集的泛化能力最强。而两条蓝色直线之间的距离就称为间隔(margin)。下一节将从数学角度来解释间隔与最大间隔的优化原理。

8.3 Mathematics Behind Large Margin Classification

首先介绍一些数学知识。

2-范数(2-norm): 也可称长度(length),是二维或三维空间向量长度的推广,向量u记为||u||。例如,对于向量u = [ u1, u2, u3, u4],||u|| = sqrt(u1^2 + u2^2 + u3^2 + u4^2)

向量内积(Vector Inner Product): 设向量a = [a1, a2, … , an],向量b = [b1, b2, … , bn],a和b的的内积定义为:a · b = a1b1 + a2b2 + … + anbn 。向量内积是几何向量数量积(点积)的推广,可以理解为向量a在向量b上的投影长度(范数)和向量b的长度的乘积。

所以有:

机器学习-8. 支持向量机(SVMs)概述和计算

机器学习-8. 支持向量机(SVMs)概述和计算

其中向量上的投影长度。

所以,8.2节得到的优化问题可以转为如下形式:

机器学习-8. 支持向量机(SVMs)概述和计算

分界线为,所以可知和分界线正交(垂直),并且当时,分界线过原点(欧式空间)。为使目标最优(取最小值)且满足约束,应该尽可能大,这样就要求间距尽可能的大。直观的如图8-2所示,图左为间距较小的情况,此时的较小,为满足约束,导致目标函数变大,图右为最大间距的情况,此时的是最大的,所以目标可以尽可能的小。

机器学习-8. 支持向量机(SVMs)概述和计算

图8-2 两种不同间距的情况

8.4 Kernels

上述的讨论都是基于线性可分的样本,即存在一个划分超平面可以将训练样本正确分类,然而现实世界存在大量复杂的,非线性分类问题(如4.4.2节的异或/同或问题)。Logistic回归处理非线性问题可以通过引入多项式特征量作为新的特征量;神经网络通过引入隐藏层,逐层进化解决非线性分类问题;而SVM是通过引入核函数(kernel function)来解决非线性问题。具体做法如下:

对于给定输出x, 规定一定数量的landmarks,记为

将x,作为核函数的输入,得到新的特征量,若将核函数记为similarity(),则有

,其中为一一对应;

将新的特征量替代原有特征量,得到假设函数如下:

现在有两个问题,

如何选择landmarks?

用什么样的核函数 ?

对于第一个问题,可以按照如下方式,即将训练集的输入作为landmarks

所以特征量的个数与训练集的个数相等,即n = m,所以带有核的SVM变为如下形式:

机器学习-8. 支持向量机(SVMs)概述和计算

对于第二个问题,常用的核函数有线性核,高斯核,多项式核,Sigmoid核,拉普拉斯核等,现以常用的高斯核(Gaussian)为例。

机器学习-8. 支持向量机(SVMs)概述和计算

高斯核具有如下性质:

机器学习-8. 支持向量机(SVMs)概述和计算

也就是说,如果x和landmark接近,那么核函数的值也就是新的特征量将会接近1,而如果x和landmark距离很远,那么核函数的值将会接近0.

是高斯核的参数,它的大小会影响核函数值的变化快慢,具体的,图8-3是一个二维情况下的特殊例子,但是所含有的性质是可推广的。即越大,核函数变化(下降)越缓慢,反之,越小,核函数变化越快。

机器学习-8. 支持向量机(SVMs)概述和计算

图8-3 参数对高斯核的影响举例

如何选择参数?

下面对SVM的参数对偏差和方差的影响做简要分析:

C: 由于C和(1 /λ)正相关,结合6.4.2节对λ的分析有:

机器学习-8. 支持向量机(SVMs)概述和计算

机器学习-8. 支持向量机(SVMs)概述和计算

8.5 Using a SVM

上文简单的介绍了SVM的优化原理以及核函数的使用方式。在实际应用SVM中,我们不需要自己去实现SVM的训练算法来得到参数,通常是使用现有的软件包(如liblinear, libsvm)。

但是下面的工作是我们需要做的:

选择参数C的值

选择并实现核函数

如果核函数带参数,需要选择核函数的参数,例如高斯核需要选择

如果无核(选择线性核),即给出线性分类器,适用于n大,m小的情况

选择非线性核(如高斯核),适用于n小,m大的情况

下面是需要注意的地方:

在使用核函数之前要对特征量进行规范化

并不是所有的函数是有效的核函数,它们必须满足Mercer定理。

如果想要通过训练得到参数C或者核函数的参数,应该是在训练集和交叉检验集上进行,,参见6.3节。

8.5.1 Multi-class Classification

机器学习-8. 支持向量机(SVMs)概述和计算

8.5.2 Logistic Regression vs. SVMs

机器学习-8. 支持向量机(SVMs)概述和计算

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 向量机
    +关注

    关注

    0

    文章

    166

    浏览量

    20875
  • 支持向量机
    +关注

    关注

    0

    文章

    71

    浏览量

    12716
  • 机器学习
    +关注

    关注

    66

    文章

    8414

    浏览量

    132601
收藏 人收藏

    评论

    相关推荐

    #硬声创作季 机器学习:第4章:支持向量学习

    向量机器学习
    Mr_haohao
    发布于 :2022年10月25日 23:29:33

    #硬声创作季 #机器学习 机器学习-4.1.1 支持向量基本原理和线性支持向量-1

    向量机器学习
    水管工
    发布于 :2022年11月04日 11:10:38

    #硬声创作季 #机器学习 机器学习-4.1.1 支持向量基本原理和线性支持向量-2

    向量机器学习
    水管工
    发布于 :2022年11月04日 11:11:08

    支持向量——机器学习中的杀手级武器!

    ` 本帖最后由 讯飞开放平台 于 2018-8-24 09:44 编辑 作为模式识别或者机器学习的爱好者,同学们一定听说过支持向量
    发表于 08-24 09:40

    机器学习分类算法之支持向量SVM

    统计学习方法C++实现之六 支持向量(SVM)
    发表于 04-29 10:47

    基于改进遗传算法的支持向量特征选择

    基于改进遗传算法的支持向量特征选择  引言   支持向量是一种在统计
    发表于 02-06 10:36 1512次阅读
    基于改进遗传算法的<b class='flag-5'>支持</b><b class='flag-5'>向量</b><b class='flag-5'>机</b>特征选择

    支持向量的多组分气体实验

    本文针对大规模高维气体分析样本难以计算的问题,提出一种提升的支持向量学习方法。该方法将支持
    发表于 07-08 11:38 14次下载
    <b class='flag-5'>支持</b><b class='flag-5'>向量</b><b class='flag-5'>机</b>的多组分气体实验

    基于支持向量(SVM)的工业过程辨识

    支持向量应用到典型的时变、非线性工业过程 连续搅拌反应釜的辨识中, 并与BP 神经网络建模相比较, 仿真结果表明了支持向量
    发表于 03-30 16:12 42次下载
    基于<b class='flag-5'>支持</b><b class='flag-5'>向量</b><b class='flag-5'>机</b>(SVM)的工业过程辨识

    基于机器学习支持向量SVM的天气识别和预报

    机器学习中有监督学习模型支持向量SVM来进行强对流天气的识别和预报。强对流天气的发生可以看作
    发表于 11-10 17:46 1次下载

    关于支持向量(SVMs)

    支持向量(Support Vector Machine: SVM)是一种非常有用的监督式机器学习算法
    的头像 发表于 04-02 08:52 4196次阅读
    关于<b class='flag-5'>支持</b><b class='flag-5'>向量</b><b class='flag-5'>机</b>(<b class='flag-5'>SVMs</b>)

    OpenCV机器学习SVM支持向量的分类程序免费下载

    本文档的主要内容详细介绍的是OpenCV机器学习SVM支持向量的分类程序免费下载。
    发表于 10-09 11:45 5次下载

    什么是支持向量 什么是支持向量

    支持向量,英文为Support Vector Machine,简称SV(论文中一般简称SVM)。它是一 种监督式学习的方法,它广泛的应用
    发表于 01-28 16:01 2.2w次阅读
    什么是<b class='flag-5'>支持</b><b class='flag-5'>向量</b><b class='flag-5'>机</b> 什么是<b class='flag-5'>支持</b><b class='flag-5'>向量</b>

    介绍支持向量的基础概念

    支持向量(Support Vector Machine)是一种较知名的机器学习算法,该算法由俄罗斯数学家Vladimir Vapnik创立
    的头像 发表于 04-28 09:09 1029次阅读
    介绍<b class='flag-5'>支持</b><b class='flag-5'>向量</b><b class='flag-5'>机</b>的基础概念

    机器学习相关介绍:支持向量(低维到高维的映射)

    根据机器学习相关介绍(9)——支持向量(线性不可分情况),通过引入松弛变量δi将支持
    的头像 发表于 05-16 11:20 2150次阅读
    <b class='flag-5'>机器</b><b class='flag-5'>学习</b>相关介绍:<b class='flag-5'>支持</b><b class='flag-5'>向量</b><b class='flag-5'>机</b>(低维到高维的映射)

    支持向量(核函数的定义)

    根据机器学习相关介绍(10)——支持向量(低维到高维的映射),支持
    的头像 发表于 05-20 10:41 830次阅读
    <b class='flag-5'>支持</b><b class='flag-5'>向量</b><b class='flag-5'>机</b>(核函数的定义)