笔者: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. UVA 11039 - Building designing 水题哇~

    水题一题,按绝对值排序后扫描一片数组(判断是否异号,我是直接相乘注意中间值越界)即可. 感觉是让我练习sort自定义比较函数的. #include<cstdio> #include< ...

  2. echart报表插件使用笔记(二)--按月统计

    按月统计注冊人数 java类: package com.spring.controller; import java.io.IOException; import java.sql.Connectio ...

  3. [Javascript] Validate Data with the Every() Method

    The every method returns true or false based on whether or not every item in the array passes the co ...

  4. JDK8 直接定义接口中静态方法

    JDK8前,接口只能是抽象方法. 但是在JDK8中,静态方法是可以直接定义方法体,可以直接用接口名调用.实现类和实现是不可以调用的 一.直接调用接口的静态方法 二.实现接口的子类来调用接口的静态方法 ...

  5. 【15.07%】【codeforces 625A】Guest From the Past

    time limit per test 1 second memory limit per test 256 megabytes input standard input output standar ...

  6. Spinlock implementation in ARM architecture

    Spinlock implementation in ARM architecture   SEV and WFE are the main instructions used for impleme ...

  7. [Recompose] Add Lifecycle Hooks to a Functional Stateless Component using Recompose

    Learn how to use the 'lifecycle' higher-order component to conveniently use hooks without using a cl ...

  8. iOS开发runtime学习:一:runtime简介与runtime的消息机制

    一:runtime简介:也是面试必须会回答的部分 二:runtime的消息机制 #import "ViewController.h" #import <objc/messag ...

  9. 撸代码--类QQ聊天实现(基于linux 管道 信号 共享内存)

    一:任务描写叙述 A,B两个进程通过管道通信,像曾经的互相聊天一样,然后A进程每次接收到的数据通过A1进程显示(一个新进程,用于显示A接收到的信息),A和A1间的数据传递採用共享内存,相应的有一个B1 ...

  10. 修改QList中的item(使用下标([index])才可以获得可修改的item的引用)

    QList算是最常用的集合了,今儿偶然间需要修改QList中的值,结果郁闷了.QList中提供了replace函数来替换item,但不是修改.而at().value()操作均返回的是const的ite ...