关于支持向量机SVM,这里也只是简单地作个要点梳理,尤其是要注意的是SVM的SMO优化算法、核函数的选择以及参数调整。在此不作过多阐述,单从应用层面来讲,重点在于如何使用libsvm,但对其原理算法要理解。

SVM理论推导是有些复杂的,关键是怎么把目标函数在约束条件下,最终转化为一个凸二次优化问题。在这里推荐一个写的比较经典的文章,july的博客里的一篇文章《支持向量机通俗导论(理解SVM的三层境界)》,博文链接:http://blog.csdn.net/v_july_v/article/details/7624837

一、步骤

1.找最大分类间隔

2.定目标函数

3.计算α值(不断调整训练)与ω值

4.SMO(串行最小化)可以优化算法

5.核函数对高维数据处理

二、SVM要点

要学会如何使用libsvm以及一些参数的调节经验,另外需要理清楚svm算法的一些思路:

1.svm中最优分类面是对所有样本的几何裕量最大,即

经过一系列推导可得为优化下面原始目标:

注意:选择最大间隔分类器的原因:因为几何间隔与样本的误分次数存在关系:误分次数≤(2R/δ)^2,其中的分母就是样本到分类间隔距离,分子中的R是所有样本中的最长向量值。

2.拉格朗日理论:

  可以将1中的优化目标转换为拉格朗日的形式(通过各种对偶优化,KKD条件),最后目标函数为:

 我们只需要最小化上述目标函数,其中的α为原始优化问题中的不等式约束拉格朗日系数。

3. 对2中最后的式子分别w和b求导可得:

 由上面第1式子可以知道,如果我们优化出了α,则直接可以求出w了,即模型的参数搞定。而上面第2个式子可以作为后续优化的一个约束条件。

4. 对2中最后一个目标函数用对偶优化理论可以转换为优化下面的目标函数:

 而这个函数可以用常用的优化方法求得α,进而求得w和b。

5. 按照道理,svm简单理论应该到此结束。不过还是要补充一点,即在预测时有:

 那个尖括号我们可以用核函数代替,这也是svm经常和核函数扯在一起的原因。

6. 最后是关于松弛变量的引入,(因为之前的推导条件太苛刻,其实在分类过程中会出现噪声,如果对噪声零容忍,那么可能导致分类误解,为了解决此问题故引入松弛变量

因此原始的目标优化公式为:

 此时对应的对偶优化公式为:(对偶公式:就是同一值,目标函数倒过来,min化为max)

 与前面的相比只是α多了个上界。

三、算法流程

对于样本数很多时(几千个),SVM所需要的内存很大,对于此问题,目前的解决方法有2种:块算法和分解算法。

这里libsvm采用的是分解算法里的SMO(串行最小化),其每次训练都只选择2个样本,基本流程图如下:

这里有两个重要算法:一个是α的选择,一个是α的更新

(1) α的选择:选择2个和KKT条件违背最严中的两个αi,包含两层循环…

(2) α的更新:…

四、优缺点

优点:

1.可用于线性/非线性分类,也可用于回归

2.低泛化误差

3.容易解释,计算复杂度低

缺点:

1.对参数和核函数选择敏感

2.原始SVM只擅长处理二分类问题

【机器学习】支持向量机SVM的更多相关文章

  1. 机器学习——支持向量机SVM

    前言 学习本章节前需要先学习: <机器学习--最优化问题:拉格朗日乘子法.KKT条件以及对偶问题> <机器学习--感知机> 1 摘要: 支持向量机(SVM)是一种二类分类模型, ...

  2. 吴裕雄 python 机器学习——支持向量机SVM非线性分类SVC模型

    import numpy as np import matplotlib.pyplot as plt from sklearn import datasets, linear_model,svm fr ...

  3. 机器学习——支持向量机(SVM)之拉格朗日乘子法,KKT条件以及简化版SMO算法分析

    SVM有很多实现,现在只关注其中最流行的一种实现,即序列最小优化(Sequential Minimal Optimization,SMO)算法,然后介绍如何使用一种核函数(kernel)的方式将SVM ...

  4. coursera机器学习-支持向量机SVM

    #对coursera上Andrew Ng老师开的机器学习课程的笔记和心得: #注:此笔记是我自己认为本节课里比较重要.难理解或容易忘记的内容并做了些补充,并非是课堂详细笔记和要点: #标记为<补 ...

  5. 机器学习-支持向量机SVM

    简介: 支持向量机(SVM)是一种二分类的监督学习模型,他的基本模型是定义在特征空间上的间隔最大的线性模型.他与感知机的区别是,感知机只要找到可以将数据正确划分的超平面即可,而SVM需要找到间隔最大的 ...

  6. 机器学习——支持向量机(SVM)

    支持向量机原理 支持向量机要解决的问题其实就是寻求最优分类边界.且最大化支持向量间距,用直线或者平面,分隔分隔超平面. 基于核函数的升维变换 通过名为核函数的特征变换,增加新的特征,使得低维度空间中的 ...

  7. 机器学习支持向量机SVM笔记

    SVM简述: SVM是一个线性二类分类器,当然通过选取特定的核函数也可也建立一个非线性支持向量机.SVM也可以做一些回归任务,但是它预测的时效性不是太长,他通过训练只能预测比较近的数据变化,至于再往后 ...

  8. 机器学习——支持向量机(SVM)之核函数(kernel)

    对于线性不可分的数据集,可以利用核函数(kernel)将数据转换成易于分类器理解的形式. 如下图,如果在x轴和y轴构成的坐标系中插入直线进行分类的话, 不能得到理想的结果,或许我们可以对圆中的数据进行 ...

  9. 机器学习——支持向量机(SVM)之Platt SMO算法

    Platt SMO算法是通过一个外循环来选择第一个alpha值的,并且其选择过程会在两种方式之间进行交替: 一种方式是在所有数据集上进行单遍扫描,另一种方式则是在非边界alpha中实现单遍扫描. 所谓 ...

  10. 机器学习:Python中如何使用支持向量机(SVM)算法

    (简单介绍一下支持向量机,详细介绍尤其是算法过程可以查阅其他资) 在机器学习领域,支持向量机SVM(Support Vector Machine)是一个有监督的学习模型,通常用来进行模式识别.分类(异 ...

随机推荐

  1. EntityFramework走马观花之CRUD(中)

    如果是独立的实体对象,在底层数据库中它对应一张独立的表,那么,对它进行新建.删除和修改没有任何难度,实在不值浪费笔墨在它上头. 在现实项目中,完全独立的对象少之又少,绝大多数情况都是对象之间有着紧密的 ...

  2. Firefox与chrome同步书签

    1. 导出书签,保存为bookmarks.html 2. chrome导入即可

  3. wepy error Parsing error: Unexpected token :

    mpBMCwepy\wepy.config.js eslint  信息 全局重装wepy-clinpm install wepy-cli -g -registry=https://registry.n ...

  4. cocos2d-js v3.1的坑

    前几天因为要用到cc.pool,所以就换了v3.1版本,结果连生成apk的出错(cocos code ide), log显示为:error: relocation overflow in R_ARM_ ...

  5. wxPython的Refresh与事件双重响应

    #!/usr/bin/env python import wx class DoubleEventFrame(wx.Frame): def __init__(self, parent, id): wx ...

  6. Wix Burn运行64位dism.exe的问题

    主要的问题是Burn是一个32位程序,在64位机器上它启动的进程都会被重定向到wow64目录下,也就是说它运行的dism.exe最终会是32位的.解决的方法就是用wix提供的QtExec64CmdLi ...

  7. java.util.ResourceBundle国际化用法详解

    java.util.ResourceBundle国际化用法详解 初识国际化和ResourceBundle 这个类主要用来解决国际化和本地化问题.国际化和本地化可不是两个概念,两者都是一起出现的.可以说 ...

  8. [egret+pomelo]实时对战游戏杂记(5)

    之前大体了解了pomelo服务端的运行的大体运行流程,下面详细的学习一下在服务端比较重要的一个容器模块bearcat,在bearcat的wiki中我们可以对其有个大概的了解,在服务端示例的代码中也大量 ...

  9. dotnet core on Linux 环境搭建及入门demo

    首先感谢张善友大大提供的腾讯云实验室链接(https://www.qcloud.com/developer/labs/list). 以下是整个搭建过程及简单demo实例 1.搭建 .NET Core ...

  10. chrome浏览器常用快捷键

    chrome浏览器常用快捷键 一.总结 一句话总结: Ctrl + j:打开“下载内容”页 Ctrl + t:打开新的标签页,并跳转到该标签页 Ctrl + d:将当前网页保存为书签 1.在新标签页中 ...