虽然已经学习了神经网络和深度学习并在几个项目之中加以运用了,但在斯坦福公开课上听吴恩达老师说他(在当时)更喜欢使用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:减少特殊坏点对于分类结果的影响

最新文章

  1. CSS颜色代码 颜色值 颜色名字大全(转载)
  2. Python开发之【用户登录锁定】
  3. openstack 基本配置
  4. Atom编辑器入门到精通(五) Git支持
  5. sql 删除两条完全相同的记录
  6. PF_RING packet overwrites
  7. 谨记给UpdatePanel中动态添加的控件赋ID
  8. Caused by: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Truncated incorrect DOUBLE value: &amp;#39;L
  9. 【spoj8222】 Substrings
  10. Jenkins获取git tags代码
  11. Linux环境变量配置的三个方法--/etc/profile,~/.bashrc,shell
  12. MYSQL如何通过一张表更新另外一张表?
  13. Python基础7:字符串方法
  14. Vue(小案例_vue+axios仿手机app)_go实现退回上一个路由
  15. Gitbook 简介 使用总结 MD
  16. laravel config 配置无效
  17. vs2010编译错误(报错:LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏)
  18. node服务开发环境判断和启动端口指定---process.env.NODE_ENV
  19. Ulua_toLua_基本案例(二)_ScriptsFromFile
  20. MySQL Crash Course #16# Chapter 24. Using Cursors + mysql 循环

热门文章

  1. Observer(观察者)模式
  2. Hadoop相关笔记
  3. python2与python3的input函数的区别
  4. Windows常用shell命令
  5. [原]nginx 一下快一下慢的问题
  6. 一图看懂hadoop Yarn工作原理
  7. Error: JAVA_HOME is incorrectly set. Please update F:\hadoop\conf\hadoop-env.cmd解决方法
  8. 移植ARM linux下远程连接工具dropbear
  9. C语言编程学习不难学,是你没找对方法!
  10. browser storage limation