coursera机器学习-支持向量机SVM
#对coursera上Andrew Ng老师开的机器学习课程的笔记和心得;
#注:此笔记是我自己认为本节课里比较重要、难理解或容易忘记的内容并做了些补充,并非是课堂详细笔记和要点;
#标记为<补充>的是我自己加的内容而非课堂内容,参考文献列于文末。博主能力有限,若有错误,恳请指正;
#---------------------------------------------------------------------------------#
<补充>支持向量机方法的三要素(若不了解机器学习模型、策略、算法的具体意义,可参考机器学习三要素)
基本模型:间隔最大的线性分类器;若用上核技巧,成为实质上的非线性分类器;
学习策略:间隔最大化,可形式化为一个求解凸二次规划的问题;
学习算法:求解凸二次规划的最优化算法,如序列最小最优算法(SMO);
#---------------------------------------------------------------------------------#
由logistic regression引出SVM
logistic function(sigmoid function):g(z) = 1/(1 + e-z),z=ΘTx;
预测函数:
;
logistic函数的图形:
;
当ΘTx 远大于0时,hθ(x)接近于0;
logistic回归的cost function:
;
当y=1时,上式变为-log(1 + e-z),见图形
;
SVM的cost function对logistic回归的cost function做了改变,当y=1时,SVM的cost function记为cost1(θT x),分为两部分(见下图紫线),当z>1时cost1(ΘTx)=0,当z<1时cost1(ΘTx)是条直线。这样做有两个好处,一是计算更快(从计算logistic函数转变为计算直线函数),二是更有利于后来的优化;
;
同理对y=0时做同样的处理,得到cost0(θT x),下图紫线。
;
由此我们得到cost0(θT x)和cost1(ΘTx):
;
由此我们从最小化logistic回归的cost function:
,
得到下式:
;
再令C=1/λ,去掉1/m(m是常数,不影响计算优化结果),得到最终SVM的cost function:
;
#---------------------------------------------------------------------------------#
Large margin intuition
再来看SVM的cost0(θT x)和cost1(ΘTx):
;
注意:SVM wants a bit more than that - doesn't want to *just* get it right, but have the value be quite a bit bigger than zero
- Throws in an extra safety margin factor
对于训练数据,SVM不仅要求是分的对,而且还有额外的间隔条件来保证分的“好”;
;
- The green and magenta lines are functional decision boundaries which could be chosen by logistic regression
- But they probably don't generalize too well
- The black line, by contrast is the the chosen by the SVM because of this safety net imposed by the optimization graphMathematically, that black line has a larger minimum distance (margin) from any of the training examples
- More robust separator
- By separating with the largest margin,you incorporate robustness into your decision making process
<补充>什么是支持向量support vector?
下图中两个支撑着中间的 gap 的超平面,它们到中间的纯红线separating hyper plane 的距离相等,即我们所能得到的最大的 geometrical margin,而“支撑”这两个超平面的必定会有一些点,而这些“支撑”的点便叫做支持向量Support Vector。

C的选择对SVM的影响
C选的合适时,
;
C太大时造成过拟合(紫线),
;
<补充>最大间隔分离超平面存在唯一性:若训练数据线性可分(这是前提),则可将训练数据的样本点完全正确分开的最大间隔分离超平面存在且唯一;
#---------------------------------------------------------------------------------#
Kernels
<补充>当训练数据线性可分或近似线性可分时,通过间隔最大化,学习一个线性分类器;当训练数据线性不可分时,使用核技巧(kernel trick),学习非线性分类器;

<补充>核函数(kernel function)表示将输入从输入空间映射到特征空间得到的特征向量之间的内积。通过使用核函数可以学习非线性支持向量机,等价于隐式地在高维空间的特征空间中学习线性支持向量机;也就是说,在核函数K(x,z)给定的条件下,可以利用解线性分类问题的方法去求解非线性分类问题的支持向量机。学习是隐式的在特征空间进行的,不需要显式地定义特征空间和映射函数。这样的技巧称作核技巧;

几个常用核函数
Gaussian kernel(使用最多的):Need to define σ (σ2);
;
linear kernel:no kernel;
others:Polynomial Kernel,String kernel,Chi-squared kernel...
#---------------------------------------------------------------------------------#
Logistic regression vs. SVM
If n (features) is large vs. m (training set)
- e.g. text classification problem
- Feature vector dimension is 10 000
- Training set is 10 - 1000
Then use logistic regression or SVM with a linear kernel
If n is small and m is intermediate
- n = 1 - 1000
- m = 10 - 10 000
- Gaussian kernel is good
If n is small and m is large
- n = 1 - 1000
- m = 50 000+
- SVM will be slow to run with Gaussian kernel
- In that case
- Manually create or add more features
- Use logistic regression of SVM with a linear kernel
Logistic regression and SVM with a linear kernel are pretty similar
- Do similar things
- Get similar performance
A lot of SVM's power is using diferent kernels to learn complex non-linear functions
For all these regimes a well designed NN should work
- But, for some of these problems a NN might be slower - SVM well implemented would be faster
SVM has a convex optimization problem - so you get a global minimum
#---------------------------------------------------------------------------------#
参考文献
《统计学习方法》,李航著
理解SVM的三层境界-支持向量机通俗导论,July、pluskid著
standford machine learning, by Andrew Ng
coursera机器学习-支持向量机SVM的更多相关文章
- 机器学习——支持向量机SVM
前言 学习本章节前需要先学习: <机器学习--最优化问题:拉格朗日乘子法.KKT条件以及对偶问题> <机器学习--感知机> 1 摘要: 支持向量机(SVM)是一种二类分类模型, ...
- 吴裕雄 python 机器学习——支持向量机SVM非线性分类SVC模型
import numpy as np import matplotlib.pyplot as plt from sklearn import datasets, linear_model,svm fr ...
- 机器学习——支持向量机(SVM)之拉格朗日乘子法,KKT条件以及简化版SMO算法分析
SVM有很多实现,现在只关注其中最流行的一种实现,即序列最小优化(Sequential Minimal Optimization,SMO)算法,然后介绍如何使用一种核函数(kernel)的方式将SVM ...
- 机器学习-支持向量机SVM
简介: 支持向量机(SVM)是一种二分类的监督学习模型,他的基本模型是定义在特征空间上的间隔最大的线性模型.他与感知机的区别是,感知机只要找到可以将数据正确划分的超平面即可,而SVM需要找到间隔最大的 ...
- 机器学习——支持向量机(SVM)
支持向量机原理 支持向量机要解决的问题其实就是寻求最优分类边界.且最大化支持向量间距,用直线或者平面,分隔分隔超平面. 基于核函数的升维变换 通过名为核函数的特征变换,增加新的特征,使得低维度空间中的 ...
- 机器学习支持向量机SVM笔记
SVM简述: SVM是一个线性二类分类器,当然通过选取特定的核函数也可也建立一个非线性支持向量机.SVM也可以做一些回归任务,但是它预测的时效性不是太长,他通过训练只能预测比较近的数据变化,至于再往后 ...
- 机器学习——支持向量机(SVM)之核函数(kernel)
对于线性不可分的数据集,可以利用核函数(kernel)将数据转换成易于分类器理解的形式. 如下图,如果在x轴和y轴构成的坐标系中插入直线进行分类的话, 不能得到理想的结果,或许我们可以对圆中的数据进行 ...
- 机器学习——支持向量机(SVM)之Platt SMO算法
Platt SMO算法是通过一个外循环来选择第一个alpha值的,并且其选择过程会在两种方式之间进行交替: 一种方式是在所有数据集上进行单遍扫描,另一种方式则是在非边界alpha中实现单遍扫描. 所谓 ...
- 机器学习常见面试题—支持向量机SVM
前言 总结了2017年找实习时,在头条.腾讯.小米.搜狐.阿里等公司常见的机器学习面试题. 支持向量机SVM 关于min和max交换位置满足的 d* <= p* 的条件并不是KKT条件 Ans: ...
随机推荐
- linux命令笔记
3步实现ssh login不用密码: 1 ssh-keygen (Create public and private keys) 2 ssh-copy-id -i ~/.ssh/id_rsa.pub ...
- MySQL Cursor
MySQL Cursor Summary: in this tutorial, you will learn how to use MySQL cursor in stored procedures ...
- hhvm的正确安装姿势 http://dl.hhvm.com 镜像
hhvm是php的第三方运行环境,由facebook出品,基于该运行环境,它还提供了一种编程语言hack - PHP的静态类型版. 折腾了一天后,包括各种编译.配置.FQ,后面终于忍不住搜了一下 ht ...
- 阿里社招B2B
岗位描述:1. 按USE CASE进行业务需求分析和软件概要设计2. 进行软件详细设计和编码实现,确保性能.质量和安全3. 维护和升级现有软件产品,快速定位并修复现有软件缺陷岗位要求:1. 精通Web ...
- 【FOL】第三周
这周还是在改自己的这个框架,被多线程折腾了两天,最终无奈放弃在游戏启动时调用引擎进行图片相关资源的初始化,当然进展还是不错的. 嗯,下面还是以流水的方式继续记录一下本周完成的工作: 1.调通了客户端与 ...
- GJM : Python简单爬虫入门(二) [转载]
感谢您的阅读.喜欢的.有用的就请大哥大嫂们高抬贵手"推荐一下"吧!你的精神支持是博主强大的写作动力以及转载收藏动力.欢迎转载! 版权声明:本文原创发表于 [请点击连接前往] ,未经 ...
- jQuery Wookmark Load 瀑布流布局实例演示
瀑布流布局非常适合大量图片的展示,一改过去裁剪图片尺寸统一的排版,每张图片都能完全展示,并错落有致,让人眼前一亮. 版本: jQuery v1.4.3+ jQuery Wookmark Load v1 ...
- Bootstrap源码分析之transition、affix
一.Transition(过滤) 作为一个基础支持的组件,被其他组件多次引用.实现根据浏览器支持transition的能力,然后绑定动画的结束事件:首先:创建一个Element:然后:迭代查看此元素支 ...
- HTML(.js) – 最简单的方式操作 DOM 的 JS 库
HTML(.js) 是一个轻量的(压缩后~2kb) JavaScript 库,简化了与 DOM 交互的方法. 这个 JavaScript 库的方法可读性很好,并具有搜索和遍历 DOM 的方法.相比 j ...
- 移动 Web 开发必备!时尚的 Off Canvas 导航
这里向大家分享一组创新的 Off Canvas 导航效果.Off Canvas 导航在一些移动应用程序中被广泛使用.当你点击汉堡按钮(一般是三条横线组成)时,在左侧或者右侧拉出一个菜单,这样可以充分利 ...