笔者:liangdas

出处:简单点儿,通俗点儿,机器学习    http://blog.csdn.net/liangdas/article/details/44251469

引言:

1995年Cortes和Vapnik于首先提出了支持向量机(Support Vector Machine)。因为其可以适应小样本的分类。分类速度快等特点,性能不差于人工神经网络,所以在这之后,人们将SVM应用于各个领域。大量使用SVM模型的论文不断涌现,包含国内和国外。

可是。直到如今,非常少能见到对在一个能对SVM的原理准确,具体,通俗。严谨阐述的论文或者资料。所以决定查阅非常多的资料。结合自己的思考和理解,来写一篇关于SVM的系列文章。

线性可分问题:

在分类问题中。最简单的分类就是二分类问题,并且这个二分类问题是一个线性可分问题。那么对于一个线性二分类问题,它的目标函数是什么呢?确定目标函数之后。我们又用什么方法来求解呢?

在一维空间,也就是一个坐标轴上面。要分开两个能够分开的点集合,我们仅仅须要找到一个点。如图1:

图1 一维线性可分示意图

在二维空间中,要分开两个线性可分的点集合,我们须要找到一条分类直线就可以,如图2:

图2 二维线性可分示意图

在三维空间中,要分开两个线性可分的点集合,我们须要找到一个分类面:如图3:

图3 三维线性可分示意图

在n维空间中。要分开两个线性可分的点集合,我们须要找到一个超平面(Hyper Plane)。

为了直观,我们以上面二维空间为样例来分析:在图2中分布着两类点:淡蓝色和黑色的点。分别代表着不同的两个类别,显然,我们能够找到一条直线来把这两类点分开。高中的时候,常见的直线方程表达式是y=ax+b。我们如今用向量来表示,就是:,把向量(a。-1)用向量符号w来表示,维数向量(x。y)用向量符号x(此时的x是一个向量)来表示。那么直线方程就变成了w*x+b=0。

目标函数:

再次观察图2。能够知道,在这个二维平面中,能够把两类点的分开的直线有非常多条。如图4所看到的,那么这些直线中。哪一条才是最好的呢?也就是怎样选择出一条最好的直线呢?

图4 多条分类直线

在图4中。我们先看淡蓝色的点。假设这些点到分类直线的距离越大,分类直线也就越远离蓝色的点。那么再来一个新的点,假设这个点是按照淡蓝色点集合的特性产生的(也就是它不是一个相对于蓝色点集合非常神秘的点)。那么这个点也非常可能和蓝色的点集合一样,分布在直线的同一側。分布在同一側,表明它和蓝色集合点属于同一个类别。

用相同的思想,图4中,对于黑色的集合点,这条分类直线离它们的距离也要越远越好。所以找最优分类线。就是要找到这条一条直线,使它到两个类别点的距离越大越好。

回顾一下高中所学的点到直线的距离公式:直线(一般式):Ax+By+C=0另外一个点的坐标(x0, y0)。那么这点到这直线的距离就是:

那么。对于直线wx+b=0的形式,假设有一个点x,那么它到直线的距离公式就是。把向量写成二范数的形式,即是:

所以上面的二维线性可分问题的目标函数就能够抽象成例如以下的数学表达式:

目标函数的简化:

对于一个待分类类别。为了自己的类别能准确地分类,都希望分类直线到自己的距离大些。当有两类的时候,就会形成相互竞争,最后的竞争结果就是让这条分类直线,到两个类别的距离相等。在生活中。通常也是这样达到一种平衡状态的。

如图5,我们作两条直线,和分类直线平行。让这两条直线分别经过以下蓝色和黑色集合的边界,同一时候。满足这两条直线到中间分类直线的距离相等,那么,我们能够假定这两条直线方程各自是wx+b=c, wx+b=-c。

图5 两类别到分类直线的距离相等

用两条平行直线的距离计算公式, 那么。两个类别集合到分类直线的近期距离,这个公式,事实上和上面点到直线的距离公式是一样的。

对于一条直线,wx+b=c,我们对应的成比例的缩小他们的系数,如变成。这条直线和原来的直线还是同一条直线。如今把它变成,新的直线还是和曾经直线是同一条直线。也就是说。对于直线wx+b=c,我们总能够找到另外的一条新的
w1=w/c, b1=w/c。使w1*x+b1=1, 并且这两条直线事实上表达的是同一条直线,这种话,上面的图5能够变成例如以下的图6:

图6 两类别到分类直线的距离相等

从图6中,结合我们要寻找的最优分类直线。是到两类类别点集合的距离最大的直线的思想,我们能够抽象出此时的目标函数:

这样,这个目标函数看起来就比原来简洁多了。

目标函数的约束条件:

在图6中。对蓝色样本点而言,不在w1*x+b1=1直线上的点。一定是在直线上面的点,它们满足w1*x+b1>1,所以对全部的蓝色样本点而言,它们都满足w1*x+b1>=1。同理,对全部黑色的样本点,都是满足w1*x+b1<=-1。

这两个条件是我们求解的限制条件。也就是我们寻找上面的目标函数的时候。必须满足上面的两个不等式约束。

满足条件:

观察上面的不等式条件表达式,是不是有一种想把两个式子合并成一个式子的冲动?事实上。上面蓝色点相应的不等式,我们在不等式两边同一时候乘以一个y=1;同理。黑色点相应的不等式,在式子两边同一时候乘以一个y=-1。 那么上面的两个式子能够变成

可是,为什么能够在一个不等式的两边乘以一个1,而另外一个乘以-1呢?我们来看蓝色点相应的不等式,式子左边是样本点的维度向量x的表达式。对于一些训练样本点。它们另一个已知的类别标记量label,这里我们把它叫做y。这种话。对蓝色点的y值,我们人为将其定为1。而对黑色点的y值,我们将其定为-1,所以,对上面的两个不等式,分别在不等式的两边乘以类别值y,我们就能够自然将两个不等式合并成上面的那一个不等式了。

这也是为什么我们在生成SVM训练样本的时候,将两个类别分别定义成1和-1的原因!

到这里,我们目标函数能够写成:

这种一个目标函数是一个带不等式约束条件的优化问题。它怎么来求解呢?后面一章节来继续解说这个问题。

ps:使用或者转载请标明出处。禁止以商业为目的的使用。

版权声明:本文博主原创文章,博客,未经同意不得转载。

SVM明确的解释1__ 线性可分问题的更多相关文章

  1. 支持向量机(SVM)理论总结系列.线性可分(附带R程序案例:用体重和心脏重量来预测一只猫的性别)

    附注:不要问我为什么写这么快,是16年写的. 1.名词解释 支持向量机中的机:在机器学习领域,常把一些算法看做一个机器,如分类机(也叫作分类器) 2.问题描述 空间中有很多已知类别的点,现在想用一个面 ...

  2. SVM清晰讲解——线性可分问题

    转载作者:liangdas 引言: 1995年Cortes和Vapnik于首先提出了支持向量机(Support Vector Machine),由于其能够适应小样本的分类,分类速度快等特点,性能不差于 ...

  3. 线性可分支持向量机--SVM(1)

    线性可分支持向量机--SVM (1) 给定线性可分的数据集 假设输入空间(特征向量)为,输出空间为. 输入 表示实例的特征向量,对应于输入空间的点: 输出 表示示例的类别. 线性可分支持向量机的定义: ...

  4. 线性可分SVM中线性规划问题的化简

    在网上找了许多关于线性可分SVM化简的过程,但似乎都不是很详细,所以凭借自己的理解去详解了一下. 线性可分SVM的目标是求得一个超平面(其实就是求w和b),在其在对目标样本的划分正确的基础上,使得到该 ...

  5. 线性可分支持向量机与软间隔最大化--SVM(2)

    线性可分支持向量机与软间隔最大化--SVM 给定线性可分的数据集 假设输入空间(特征向量)为,输出空间为. 输入 表示实例的特征向量,对应于输入空间的点: 输出 表示示例的类别. 我们说可以通过间隔最 ...

  6. svm 之 线性可分支持向量机

    定义:给定线性可分训练数据集,通过间隔最大化或等价的求解凸二次规划问题学习获得分离超平面和分类决策函数,称为线性可分支持向量机. 目录: • 函数间隔 • 几何间隔 • 间隔最大化 • 对偶算法 1. ...

  7. 统计学习:线性可分支持向量机(SVM)

    模型 超平面 我们称下面形式的集合为超平面 \[\begin{aligned} \{ \bm{x} | \bm{a}^{T} \bm{x} - b = 0 \} \end{aligned} \tag{ ...

  8. 统计学习2:线性可分支持向量机(Scipy实现)

    1. 模型 1.1 超平面 我们称下面形式的集合为超平面 \[\begin{aligned} \{ \bm{x} | \bm{a}^{T} \bm{x} - b = 0 \} \end{aligned ...

  9. RBF网络——核心思想:把向量从低维m映射到高维P,低维线性不可分的情况到高维就线性可分了

      RBF网络能够逼近任意的非线性函数,可以处理系统内的难以解析的规律性,具有良好的泛化能力,并有很快的学习收敛速度,已成功应用于非线性函数逼近.时间序列分析.数据分类.模式识别.信息处理.图像处理. ...

随机推荐

  1. ajax利用php上传图片

    <script type="text/javascript"> window.onload = function(){ document.getElementById( ...

  2. ubuntu下安装phpredis的模块扩展

    1.前提是先安装好redis,然后再安装phpredis. .. 2.先下载phpredis-master.tar.gz安装包... 详细详情例如以下: <span style="co ...

  3. 3D游戏《龙心传奇Dragona》全套完整源码

    <龙心传奇Dragona>全套完整源码,<Dragona Online>也叫<龙心传奇>是一款3D中古奇幻风格网络游戏,描写叙述一个充满剑.魔法.恶魔和龙的魔法大陆 ...

  4. 为什么通过空指针(NULL)能够正确调用类的部分成员函数

    #include <iostream> using namespace std; class B { public: void foo() { cout << "B ...

  5. HttpClient证书回调问题解决

    /// <summary>        /// httpclient请求        /// </summary>        /// <param name=&q ...

  6. vue指令概览

    原文 简书原文:https://www.jianshu.com/p/5fd47b7422fd 大纲 1.什么是vue指令 2.向指令中传入参数 3.指令中带入修饰符 4.指令的缩写 5.常见的vue指 ...

  7. LA-3708 - Graveyard 简单的模拟一下即可

    一开始不知道在想啥,竟然写了个双重for循环的.T T一直WA,又没效率. T T然后在纸上模拟演算,改了,就AC了 以后做题果断要先模拟一下例子...能加深对题目的理解. 当教训吧..太懒导致写了好 ...

  8. 9.3 Binder系统_驱动情景分析_服务获取过程

    4. 服务获取过程 test_client客户端: (1)在用户态先构造name=“hello”的数据(服务的名字是hello),调用ioctl发送数据给service_manager(handle= ...

  9. 请求筛选模块被配置为拒绝包含 hiddenSegment 节的 URL 中的路径

    转自原文 请求筛选模块被配置为拒绝包含 hiddenSegment 节的 URL 中的路径. 打开C:\Windows\System32\inetsrv\config路径 找到applicationH ...

  10. [Nuxt] Add Arrays of Data to the Vuex Store and Display Them in Vue.js Templates

    You add array of todos to the store simply by adding them to the state defined in your store/index.j ...