机器学习课程-第7周-支持向量机(Support Vector Machines)
1. 优化目标
在监督学习中,许多学习算法的性能都非常类似,因此,重要的不是你该选择使用学习算法A还是学习算法B,而更重要的是,应用这些算法时,所创建的大量数据在应用这些算法时,表现情况通常依赖于你的水平。比如:你为学习算法所设计的 特征量的选择,以及如何选择正则化参数,诸如此类的事。还有一个更加强大的算法广泛的应用于工业界和学术界,它被称为支持向量机(Support Vector Machine)。与逻辑回归和神经网络相比,支持向量机,或者简称SVM,在学习复杂的非线性方程时提供了一种更为清晰,更加强大的方式。
从逻辑回归开始展示我们如何一点一点修改来得到本质上的支持向量机。
2. 支持向量机
最后有别于逻辑回归输出的概率。在这里,我们的代价函数,当最小化代价函数,获得参数时,支持向量机所做的是它来直接预测 y 的值等于1,还是等于0。因此,这个假设函数会预测1。当大于或者等于0时,或者等于0时,所以学习参数θ 就是支持向量机假设函数的形式。那么,这就是支持向量机数学上的定义。
3. 大边界的直观理解
人们有时将支持向量机看作是 大间距分类器。在这一部分,我将介绍其中的含义,这有助于我们直观理解SVM模型的假设是什么样的。
支持向量机的要求更高,不仅仅要能正确分开输入的样本,即不仅仅要求>0,我们需要的是比0值大很多,比如大于等于1,我也想这个比0小很多,比如我希望它小于等于-1,这就相当于在支持向量机中嵌入了一个 额外的安全因子,或者说安全的间距因子。
我们将这个常数C设置成一个非常大的值。比如我们假设C的值为100000或者其它非常大的数,然后来观察支持向量机会给出什么结果?
3.1 SVM决策边界(线性分类器)
支持向量机将会选择这个黑色的决策边界,相较于之前我用粉色或者绿色画的决策界。这条黑色的看起来好得多,黑线看起来是更稳健的决策界。在分离正样本和负样本上它显得的更好。数学上来讲,这是什么意思呢?这条 黑线有更大的距离,这个距离叫做间距(margin)。
当画出这两条额外的蓝线,我们看到:黑色的决策界和训练样本之间有更大的最短距离。然而粉线和蓝线离训练样本就非常近,在分离样本的时候就会比黑线表现差。因此,这个距离叫:做支持向量机的间距,而这是支持向量机具有鲁棒性的原因,因为它努力用一个最大间距来分离样本。因此支持向量机有时被称为大间距分类器,而这其实是求解上一节优化问题的结果。
添加异常点
如果你将C设置的不要太大,则你最终会得到这条黑线。
应用支持向量机的时候,当C不是非常非常大的时候,它可以忽略掉一些异常点的影响,得到更好的决策界。甚至当你的数据不是线性可分的时候,支持向量机也可以给出好的结果。
回顾 ,因此:
C 较大时,相当于 λ 较小,可能会导致过拟合,高方差。
C 较小时,相当于 λ 较大,可能会导致低拟合,高偏差。
4. 大边界分类背后的数学
这就是我们先前给出的支持向量机模型中的目标函数。为了讲解方便,我做一点简化,仅仅是为了让目标函数更容易被分析。
因此在我们接下来的推导中去掉不会有影响。这意味着我们的目标函数:
因此支持向量机做的全部事情,就是极小化参数向量θ**范数的平方,或者说长度的平方**。
支持向量机最终会找到 大间距分类器的原因:它试图极大化这些的范数,它们是 训练样本到决策边界的距离。
最后一点,我们的推导自始至终使用了这个简化假设,就是参数。
这个的作用是: :我们让决策界通过原点;
如果你令 不是0:你希望决策界不通过原点。
即便 不等于0,支持向量机要做的事情都是:优化这个目标函数对应着C值非常大的情况,但是可以说明的是,即便 不等于0,支持向量机仍然会找到正样本和负样本之间的大间距分隔。
5. 核函数1(思想)
5.1 高级数的多项式模型
5.2 高斯核函数
5.21 地标
地标的作用:
因此,这些特征变量的作用是度量x到标记l的相似度。
如果训练样本 x 与 地标 l 之间的 距离,近似0,则,新特征 f,近似 1 【 e^(-0) 】
如果训练样本 x 与 地标 l 之间的 距离,较远, 则,新特征 f,近似 0 【 e^(- 一个较大数) 】
5.22 举例
注:σ越大,速率越慢;σ越小,速率越快。
5.23 通过标记点 和 相似函数(similarity)来定义新的特征变量,从而训练复杂的非线性分类器
这样,图中红色的封闭曲线所表示的范围,便是我们 依据一个单一的训练样本和我们选取的地标所得出的判定边界。
在预测时,我们采用的特征不是训练样本本身的特征,而是通过核函数计算出的新特征f1, f2, f3
6. 核函数2(细节)☆☆☆☆☆
6.1 如何选择地标?
我们通常是根据 训练集的数量 选择 地标的数量,即如果训练集中有m个样本,则我们选取m个地标。并且令:
这样做的好处在于:现在我们得到的新特征(特征函数):建立在 原有特征(每一个样本) 与 样本集中所有其他特征(样本) 之间距离 的基础之上的,即:
6.2 下面我们将核函数运用到支持向量机中
修改我们的支持向量机假设为
给定 x;
计算新特征 f(编写核函数);(见6.1)
- (θ0*f0 + θ1*f1+......θm*fm)
修改相应代价函数(最小化代价,计算出θ)【注:通常不用自己最小化支持向量机的代价函数】;
5. 正则化项进行些微调整
【M是矩阵(依赖你采用的核函数)。目的:为了简化计算(适应超大数据集)】
注意:
我们不介绍最小化支持向量机的代价函数的方法,你可以使用现有的软件包(如liblinear,libsvm等)。
在使用这些软件包最小化我们的代价函数之前,我们通常需要编写核函数,并且【如果我们使用高斯核函数,那么在使用之前进行 特征缩放 是非常必要的】
不使用核函数又称为线性核函数(linear kernel),当我们不采用非常复杂的函数,或者我们的 训练集特征非常多 而 样本非常少 的时候,可以采用这种不带核函数的支持向量机。
如何选择参数:
下面是支持向量机的两个参数C和σ的影响:(选择在 cross-validation 数据集上表现最好的参数)
C = 1 / λ
C 较大时,相当于 λ 较小,可能会导致 过拟合,高方差;
C 较小时,相当于 λ 较大,可能会导致 低拟合,高偏差;(会忽略异常点)
σ 较大时,可能会导致 低方差,高偏差;(速率慢)
σ 较小时,可能会导致 低偏差,高方差。(速率快)
7. 运行 支持向量机
选择参数 C 【运用库,如liblinear、libsvm等】
选择 核函数 或 要使用的 相似度函数 【注:线性核函数是未使用核函数】
线性核函数(训练集特征 非常多 而 样本 非常少)
高斯核函数 (原来的特征变量: x是 n × m 维,n(特征数)特别小;m(样本数)大小中等;需要拟合更复杂的非线性判定边界)
(计算核函数的特定特征;将自动生成所有特征变量【x-->(f1,f2.....fm)】)
大小很不一样的特征变量使用前:进行归一化
- 其他核函数
多项式核函数(Polynomial Kernel)(内积值永不是负数)
字符串核函数(String kernel)、卡方核函数( chi-square kernel)、直方图交集核函数(histogram intersection kernel)
- 多分类问题
如果一共有个类,则我们需要 k 个模型,以及个 k 参数向量。需要:训练 k 个支持向量机 来解决多类分类问题。
但是大多数支持向量机软件包都有内置的多类分类功能,我们只要直接使用即可。
8. 选择逻辑回归还是支持向量机
(2) 如果 n较小,而且m大小中等,例如n在1-1000之间, 而m在10- 10000之间, 使用高斯核函数的支持向量机。
(3) 如果 n较小,而m较大, 例如n在1-1000之间, 而m大于50000 , 则使用支持向量机会非常慢。解决方案:创造、增加更多的特征, 然后使用逻辑回归 或 不带核函数的支持向量机。
值得一提的是,神经网络在以上三种情况下都可能会有较好的表现,但是训练神经网络可能非常慢, 选择支持向量机的原因:其 代价函数是凸函数,不存在局部最小值,
注:算法确实重要,但是通常更重要的是:
你有多少数据
你有多熟练
是否擅长做 误差分析 和 调试学习算法
如何设计新的特征变量
找出应该输入给学习算法的其它特征变量等方面
机器学习课程-第7周-支持向量机(Support Vector Machines)的更多相关文章
- [C7] 支持向量机(Support Vector Machines) (待整理)
支持向量机(Support Vector Machines) 优化目标(Optimization Objective) 到目前为止,你已经见过一系列不同的学习算法.在监督学习中,许多学习算法的性能都非 ...
- 斯坦福第十二课:支持向量机(Support Vector Machines)
12.1 优化目标 12.2 大边界的直观理解 12.3 数学背后的大边界分类(可选) 12.4 核函数 1 12.5 核函数 2 12.6 使用支持向量机 12.1 优化目标 到目前为 ...
- Machine Learning - 第7周(Support Vector Machines)
SVMs are considered by many to be the most powerful 'black box' learning algorithm, and by posing构建 ...
- 十二、支持向量机(Support Vector Machines)
12.1 优化目标 参考视频: 12 - 1 - Optimization Objective (15 min).mkv 到目前为止,你已经见过一系列不同的学习算法.在监督学习中,许多学习算法的性能都 ...
- Ng第十二课:支持向量机(Support Vector Machines)(三)
11 SMO优化算法(Sequential minimal optimization) SMO算法由Microsoft Research的John C. Platt在1998年提出,并成为最快的二次规 ...
- stanford coursera 机器学习编程作业 exercise 6(支持向量机-support vector machines)
在本练习中,先介绍了SVM的一些基本知识,再使用SVM(支持向量机 )实现一个垃圾邮件分类器. 在开始之前,先简单介绍一下SVM ①从逻辑回归的 cost function 到SVM 的 cost f ...
- 机器学习(八)--------支持向量机 (Support Vector Machines)
与逻辑回归和神经网络相比,支持向量机或者简称 SVM,更为强大. 人们有时将支持向量机看作是大间距分类器. 这是我的支持向量机模型代价函数 这样将得到一个更好的决策边界 理解支持向量机模型的做法,即努 ...
- 斯坦福机器学习视频笔记 Week7 支持向量机 Support Vector Machines
SVM被许多人认为是最强大的“黑箱”学习算法,并通过提出一个巧妙选择的优化目标,今天最广泛使用的学习算法之一. Optimization Objective 根据Logistic Regression ...
- Ng第十二课:支持向量机(Support Vector Machines)(二)
7 核函数(Kernels) 最初在“线性回归”中提出的问题,特征是房子的面积x,结果y是房子的价格.假设从样本点的分布中看到x和y符合3次曲线,那么我们希望使用x的三次多项式来逼近这些样本点.那么首 ...
随机推荐
- 普通PC安装ESXi5.5以及以上的方法
原贴内容 With ESXi 5, ESX no longer uses MBR for boot, it has gone to GPT-based partitions instead. W ...
- Cmder 常用配置
windows 系统的 cmd 命令窗口不是很好用,可以试试 Cmder 工具包. 1.在运行框中快速启动 Cmder 将 cmder.exe 文件所在目录加载环境变量 PATH 中. 2.把 cms ...
- Angular 添加路由
var app=angular.module('kaifanla',['ng','ngRoute']);app.config(function($routeProvider){ //添加路由 $rou ...
- python decimal.quantize()参数rounding的各参数解释与行为
我最开始其实是由于疑惑ROUND_FLOOR和 ROUND_DOWN的表现区别才看了一波文档,但是感觉拉出一票以前没有留意过的东西. 贴一个decimal文档里面的解释: ROUND_CEILING ...
- 微信小程序开发4之form表单与弹出层
第一 表单的提交和重置 第二 radio组件 第三 checkbox组件 第四 loading组件 第五 toast组件 第六 modal组件
- oracle小知识点
一 . procedure和function: procedure和function在语法上几乎完全一样,使用上却有小小的差别, procedure可以单独的调用 在命令行直接exec pro_xxx ...
- cxf 方法添加注解
/** * 登录 * @param uid * @param password * @return */ @POST @Path(value = "/login") public ...
- Hadoop源码分析之FileSystem抽象文件系统
Hadopo提供了一个抽象的文件系统模型FileSystem,HDFS是其中的一个实现. FileSystem是Hadoop中所有文件系统的抽象父类,它定义了文件系统所具有的基本特征和基本操作. Fi ...
- BZOJ5101[POI2018]Powódź——并查集
题目描述 在地面上有一个水箱,它的俯视图被划分成了n行m列个方格,相邻两个方格之间有一堵厚度可以忽略不计的墙,水 箱与外界之间有一堵高度无穷大的墙,因此水不可能漏到外面.已知水箱内每个格子的高度都是[ ...
- BZOJ2716 [Violet]天使玩偶(cdq分治+树状数组)
非常裸的KD-tree.然而我没学啊. 考虑如何离线求一个点在平面中的曼哈顿最近点. 绝对值显得有点麻烦,于是把绝对值拆开分情况讨论一波.对于横坐标小于该点的,记录对于纵坐标的前缀x+y最大值和后缀x ...