SVM即支持向量机,是一种机器学习内的二类分类方法,是有监督学习方法。

首先我们需要建立一个分类任务:

首先考虑线性可分的情况:(所谓线性可分就是在N维空间上的两类点,可以用N-1个未知数的函数(超平面)把其分为两类的情况),

如下图是一个简单的线性可分,二维平面上的两类点可以被一个y=kx+b的函数区分为两类

如上图,SVM就是要得到一个最好的超平面使得模型拥有最好的泛化能力(泛化能力,即对于新数据标签预测准确率的度量)

根据上图的描述,我们可以看到,在这个二维平面上,我们是要得到一个直线的方程y=kx+b,,使得区分开两类点,并且对于新的数据点划分类别的能力也最强。

那么如何使得泛化能力最强呢?

这里SVN考虑的方式是:

在一个超平面上,我们假设最终得到的最优超平面的方程是:w X + b =0

这里的w、b都是n维空间的向量,n维空间的数据点都是一个n维向量的形式。设方程为Y = w X + b

1.处于超平面上方的点Xi使得w Xi + b>0,并且随着距离增加->无穷大

2.处于超平面上方的点Xj使得w Xj + b<0,并且随着距离增加->负无穷大

由以上两点可以知道,距离超平面越远的点,Y越大。svm认为距离一个点距离分类超平面的远近可以表示分类预测的确信程度。

由此引出函数间隔和几何间隔:

函数间隔还不够,这是因为,根据函数间隔的方程可以看出来,把w、b改为2w、2b后,函数间隔变大了两倍,但是方程却并没有变化,所以这还需要对函数间隔加入一个约束||w||,使得间隔的衡量不会因为w、b改变而变化,这里给出几何间隔的定义:

这样我们的问题就变成了,最优的超平面《==》数据集之间的几何间隔最大:

得到以下方程:(几何间隔最大,条件为所有的数据点的到超平面的距离都大于几何间隔)

根据函数间隔和几何间隔的关系,得到下式:(基本上是一个代入简化的问题)

对于这里还可以进一步优化:

得到的问题是一个经典的凸二次规划问题:(约束最优化,7.13前者是求最优,7.14是给出的约束)

数学书有人对这样的问题提出过很好的统一的解法:KKT方法等,这个我不深入讨论,(因为也不太懂-_-)

我所知道的是,svm从这个最优化问题中可以得到w、b的解,(我们假设出了方程,构造问题求解方程的参数就得到了超平面的方程)

什么是支持向量:

支持向量是如下图中的距离分类超平面最近的点,在虚线上点都是支持向量,其实整个svm的模型构建只与这些个支持向量有关,去掉支持向量以外的点并不会影响模型的构建,即只要支持向量没变,那得到的还是一样的模型。

因为我们前面讨论过了函数间隔对于该最优化问题其实是不影响的,所以我们假设函数间隔=1来处理这个等价的最优化问题。

所以我们看下图的描述,几何间隔就是 1/||w||(定义为点到超平面上的),两类数据之间的最小几何距离为2/||w||

(未完)

SVM原理(1)的更多相关文章

  1. Support Vector Machine (1) : 简单SVM原理

    目录 Support Vector Machine (1) : 简单SVM原理 Support Vector Machine (2) : Sequential Minimal Optimization ...

  2. 机器学习之支持向量机—SVM原理代码实现

    支持向量机—SVM原理代码实现 本文系作者原创,转载请注明出处:https://www.cnblogs.com/further-further-further/p/9596898.html 1. 解决 ...

  3. SVM原理与实践

    SVM迅速发展和完善,在解决小样本.非线性及高维模式识别问题中表现出许多特有的优势,并能够推广应用到函数拟合等其他机器学习问题中.从此迅速的发展起来,已经在许多领域(生物信息学,文本和手写识别等)都取 ...

  4. SVM原理以及Tensorflow 实现SVM分类(附代码)

    1.1. SVM介绍 1.2. 工作原理 1.2.1. 几何间隔和函数间隔 1.2.2. 最大化间隔 - 1.2.2.0.0.1. \(L( {x}^*)\)对$ {x}^*$求导为0 - 1.2.2 ...

  5. (一)SVM原理

    前言 本文开始主要介绍一下SVM的分类原理以及SVM的数学导出和SVM在Python上的实现.借鉴了许多文章,会在后面一一指出,如果有什么不对的希望能指正. 一. SVM简介 首先看到SVM是在斯坦福 ...

  6. 机器学习 | 深入SVM原理及模型推导(一)

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是机器学习专题的第32篇文章,我们来聊聊SVM. SVM模型大家可能非常熟悉,可能都知道它是面试的常客,经常被问到.它最早诞生于上世纪六 ...

  7. 支持向量机(SVM)原理详解

    SVM简介 支持向量机(support vector machines, SVM)是一种二分类模型,它的基本模型是定义在特征空间上的间隔最大的线性分类器,间隔最大使它有别于感知机:SVM还包括核技巧, ...

  8. SVM原理简介

    本文只是简单介绍一下SVM的理论框架,想要详细了解当中细节问题处理可以参看后续章节或者网上各种详细资料.推荐Andrew Ng的斯坦福大学机器学习课程. 年代中期发展起来的基于统计学习理论的一种机器学 ...

  9. 支持向量机SVM原理_python sklearn建模乳腺癌细胞分类器(推荐AAA)

    项目合作联系QQ:231469242 sklearn实战-乳腺癌细胞数据挖掘(博主亲自录制视频) https://study.163.com/course/introduction.htm?cours ...

随机推荐

  1. C蛮的全栈之路-node篇(一) 环境布置

    目录 C蛮的全栈之路-序章 技术栈选择与全栈工程师C蛮的全栈之路-node篇(一) 环境布置C蛮的全栈之路-node篇(二) 实战一:自动发博客 ---------------- 我是分割线 ---- ...

  2. 哈哈,CSDN又支持Windows Live Writer了

    从10年开始写CSDN博客,后面不支持WLW了,就不怎么写了,话说自带的编辑器确实不怎么样,不过又支持了,那就哈哈,重新开工了. 关于如何配置的,跟以前一样,详情如下所示: http://blog.c ...

  3. Ubuntu14.04 Tomcat 安装过程记录

    Ubuntu14.04 Tomcat 安装过程记录 检查java的版本 zhousp@ubuntu:~$ sudo java -version [sudo] password for zhousp: ...

  4. java设计模式——单例(Singleton)模式

    在某些场景,你需要找到一个承担职责的对象,并且这个对象是他所属类的唯一实例.此时可以使用单例模式. 单例模式的意图是为了确保一个类有且仅有一个实例,并为他提供一个全局的访问点.创建一个担当独一无二角色 ...

  5. PHP中定义常量的几种方式与区别

    [问]在php中定义常量时,const与define的区别? [答]使用const使得代码简单易读,const本身就是一个语言结构,而define是一个函数.另外const在编译时要比define快很 ...

  6. 手工构建ISO的基本步骤

    1.完成rpm包的构建 登录测试机,ssh 10.xx.xx.xxx cd /home/svn/desktop/trunk/ svn update                            ...

  7. loadView与viewDidLoad不同 && loadView学习总结

    loadView学习总结 UIViewController类或其子类会在初始化时创建一个UIView对象,会作为控制器的默认视图显示出来,可以通过self.view寻址访问.但没有调用loadView ...

  8. Ruby自学笔记(二)— Ruby的一些基础知识

    Ruby安装好之后,我们就可以来实践Ruby语言了. 以下是一些学习到的简单基础知识: 1. 如何执行Ruby文件? 我们编写的Ruby文件是以rb为后缀名的,例如:XXX.rb.当要执行ruby文件 ...

  9. 关于ueditor1.4.3版复制section标签丢失class和style样式问题

    在复制微信的文章格式到ueditor时发现section标签中的style和class属性丢失,严重影响美观. 原文格式,排版清晰段落分明赏心悦目: 复制到ueditor后的格式...这跟原文是没法比 ...

  10. BZOJ 1011 遥远的行星

    Description 直线上N颗行星,X=i处有行星i,行星J受到行星I的作用力,当且仅当i<=AJ.此时J受到作用力的大小为 Fi->j=Mi*Mj/(j-i) 其中A为很小的常量,故 ...