虽然已经学习了神经网络和深度学习并在几个项目之中加以运用了,但在斯坦福公开课上听吴恩达老师说他(在当时)更喜欢使用SVM,而很少使用神经网络来解决问题,因此来学习一下SVM的种种。

先解释一些概念吧:

矩阵二范数:

||w|| = sqrt(w'w)

跟室友探讨了一下,觉得对于n维列向量来说,二范数的意义是它到零点的距离。

支持向量机——即最优间隔分类器:

最优间隔分类器的最终目标就是让边界与数据点之间的间隔(距离)最大,间隔的标度有两种:

1. 函数间隔  γ^(i) = y(i) * (w'x + b)      ,  γ^ = min(γ^(i))

2. 几何间隔  γ (i) = y(i) * (w'x/||w|| + b/||w||)        ,  γ  = min(γ (i))

如果给定限定条件||w|| == 1,则两种间隔等价。

对于m个样本计算出的m个单点间隔,取最小值做为间隔,即使间隔的最小值最大。

但是, 这样的描述并不能将问题转换为一个凸问题,不好优化求解,因此转换:

固定γ^ = 1,即要求满足 y(i) * (w'x + b) == 1 且同时使得 ||w|| 的值最小的问题,像不像线性规划?

将问题转化之后,我们便可以使用拉格朗日乘子法来求解这类带约束的规划问题。(细节略去)

以上的方法是针对可以线性分成两类的数据来说的,但如果数据不能完美的分成两类,或是无法采用线性方式来分割改怎么办呢?

这就要引入卷积核Kernel的概念。

卷积核:K(x, z) = <Φ(x), Φ(z)> , 将<x, z>转换为<Φ(x), Φ(z)>,其中Φ(x)式x向量在高维的投影 对应的函数。

简单来说,通过引入卷积核,将线性SVM中的内积运算( <x, z> )全都替换成 K(x, z) 的卷积核运算( <Φ(x), Φ(z)> ),便可以将向量投影到更高维度,类似于把空间扭曲、折叠,这样,在高维度中,便能够找到线性的分类方法了。

常用的卷积核:

高斯核    K(x, z) = -||x-z||^2 / (2σ^2)     维度:无限维

多项式核      K(x, z) = (x'z + c) ^ d             维度:C(N+d, d)

等等。

在对SVM做了以上改进之后,我们便要回归本源——如何求解那个类似线性规划的问题?

使用已知条件以及KKT条件等,我们可以采用坐标上升法的变种, SMO,来更快速的求得最后解——每次固定n-2个参数,只调整其中两个,发现是一个二次函数,直接使用求根公式即可,经过多次迭代,所有参数都会接近极值。在此问题中,这种方法比梯度下降法或是牛顿法来的更快。

软间隔SVM:减少特殊坏点对于分类结果的影响

支持向量机SVM 初识的更多相关文章

  1. 【IUML】支持向量机SVM

    从1995年Vapnik等人提出一种机器学习的新方法支持向量机(SVM)之后,支持向量机成为继人工神经网络之后又一研究热点,国内外研究都很多.支持向量机方法是建立在统计学习理论的VC维理论和结构风险最 ...

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

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

  3. 以图像分割为例浅谈支持向量机(SVM)

    1. 什么是支持向量机?   在机器学习中,分类问题是一种非常常见也非常重要的问题.常见的分类方法有决策树.聚类方法.贝叶斯分类等等.举一个常见的分类的例子.如下图1所示,在平面直角坐标系中,有一些点 ...

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

    在上两节中,我们讲解了机器学习的决策树和k-近邻算法,本节我们讲解另外一种分类算法:支持向量机SVM. SVM是迄今为止最好使用的分类器之一,它可以不加修改即可直接使用,从而得到低错误率的结果. [案 ...

  5. 机器学习之支持向量机—SVM原理代码实现

    支持向量机—SVM原理代码实现 本文系作者原创,转载请注明出处:https://www.cnblogs.com/further-further-further/p/9596898.html 1. 解决 ...

  6. 支持向量机SVM——专治线性不可分

    SVM原理 线性可分与线性不可分 线性可分 线性不可分-------[无论用哪条直线都无法将女生情绪正确分类] SVM的核函数可以帮助我们: 假设‘开心’是轻飘飘的,“不开心”是沉重的 将三维视图还原 ...

  7. 一步步教你轻松学支持向量机SVM算法之案例篇2

    一步步教你轻松学支持向量机SVM算法之案例篇2 (白宁超 2018年10月22日10:09:07) 摘要:支持向量机即SVM(Support Vector Machine) ,是一种监督学习算法,属于 ...

  8. 一步步教你轻松学支持向量机SVM算法之理论篇1

    一步步教你轻松学支持向量机SVM算法之理论篇1 (白宁超 2018年10月22日10:03:35) 摘要:支持向量机即SVM(Support Vector Machine) ,是一种监督学习算法,属于 ...

  9. OpenCV 学习笔记 07 支持向量机SVM(flag)

    1 SVM 基本概念 本章节主要从文字层面来概括性理解 SVM. 支持向量机(support vector machine,简SVM)是二类分类模型. 在机器学习中,它在分类与回归分析中分析数据的监督 ...

随机推荐

  1. Oracle 11g R2 RAC with ASM存储迁移--Rman copy&ASM Rebalance(一)

    ASM GROUP-Rman copy迁移 0x00--环境介绍 VMware版本:VMware12pro 主机操作系统:RHEL6.5_64 共享存储使用VMWARE创建共享磁盘文件 数据库版本:O ...

  2. 【js】Redux基本原理和使用

    Redux不是说任何的应用都要用到它,如果遇到了react解决不了得问题,可以考虑使用它. 例如: 用户的使用方式复杂不同身份的用户有不同的使用方式(比如普通用户和管理员)多个用户之间可以协作与服务器 ...

  3. 19-3-8Python中编码的进阶、文件操作初识、深浅copy

    编码的进阶 ASCII:英文字母,数字,特殊符号,——>  二进制的对应关系 Str: 1个字符——> 1个字节 Unicode:万国码:世界上所有的文字与二进制的对应关系 1个字符——& ...

  4. TopJUI Combobox 联动

    这里给联动进行一个简单定义:因Combobox选择或输入的值发生改变时对自身或者其它组件产生影响称为联动.(注:editable确定是否可以手动输入) 有两种实现方法: 一.自己写对应的onChang ...

  5. python里的默认参数

    def extendList(val, test=[]): test.append(val) return test list1 = extendList(10) list2 = extendList ...

  6. vux使用过程中遇到的问题

    1.使用confirm.prompt组件时,ios下点击输入框很难获得焦点 解决思路:使用confirm.show方法,自定义content内容,show方法里面设置input的focus方法 let ...

  7. Delphi写的DLL,OCX中多线程一个同步问题

    Delphi写的DLL,OCX中如果使用了TThread.Synchronze(Proc),可能导致线程死锁,原因是无法唤醒EXE中主线程, Synchronze并不会进入EXE主线程消息队列. 下面 ...

  8. Jlink-10 pin 的定义(stm32使用)官方定义

    因为在网上找了好久才找到正确的接法,所以专门记载了下来,因为stm32芯片这几个功能引脚会内置上拉电阻,所以不需要再外接电阻了.

  9. pow函数(数学次方)在c语言的用法,两种编写方法实例( 计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值)

    关于c语言里面pow函数,下面借鉴了某位博主的一篇文章: 头文件:#include <math.h> pow() 函数用来求 x 的 y 次幂(次方),x.y及函数值都是double型 , ...

  10. HyperLedger Fabric 1.4 区块链工作过程(2.3)

    区块链的工作过程分交易产生.交易广播.节点计算.获取记账权.记账权广播.接收区块.验证区块和完成记账七个过程. 1) 交易产生:用户向区块链发了一笔交易信息,将产生交易:2) 交易广播:当一笔新交易产 ...