SVM支持向量机的基本原理

对于很多分类问题,例如最简单的,一个平面上的两类不同的点,如何将它用一条直线分开?在平面上我们可能无法实现,但是如果通过某种映射,将这些点映射到其它空间(比如说球面上等),我们有可能在另外一个空间中很容易找到这样一条所谓的“分隔线”,将这些点分开。
SVM基本上就是这样的原理,但是SVM本身比较复杂,因为它不仅仅是应用于平面内点的分类问题。SVM的一般做法是:将所有待分类的点映射到“高维空间”,然后在高维空间中找到一个能将这些点分开的“超平面”,这在理论上是被完全证明了是成立的,而且在实际计算中也是可行的。
但是仅仅找到超平面是不够的,因为在通常的情况下,满足条件的“超平面”的个数不是唯一的。SVM需要的是利用这些超平面,找到这两类点之间的“最大间隔”。为什么要找到最大间隔呢?我想这与SVM的“推广能力”有关,因为分类间隔越大,对于未知点的判断会越准确,也可以说是“最大分类间隔”决定了“期望风险”,总结起来就是:SVM要求分类间隔最大,实际上是对推广能力的控制。
我想说到SVM的基本原理,有两个概念不能不提到,一个就是上面说到的“最大分类间隔面”,另一个是关于“VC”的概念。最大分类间隔面比较好懂,从字面上也能知道它的大致含义。但是VC维的概念,我有必要在这里着重说一下。
VC维(Vapnik-Chervonenkis
Dimension)的概念是为了研究学习过程一致收敛的速度和推广性,由统计学习理论定义的有关函数集学习性能的一个重要指标。
传统的定义是:对一个指标函数集,如果存在H个样本能够被函数集中的函数按所有可能的2的K次方种形式分开,则称函数集能够把H个样本打散;函数集的VC维就是它能打散的最大样本数目H。若对任意数目的样本都有函数能将它们打散,则函数集的VC维是无穷大,有界实函数的VC维可以通过用一定的阀值将它转化成指示函数来定义。
VC维反映了函数集的学习能力,VC维越大则学习机器越复杂(容量越大),遗憾的是,目前尚没有通用的关于任意函数集VC维计算的理论,只对一些特殊的函数集知道其VC维。例如在N维空间中线形分类器和线形实函数的VC维是n+1。
好了,说了很多关于支持向量机的东东,我想如果要想对它有比较全面的认识的话,必须花大量的时间去深入研究。不过正是因为SVM在应用方面有很广阔的前景,所以目前有很多人在关注着这个问题。我是抱着一种学习的心态,希望能够和更多的人共同交流。
经过大概一个多月的努力,我用MATLAB实现了SVM的基本功能,做出了软件的雏形,不过因为公司网站建设的缘故,所以对SVM的应用研究也暂时告以段落。不过在不远的将来,公司将在这方面会有更大的投入,研发部门将对这个新的课题进行深入的研究。

SVM支持向量机的基本原理的更多相关文章

  1. 机器学习实战 - 读书笔记(06) – SVM支持向量机

    前言 最近在看Peter Harrington写的"机器学习实战",这是我的学习笔记,这次是第6章:SVM 支持向量机. 支持向量机不是很好被理解,主要是因为里面涉及到了许多数学知 ...

  2. Python实现SVM(支持向量机)

    Python实现SVM(支持向量机) 运行环境 Pyhton3 numpy(科学计算包) matplotlib(画图所需,不画图可不必) 计算过程 st=>start: 开始 e=>end ...

  3. 6-11 SVM支持向量机2

    SVM支持向量机的核:线性核.进行预测的时候我们需要把正负样本的数据装载在一起,同时我们label标签也要把正负样本的数据全部打上一个label. 第四步,开始训练和预测.ml(machine lea ...

  4. 6-10 SVM支持向量机1

    都是特征加上分类器.还将为大家介绍如何对这个数据进行训练.如何训练得到这样一组数据. 其实SVM支持向量机,它的本质仍然是一个分类器.既然是一个分类器,它就具有分类的功能.我们可以使用一条直线来完成分 ...

  5. SVM 支持向量机算法-实战篇

    公号:码农充电站pro 主页:https://codeshellme.github.io 上一篇介绍了 SVM 的原理和一些基本概念,本篇来介绍如何用 SVM 处理实际问题. 1,SVM 的实现 SV ...

  6. [分类算法] :SVM支持向量机

    Support vector machines 支持向量机,简称SVM 分类算法的目的是学会一个分类函数或者分类模型(分类器),能够把数据库中的数据项映射给定类别中的某一个,从而可以预测未知类别. S ...

  7. paper 25 :SVM支持向量机是什么意思?

    转载来源:https://www.zhihu.com/question/21094489 作者:余洋链接:https://www.zhihu.com/question/21094489/answer/ ...

  8. 【机器学习算法-python实现】svm支持向量机(1)—理论知识介绍

    (转载请注明出处:http://blog.csdn.net/buptgshengod) 1.背景      强烈推荐阅读(http://www.cnblogs.com/jerrylead/archiv ...

  9. SVM 支持向量机

          学习策略:间隔最大化(解凸二次规划的问题) 对于上图,如果采用感知机,可以找到无数条分界线区分正负类,SVM目的就是找到一个margin 最大的 classifier,因此这个分界线(超平 ...

随机推荐

  1. PHP中类型约束

    类型约束 什么叫类型约束? 就是要求某个变量只能使用(接收,存储)某种指定的数据类型: php属于“弱类型语言”,通常不支持类型约束: 相应的,强类型语言,类型约束却是其“基本特征”. php中,只支 ...

  2. eclipse官方网址、各个版本的下载

    Eclipse3.1后各版本代号 (2013-07-10 20:48:42) 转载▼   分类: Java Eclipse 3.1 版本代号 IO [木卫1,伊奥]  Eclipse 3.2 版本代号 ...

  3. web三大组件的加载顺序

    Web三大组件:过滤器组件  监听器组件  Servlet组件 过滤器的顶级接口:javax.servlet.Filter 监听器的顶级接口:javax.servlet.ServletContextL ...

  4. Delphi中的ADOquery 用法以及ADOquery的自有方法Append 和Delete和 Edit 和Post

    Delphi在数据库操作是非常好用的,delphi把ADO一些方法属性都集成了,以下是我的一些总结:*******************************通过sql的存储过程来实现:添加Wit ...

  5. JavaScript常用方法(工具类的封装)

    日期格式化 function formatDateTime(timeStamp) { var date = new Date(); date.setTime(timeStamp); var y = d ...

  6. 【Quartz.NET】Quartz.NET 入门

    概述 Quartz.NET是一个开源的作业调度框架,非常适合在平时的工作中,定时轮询数据库同步,定时邮件通知,定时处理数据等. Quartz.NET允许开发人员根据时间间隔(或天)来调度作业.它实现了 ...

  7. python的N个小功能(文本字段对应数值,经纬度计算距离,两个时间点计算时间间隔)

    案例1 >>> import pandas as pd >>> df=pd.DataFrame({'A':[1,2,3],'B':[1,2,3],'C':[1,2, ...

  8. WEB测试基础

    一.输入框1.字符型输入框:(1)字符型输入框:英文全角.英文半角.数字.空或者空格.特殊字符“~!@#¥%……&*?[]{}”特别要注意单引号和&符号.禁止直接输入特殊字符时,使用“ ...

  9. C++解析(14):静态成员变量与静态成员函数

    0.目录 1.静态成员变量 2.静态成员函数 3.小结 1.静态成员变量 成员变量的回顾: 通过对象名能够访问public成员变量 每个对象的成员变量都是专属的 成员变量不能在对象之间共享 新的需求: ...

  10. [HNOI2002]跳蚤 【容斥】

    题目描述 Z城市居住着很多只跳蚤.在Z城市周六生活频道有一个娱乐节目.一只跳蚤将被请上一个高空钢丝的正中央.钢丝很长,可以看作是无限长.节目主持人会给该跳蚤发一张卡片.卡片上写有N+1个自然数.其中最 ...