前言:
这是一篇记录小刘学习机器学习过程的随笔。

正文:
支持向量机(SVM)是一组用于分类, 回归和异常值检测的监督学习方法。
在分类问题中,SVM就是要找到一个同时离各个类别尽可能远的决策边界即最大化margin(margin为图中2虚线的距离)。这种尽可能远的思想能够提高模型的泛化能力。


虚线上的点是支持向量,实线是决策边界。此图为线性可分的情况。

求margin的最大值就相当于求d(支持向量到决策边界的距离)的最大值。
决策边界为wx-b=0
任意点到边界的距离为
为了方便计算,我们将2个类分别称为1和-1。那么可以得到约束条件


因为是常数所有化简得
为方便表达写为,注意此非彼
进一步化简得
由于支持向量到边界的距离就是1,所有最大化问题转换为min||w||,为方便后面的计算改写成
最终我们得到一个带约束条件的优化问题

那么如何求解带约束条件的优化问题呢?
这里我们应用拉格朗日对偶性,由对偶问题求原问题。

解对偶问题
求偏导:


代入得:

由数值计算得到
再由对偶问题的解得到原问题的解:

至此,我们得到了在线性可分的情况下决策边界的表达式。

但是在实际生活中很多情况是线性不可分的,如何解决非线性问题呢?这里我们引入升维的概念。

很明显,上图中我们无法找出一个线性决策边界。这个时候我们需要引入第三个维度,即z = x² + y²

这样我们就能用一条直线来做边界了

然而这种映射到高维度的方法会极大的增加计算量。为了减少工作量我们引入核函数的技巧。
核函数是二元函数,输入是变换之前的两个向量,其输出与两个向量变换之后的内积相等。这样的“巧合”让我们可以忽略了映射而通过核函数直接计算映射后的值。
也就是说将问题转换为我们就不用在高维空间计算了。
一般用到的核函数如下:
线性核函数:
多项式核函数:
径像基核函数/高斯核函数:
拉普拉斯核函数:
sigmod核函数:
至于如何选择核函数,一般来说,线性情况就用线性核,非线性的时候用径像基核就可以了。

结语:
这是小刘的学习心得,如有错误欢迎大家指正:)

彩图来源:https://monkeylearn.com/blog/introduction-to-support-vector-machines-svm/

小刘的机器学习---SVM的更多相关文章

  1. 机器学习——SVM详解(标准形式,对偶形式,Kernel及Soft Margin)

    (写在前面:机器学习入行快2年了,多多少少用过一些算法,但由于敲公式太过浪费时间,所以一直搁置了开一个机器学习系列的博客.但是现在毕竟是电子化的时代,也不可能每时每刻都带着自己的记事本.如果可以掏出手 ...

  2. 文本分类学习 (五) 机器学习SVM的前奏-特征提取(卡方检验续集)

    前言: 上一篇比较详细的介绍了卡方检验和卡方分布.这篇我们就实际操刀,找到一些训练集,正所谓纸上得来终觉浅,绝知此事要躬行.然而我在躬行的时候,发现了卡方检验对于文本分类来说应该把公式再变形一般,那样 ...

  3. 小刘的深度学习---CNN

    前言: 前段时间我在树莓派上通过KNN,SVM等机器学习的算法实现了门派识别的项目,所用到的数据集是经典的MNIST.可能是因为手写数字与印刷体存在一些区别,识别率并是很不高.基于这样的情况,我打算在 ...

  4. [机器学习] SVM——Hinge与Kernel

    Support Vector Machine [学习.内化]--讲出来才是真的听懂了,分享在这里也给后面的小伙伴点帮助. learn from: https://www.youtube.com/wat ...

  5. 机器学习--------SVM

    #SVM的使用 (结合具体代码说明,代码参考邹博老师的代码) 1.使用numpy中的loadtxt读入数据文件 data:鸢尾花数据 5.1,3.5,1.4,0.2,Iris-setosa 4.9,3 ...

  6. 程序员训练机器学习 SVM算法分享

    http://www.csdn.net/article/2012-12-28/2813275-Support-Vector-Machine 摘要:支持向量机(SVM)已经成为一种非常受欢迎的算法.本文 ...

  7. 小刘的深度学习---Faster RCNN

    前言: 对于目标检测Faster RCNN有着广泛的应用,其性能更是远超传统的方法. 正文: R-CNN(第一个成功在目标检测上应用的深度学习的算法) 从名字上可以看出R-CNN是 Faster RC ...

  8. [机器学习]SVM原理

    SVM是机器学习中神一般的存在,虽然自深度学习以来有被拉下神坛的趋势,但不得不说SVM在这个领域有着举足轻重的地位.本文从Hard SVM 到 Dual Hard SVM再引进Kernel Trick ...

  9. 机器学习——SVM

    整理自: https://blog.csdn.net/woaidapaopao/article/details/77806273?locationnum=9&fps=1 带核的SVM为什么能分 ...

随机推荐

  1. Java 重写 hashCode() 和 equals() 方法

    1. hashCode 1.1 基本概念 hashCode 是 JDK 根据对象的地址算出来的一个 int 数字(对象的哈希码值),代表了该对象再内存中的存储位置. hashCode() 方法是超级类 ...

  2. Rx编程的第一步是将native对象转换为monad对象

    Rx编程的第一步是将native对象转换为monad对象 将基础类型转换为高阶类型,以便使用函数式编程的特性.

  3. android 7.0拍照问题file:///storage/emulated/0/photo.jpeg exposed beyond app through ClipData.Item.getUri

    Android7.0调用相机时出现新的错误: android.os.FileUriExposedException: file:///storage/emulated/0/photo.jpeg exp ...

  4. auto关键字使用

    auto类型变量--根据初始值推断真实的数据类型. 有些时候并不能很确定一个变量应该具备的数据类型,例如:将一个复杂表达式的值赋给某个变量,此时并不能很明显的确定这个值所具备的数据类型.此时auto关 ...

  5. SNAT和DNAT

    1.SNAT iptables防火墙 Centos6.6 64位 iptables 内网:eth0 172.16.4.1 外网:eth 112.112.112.112/24 当有用户访问公网时,修改用 ...

  6. day07--字符编码、文件处理

    今日内容: 字符编码 文件处理 字符编码: 把字符编码成二进制 各个国家拥有各自的字符编码,这样会导致交流产生问题.所以后面推出了内存使用unicode,硬盘使用UTF-8这个模式 unicode有两 ...

  7. jqgrid 设置行编辑为本地端编辑状态

    有时,我们需要在jqgrid表格中做编辑操作,而jqgrid默认是启动了行保存连接到服务器更新.此时,如果没有指定editurl的有效url值时会报错 有时,我们需要将编辑完的表格数据一次性提交保存( ...

  8. win7中mysql安装

    最近需要用到MySQL,从官网上下载了一个安装文件,但是安装时一直弹出如下提示信息: Configuration of MySQL Server 5.7 is taking longer than e ...

  9. 20155317王新玮《网络对抗》Exp2 后门原理与实践

    20155317王新玮<网络对抗>Exp2 后门原理与实践 一.实验内容 (1)使用netcat获取主机操作Shell,cron启动 (2)使用socat获取主机操作Shell, 任务计划 ...

  10. Pick定理、欧拉公式和圆的反演

    Pick定理.欧拉公式和圆的反演 Tags:高级算法 Pick定理 内容 定点都是整点的多边形,内部整点数为\(innod\),边界整点数\(ednod\),\(S=innod+\frac{ednod ...