理解SVM(一)——入门SVM和代码实现

这篇博客我们来理解一下SVM。其实,之前好多大牛的博客已经对SVM做了很好的理论描述。例如CSDN上july的那篇三层境界介绍SVM的博文,连接如下:

http://blog.csdn.net/v_july_v/article/details/7624837

那么我这里抛去一些复杂的公式推导,给出一些SVM核心思想,以及用Python实现代码,再加上我自己的理解注释。

1. SVM的核心思想

SVM的分类思想本质上和线性回归LR分类方法类似,就是求出一组权重系数,在线性表示之后可以分类。我们先使用一组trainging set来训练SVM中的权重系数,然后可以对testingset进行分类。

说的更加更大上一些:SVM就是先训练出一个分割超平面separation hyperplane, 然后该平面就是分类的决策边界,分在平面两边的就是两类。显然,经典的SVM算法只适用于两类分类问题,当然,经过改进之后,SVM也可以适用于多类分类问题。

我们希望找到离分隔超平面最近的点,确保它们离分隔面的距离尽可能远。这里点到分隔面的距离被称为间隔margin. 我们希望这个margin尽可能的大。支持向量support vector就是离分隔超平面最近的那些点,我们要最大化支持向量到分隔面的距离。

那么为了达到上面的目的,我们就要解决这样的一个问题:如何计算一个点到分隔面的距离?这里我们可以借鉴几何学中点到直线的距离,需要变动的是我们这里是点到超平面的距离。具体转换过程如下:

除了定义距离之外,我们还需要设定两类数据的类别标记分别为1和-1,这样做是因为我们将标记y和距离相乘,不管属于哪一类,乘积都是一个正数,这样有利于我们设计目标函数。

这样我们便可以定义我们SVM的目标函数:

http://www.xinli001.com/info/100413207

原文地址:https://www.cnblogs.com/xwqfa/p/9963357.html

时间: 2024-12-15 14:07:56

理解SVM(一)——入门SVM和代码实现的相关文章

机器学习之&&SVM支持向量机入门:Maximum Margin Classifier

概率论只不过是把常识用数学公式表达了出来. --拉普拉斯 0. 前言 这是一篇SVM的入门笔记,来自我对PlusKid.JerryLead.July等大神文章的拜读心得,说是心得还不如说是读文笔记,希望在自己理解的层面上给予SVM这个伟大的机器学习算法概要介绍,让更多的热爱机器学习的伙伴们进入到SVM的世界.PS:文章会以问答的形式为主要结构. 1.概念 1.1.什么是SVM? 支持向量机即 Support Vector Machine,简称 SVM .(第一次接触SVM是在阿里大数据竞赛的时候

[机器学习之SVM] 线性SVM还是非线性SVM?【转】

SVM的应用领域很广,分类.回归.密度估计.聚类等,但我觉得最成功的还是在分类这一块. 用于分类问题时,SVM可供选择的参数并不多,惩罚参数C,核函数及其参数选择.对于一个应用,是选择线性核,还是多项式核,还是高斯核?还是有一些规则的. 实际应用中,多数情况是特征维数非常高.如OCR中的汉字识别,提取8方向梯度直方图特征,归一化的字符被等分成8*8的网格,每个网格计算出长度为8的方向直方图,特征维数是8*8*8 = 512维.在这样的高维空间中,想把两个字符类分开,用线性SVM是轻而易举的事,当

Ajax入门学习原始代码

<script type="text/javascript">        window.onload = function () {            //1.创建xmlhttprequest对象            var xhr = createXHR();            function createXHR() {//为了兼容新老IE的版本                var request;                if (typeof(X

Spring MVC注解配置结合Hibernate的入门教程及其代码实例

原文:Spring MVC注解配置结合Hibernate的入门教程及其代码实例 源代码下载地址:http://www.zuidaima.com/share/1787210045197312.htm 1.概述 本文旨在搭建Spring MVC+Hibernate开发框架,通过一个简单的demo讲解Spring MVC的相关配置文件,以及通过注解方式实现简单功能. 开发框架:Spring+Spring MVC+Hibernate(Spring所用的版本为3.0.5). 数据库:MySQL(数据库名称

java操作memcached入门教程demo代码

原文:java操作memcached入门教程demo代码 源代码下载地址:http://www.zuidaima.com/share/1550463754996736.htm 参考地址: http://www.open-open.com/lib/view/open1357831114183.html http://tech.idv2.com/2008/07/10/memcached-001/ 感谢 京-java牛-ID号1  感谢 锡-SuperPrivate-195 在网上搜索了部分代码,一个

理解CPU分支预测,提高代码效率

摘要: 技术传播的价值,不仅仅体现在通过商业化产品和开源项目来缩短我们构建应用的路径,加速业务的上线速率,也会体现在优秀程序员在工作效率提升.产品性能优化和用户体验改善等小技巧方面的分享,以提高我们的工作能力. 技术传播的价值,不仅仅体现在通过商业化产品和开源项目来缩短我们构建应用的路径,加速业务的上线速率,也会体现在优秀程序员在工作效率提升.产品性能优化和用户体验改善等小技巧方面的分享,以提高我们的工作能力. 从本期开始,我们将邀请来自阿里巴巴各个技术团队的程序员,涵盖中间件.前端.移动开发.

SVM算法入门

转自:http://blog.csdn.net/yangliuy/article/details/7316496SVM入门(一)至(三)Refresh 按:之前的文章重新汇编一下,修改了一些错误和不当的说法,一起复习,然后继续SVM之旅. (一)SVM的简介 支持向量机(Support Vector Machine)是Cortes和Vapnik于1995年首先提出的,它在解决小样本.非线性及高维模式识别中表现出许多特有的优势,并能够推广应用到函数拟合等其他机器学习问题中[10]. 支持向量机方法

【机器学习速成宝典】模型篇08支持向量机【SVM】(附python代码)

目录 什么是支持向量机(SVM) 特征选择 使用ID3算法生成决策树 使用C4.5算法生成决策树 使用CART算法生成决策树 预剪枝和后剪枝 应用:遇到连续与缺失值怎么办? 多变量决策树 Python代码(sklearn库) 什么是支持向量机(SVM) 引例 现有训练集如下,请训练一个决策树模型,对未来的西瓜的优劣做预测. 返回目录 什么是决策树(Decision Tree)2 引例 现有训练集如下,请训练一个决策树模型,对未来的西瓜的优劣做预测. 返回目录 什么是决策树(Decision Tr

Core Graphics快速入门——从一行代码说起

Core Graphics入门 想必每个第一次接触Core Graphics的开发者都被无数的API.混乱的代码逻辑折腾得头疼不已,甚至望而却步.即使是绘制一个简单的矩形也看上去非常繁琐.本文换一个角度,整理一下有关Core Graphics的知识,也算作是这段时间学习的总结. Core Graphics和UIKit的区别 首先从概念上了解一下: 根据苹果的描述,UIKit是我们最容易也是最常接触到的框架.绝大多数图形界面都由UIKit完成.但是UIKit依赖于Core Graphics框架,也