基本思想:

首先通过非线性变换将输入空间变换到高维空间,然后在这个新空间求最优分类面即最大间隔分类面,其中通过采用核函数作为内积,间接实现了对特征的非线性变换,因此避开了在高维空间进行计算。

决策过程:

首先输入样本和一系列的支持向量进行相似性比较,而采用的相似度度量就是核函数,比较后的得分进行加权求和,最后根据加权求和值的大小进行类别决策。

采用不同的核函数就是采用不同的相似行度量,比如线性支持向量机就是采用欧式空间中的内积作为相似性度量。

最优分类超平面:

如图所示, 方形点和圆形点代表两类样本, H 为分类线,H1, H2分别为过各类中离分类线最近的样本且平行于分类线的直线, H1、H2上的点(xi, yi)称为支持向量, 它们之间的距离叫做分类间隔(margin)。中间那条分界线并不是唯一的,我们可以把它稍微旋转一下,只要不分错。所谓最优分类面(Optimal Hyper Plane)就是要求分类面不但能将两类正确分开(训练错误率为0),而且使分类间隔最大。推广到高维空间,最优分类线就变为最优分类面。支持向量是那些最靠近决策面的数据点,这样的数据点是最难分类的,因此,它们和决策面的最优位置直接相关。

核函数类型:

  • 线性
  • 多项式
  • 径向基(RBF)
    RBF函数的中心、位置、宽度、个数和连接权值都可以在SVM的训练过程中确定。
  • Sigmoid
    实现的是一个三层的神经网络,隐含层节点的个数就是支持向量的个数,也就是实现自动确定节点的个数。

LIBSVM的参数设置如下:

核函数参数:

  • 《模式识别》张学工:

    • 基本经验是,先尝试简单的选择,如线性核函数,结果不好时再考虑非线性核函数。
    • 如果采用RBF,应该首先选用宽度较大的核,宽度越大越接近线性,然后尝试减小宽度,增加非线性。
  • 吴恩达课程:
    • 如果特征数量达到和样本数量差不多,选用LR或线性核
    • 如果特征数量小,样本数量正常,用径向基(RBF)
    • 如果特征数量小,而样本数量很大,则要手工添加特征变成第一种情况

SVM适合小训练集的原因:

如果增加的样本点只是无效约束,并不会影响其最后的结果。

由于使用数据集的核矩阵(Kernel Matrix)描述样本之间的相似性,矩阵元素的个数随着数据规模增大成平方增长。这样要随着数据规模增大,SVM的计算变得无法处理。

拉格朗日乘子和对偶问题

支持向量机想得到最优分类超平面,
于是要最大化分类间隔,
也就要最小化权向量的模
在求上面这个最小值的时候,有一个不等式约束:分类决策函数x样本类别符号>1
通过对每个样本引入一个拉格朗日系数,将不等式约束转为等式约束:min max L(w,b,a)
L(w,b,a) 是拉格朗日泛函,原来的解等价于对w,b求最小,a求最大,最优解在L的鞍点上取得
在鞍点处,L对w和b的偏导都为0,令L(w,b,a)对w和b求偏导为0,
将结果带入拉格让日函数中w和b消去,得到L的对偶问题Q(a),
通过求对偶问题的解a,可以求出原问题的解w,
通过KKT条件得到,在拉格朗日泛函处满足:分类决策函数x样本类别符号=1,所以已知w,可以用任何一个支持向量带入上式,求出b。实际中通常对所有a非零的样本求b,再求平均。

注:上面这些主要是对《模式识别》第三版,4.6节的整理,理清思路

通俗来讲,对偶问题就是使求解更加高效且目标函数值不变,通过先消去w,b,得到关于α的函数,然后单独计算 α,通过得到的α反求w,b,最后获得超平面的参数,相比于先对α的不等式约束进行计算,对偶的方式使得计算更加便捷。

具体算法流程点这里 拉格朗日乘子细节

猜你喜欢:

【算法】一个简单的支持向量机(SVM)原理相关推荐

  1. 统计学习方法|支持向量机(SVM)原理剖析及实现

    欢迎直接到我的博客查看最近文章:www.pkudodo.com.更新会比较快,评论回复我也能比较快看见,排版也会更好一点. 原始blog链接: http://www.pkudodo.com/2018/ ...

  2. 支持向量机——SVM原理

    SVM--Support Vector Machine 5.11 update:拉格朗日对偶问题的推导 5.15 update:SMO算法推导 5.17 update:sklearn实现 文章目录 S ...

  3. 机器学习:支持向量机SVM原理与理解

    引言 --"举牌子:Support Vector Machines " 一直在犹豫要不要写SVM,因为网上已经有很多详细的SVM原理的解释甚至详细推导,而这东西又庞大复杂,想了解的 ...

  4. svm 支持向量机 回归 预测_机器学习:简单理解支持向量机SVM

    在介绍过贝叶斯之后,今天尝试着给大家介绍支持向量机SVM. 在机器学习中,SVM试图找到一个最佳的超平面,该平面可以最佳地分割来自不同类别的观察结果.一个在N-1维的超平面可以分割Ñ维的特征空间.例如 ...

  5. 支持向量机SVM原理解析

    支持向量机(SVM) 支持向量机(support vector machine,SVM)使用训练集中的一个子集来表示决策边界,边界用于样本分类,这个子集称作支持向量(support vector). ...

  6. 支持向量机SVM原理及代码推导

    导包并创建数据 #导包 import numpy as np import matplotlib.pyplot as plt from sklearn.svm import SVC from mpl_ ...

  7. c 语言 验证码识别算法,一个简单的文件传输验证码识别c/s实现

    一个简单的文件传输验证码识别c/s实现 大体思路 client通过tcp向server传输一个待识别的验证图片,server端识别后通过tcp回传给client. server端识别验证码采用pyte ...

  8. [机器学习算法]支持向量机SVM原理简介

    一.问题和超平面描述 给定训练集 分类学习最基本的想法就是基于训练集在样本空间中找到一个划分超平面,将不同类别的样本分开,但能将训练样本分开的划分超平面可能有很多,如下图所示: 直观来看,应该去找位于 ...

  9. 机器学习-分类之支持向量机(SVM)原理及实战

    支持向量机(SVM) 简介 支持向量机(Support Vector Machine,SVM),是常见的一种判别方法.在机器学习领域,是一个监督学习模型,通常用来进行模式识别.分类及回归分析.与其他算 ...

最新文章

  1. 13、Power Query-逆透视列的解析(上)
  2. python四舍五入round_四舍五入就用round( )?Python四舍五入的正确打开方式!
  3. java,list遍历赋值
  4. oracle 多个表 join 的先后顺序
  5. 面试必会系列 - 3.1 Redis知识点大汇总(数据类型,内存模型,持久化,缓存击穿,集群,一致性哈希等等)
  6. ruby 集合 分组_将Ruby中两个集合的所有元素结合在一起
  7. 如何移动当前正在使用的文件
  8. 奖金(信息学奥赛一本通-T1352)
  9. LeetCode 39. 组合总和(回溯+剪枝)
  10. Need ffmpeg exe. You can download it by calling: imageio.plugins.ffmpeg.download()
  11. abaqus dat文件 matlab_基于MPCCI的FLUENT与ABAQUS流固耦合分析步骤
  12. 如何运行自动 Mac 清理
  13. H3C 命令行历史记录功能
  14. 亲测沉梦Free免费易支付系统源码支持码支付
  15. LaTex学习-安装
  16. EntityFramework安装失败
  17. 【不务正业】减肥、想瘦,我在csdn学减肥之利用python帮助女友减脂
  18. 【metahumanUE】虚幻引擎面捕动捕调研
  19. 【Ybt OJ】[数学基础 第3章] 同余问题
  20. IMX6ULL 主频和时钟配置

热门文章

  1. 【转】关于 Lua 内存泄漏的检测
  2. 【Spring Boot】1.基础知识
  3. dubbo源码解析(九)远程通信——Transport层
  4. 一个虐你千百遍的问题:“RPC好,还是RESTful好?”
  5. 命令行以及git基础使用
  6. 解锁新姿势 | 如何用配置中心实现全局动态流控?
  7. Memcached - In Action
  8. jQuery源码阅读3— bulidFragment( )
  9. 六:Cocos2d-x的CCLayer
  10. openstack前世今生