机器学习课程-第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的三次多项式来逼近这些样本点.那么首 ...
随机推荐
- Linux下数据库备份恢复过程
1. 远程进入Linux服务器. 2. 一般登录的是root用户, 第一步切换到Oracle用户, 命令: su - oracle 3. 查看服务器上面数据库的监听的状况 lsnrctl 之后输入命令 ...
- 判断Excel版本信息
可以通过获取application对应的Version属性获取当前打开的Excel的版本信息(Application.Version).
- LY tomcat 的闪退问题
http://www.cnblogs.com/1693977889zz/archive/2018/04/06/8726920.html 在bin文件夹里打开此文件setclasspath.bat 举例 ...
- 解决vmware与主机无法连通的问题
我们选择NAT方式,来实现Ubuntu的静态IP地址配置. 打开VMware,在顶部依次选择:编辑 > 虚拟网路编辑器,打开虚拟网路编辑器:去掉VMnet0和VMnet1,只保留VMnet8.然 ...
- delphi dbgrid 修改、更新、删除
https://zhidao.baidu.com/question/580946797.html DELPHI 中,使用 dbgrid显示数据.窗体上放置三个按钮,caption分别为:修改.删除.更 ...
- LODOP、C-LODOP注册号的区别
LODOP是一款免费的web打印控件,预览打印后无水印,是免费的,直接打印会在纸张下方有个水印“本页由XXX试用版输出”,通常商用打印较多,常用直接打印,这种时候可以购买注册号去水印. LODOP注册 ...
- Cenos7 添加service,开机启动
本地有一个 data-service.jar 1. 编写启动脚本 data-service-start [root@iz2ze0fq2isg8vphkpos5sz shell]# more data ...
- MySQL Binlog详解
MySQL Binlog详解 Mysql的binlog日志作用是用来记录mysql内部增删改查等对mysql数据库有更新的内容的记录(对数据库的改动),对数据库的查询select或show等不会被bi ...
- zookeeper 四字命令
zookeeper四字命令 ZooKeeper3.4.6支持某些特定的四字命令字母与其的交互.它们大多是查询命令,用来获取 ZooKeeper 服务的当前状态及相关信息.用户在客户端可以通过 te ...
- day22 collection 模块 (顺便对比queue也学习了一下队列)
collection 定义命名元祖,让元祖的每个元素可以通过类似对象属性的方法用".属性"及其方便的取值. 定义可前后拿取值且可迭代的双端队列 定义有顺序的字典 定义有默认值的字典 ...
