Andrew Ng-ML-第十三章-支持向量机
1.从代价函数谈起SVM

图一
根据将y=0||y=1,得到逻辑回归的代价函数,那么SVM和其代价函数是相似的,只不过是引入了cost0与cost1,并且自变量使用了theta_T*x(i),并且由于SVM的通常表示方法,得到了如下的优化函数假设:

在代价函数项加上了系数C(=1/lamda),也就是C很小时,后边一项的权重较大,SVM的模型,如果theta_T*x>=0,那么模型输出1,否则输出0.
SVM就是将负样本和正样本以最大间距分开。

优化目标如上,当要最小化时,C若设置为非常大时,那么要让第一项为0,当一个样本是yi=1时,就需要θTxi>=1,这个是跟据类斯ReLU函数来决定的;
当一个样本是yi=0时,那么第一项中只有后半部分在,就要求θTxi<=-1这一项就为0了;
那么当第一项为0之后,就是最小化第二项的问题了。min后一项,并且限制条件是右下角(只有满足条件才可以保证前一项为0啊!)
2.SVM为何能选取最大间隔的平面?

图二
向量的内积,对单个向量来说,它的第二范数也就相当于是向量的长度(从原点出发),而内积相当于v在u上的投影长度(有正有负)*u的长度。

图三
当只有两个特征时,theta1和theta2即相当于theta向量的范数的平方,而通过公式(右下角)将优化条件限制为正样本点在分割平面的正侧法线(theta向量方向)的投影长度*theta向量的长度,所以就min||theta||的同时需要保证条件≥1,就需要正样本点在theta方向上的投影值最大。如下图:

图四
//PS不太明白,为什么theta向量是和超平面垂直的?保留问题。
3.高斯核函数原理介绍

图五
给出三个标志点,对任一数据点x,都计算,计算x和三个给定点的相似度,计算相似度的公式图中给出的是高斯核函数,即x与每个点的距离的平方/-2*6^2,这个相似度函数就是核函数。又给出了一个十分传神的例子:

图六
当?≥0时,预测类为正类,那么取theta为以下,根据高斯和函数的性质,如果点x和l距离很近,那么≈1;距离很远,那么结果≈0。通过这样就可以得出一个分界面。这是一个我从前没有了解过的角度!下一节就讲到该如何选取这些landmark。
4.高斯核函数中landmark的选取

图七
这里的landmark选取是通过将训练集中的每个点都作为landmark,共m个,给定一个点,那么就会计算与其他所有点的相似度,其中会有一个是与自身的相似度,那么就=1,这样通过相似度函数,也就是核函数,可以将原本的x(i)映射到一个m+1维的f向量中,并且让f去参与运算,f就是用于描述训练样本的特征向量。

图八
在8中,使用f去计算,并且损失函数中代入f去计算,所以最终优化项中求和是从1求到m,或者说n=m.//不太明白这里相等是什么意思。通常theta^2求和都被写为thetaTtheta. 还有中间加上M的,不太明白是什么意思。
大多数SVM实现的时候,是将thetaTtheta替换为中间*M(M取决于使用的核函数),这是另一种区别于求||theta||^2的距离求解方式。这种方式让SVM运行更加高效,适用于有更大的训练集。主要是为了运算效率。
5.SVM参数中偏差-方差的问题

图九
C也就相当于逻辑回归正则化项系数的倒数,当C很大时,即lamd较小,也就是忽略正则化项,偏差较小,方差较大,(是说系数向量吗?);当C很小时,即lamd较大,即计算正则化项,那么偏差较大(即欠拟合状态)方差较小。而对应高斯核函数中的参数6^2,当其较大时,函数趋于平滑,偏差较大,方差较小;当其较小时,偏差较小,方差较大。//不太明白是什么意思。
6.SVM中的核函数适用情况

图十
使用SVM软件包来找出参数theta,需要指明参数C和使用的核函数:
没有核函数(即线性核函数):适用于当n很大,m很小,即特征很多,但是样本量少的情况。
高斯核函数:还需要指明参数6^2,当n较小,m很大时,即特征较少,样本量大的情况。这两个核函数是最常见的,也是使用最频繁的。
在使用核函数时还需要注意的问题,就是归一化,如下图:

图十一
在使用核函数计算特征向量时,需要对输入向量进行归一化,如当一个特征是房价,另一个是卧室数量,那么v的大小就只受房价控制了。
7.其他的核函数

图十二
多项式核函数,有12中的几种形式,使用它时需要指明常数与幂次。还有更多的,字符串核函数(在做文本分类时,需要计算不同的字符串之间的距离)
8.使用逻辑回归orSVM

图十三
1.当特征数较大时(n>=m,n=10,000,m=10-1000),这时候使用逻辑回归或者没有核函数的SVM,(因为若使用复杂的核函数训练复杂的分类函数,可能会出现过拟合的情况)
2.当n较小时,m是中等的(n=1-1000,m=10-10,000),此时使用高斯核函数的SVM最优。
3.当n较小,m较大时,增加更多的特征,然后使用逻辑回归和没有核函数的SVM。
神经网络能够很好的解决所有的问题,但是训练时间会稍长一点。
Andrew Ng-ML-第十三章-支持向量机的更多相关文章
- Andrew Ng机器学习公开课笔记 -- 支持向量机
网易公开课,第6,7,8课 notes,http://cs229.stanford.edu/notes/cs229-notes3.pdf SVM-支持向量机算法概述, 这篇讲的挺好,可以参考 先继 ...
- Andrew Ng机器学习第五章——多变量线性回归
一.多变量线性回归的技巧之一——特征缩放 1.为什么要使用特征缩放? 特征缩放用来确保特征值在相似的范围之内. 设想这样一种情况(房价预测),两个特征值分别是房子的大小和卧室的数量.每个特征值所处的范 ...
- Andrew Ng机器学习第三章——线性回归回顾
一些概念: 向量:向量在矩阵中表示为只有一列的矩阵 n维向量:N行1列的矩阵. 利用矩阵计算可以快速实现多种结果的计算. 如下图,给出四个房子大小的样本,有四个假设函数对房子价格进行预测.构造下面的矩 ...
- 【原】Coursera—Andrew Ng机器学习—Week 7 习题—支持向量机SVM
[1] [2] Answer: B. 即 x1=3这条垂直线. [3] Answer: B 因为要尽可能小.对B,右侧红叉,有1/2 * 2 = 1 ≥ 1,左侧圆圈,有1/2 * -2 = -1 ...
- Andrew Ng机器学习课程笔记(五)之应用机器学习的建议
Andrew Ng机器学习课程笔记(五)之 应用机器学习的建议 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7368472.h ...
- Andrew Ng机器学习课程笔记(六)之 机器学习系统的设计
Andrew Ng机器学习课程笔记(六)之 机器学习系统的设计 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7392408.h ...
- Andrew Ng机器学习课程笔记(四)之神经网络
Andrew Ng机器学习课程笔记(四)之神经网络 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7365730.html 前言 ...
- Andrew Ng机器学习课程笔记(三)之正则化
Andrew Ng机器学习课程笔记(三)之正则化 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7365475.html 前言 ...
- 斯坦福大学Andrew Ng - 机器学习笔记(5) -- 支持向量机(SVM)
大概用了一个月,Andrew Ng老师的机器学习视频断断续续看完了,以下是个人学习笔记,入门级别,权当总结.笔记难免有遗漏和误解,欢迎讨论. 鸣谢:中国海洋大学黄海广博士提供课程视频和个人笔记,在此深 ...
随机推荐
- 【vue基础学习】vue.js开发环境搭建
1.安装node.js(http://www.runoob.com/nodejs/nodejs-install-setup.html) 2.基于node.js,利用淘宝npm镜像安装相关依赖 在cmd ...
- 【Laravel5.5】 laravel5 数据库配置(MySQL)
1 进入laravel根目录. 在config目录下找到database.php文件. 显而易见这个文件是数据库相关的配置文件. 2 修改 .env 配置完database. ...
- springaop---->springaop的使用(一)
与大多数技术一样, AOP 已经形成了自己的术语.描述切面的常用术语有通知(advice).切点(pointcut)和连接点(join point).从今天开始,我们对spring的切面编程做一个总结 ...
- javah生成jni头文件时报错 Error: cannot access android.support...
javah生成jni头文件时报错: Error: cannot access android.support.v7.app.AppCompatActivity class file for andro ...
- sencha touch 2.3.1 list emptyText不显示
如图所示,有时候没有取到任何的数据. 那么我们就需要显示没有获取到内容这一类提示,显示内容通常通过emptyText这个属性来配置. 但是在sencha touch 2.3.1之中有可能会出问题,所以 ...
- Mysql 的事务隔离级别
SQL标准定义了4类隔离级别,包括了一些具体规则,用来限定事务内外的哪些改变是可见的,哪些是不可见的.低级别的隔离级一般支持更高的并发处理,并拥有更低的系统开销.Read Uncommitted(读取 ...
- C语言程序设计--输入与输出
C语言的输入 所有的输入都是依赖于C语言函数进行的,这个函数是C语言标准库自带的,定义在头文件<stdio.h>里面,所以,要想使用与输入相关的函数,都需要包含这个头文件 #include ...
- Struts2之Action三种接收参数形式与简单的表单验证
有了前几篇的基础,相信大家对于Struts2已经有了一个很不错的认识,本篇我将为大家介绍一些关于Action接收参数的三种形式,以及简单的表单验证实现,下面进入正题,首先我们一起先来了解一下最基本的A ...
- matlab中画系统零极点的方法
写论文的时候由于需要画出系统的零极点图.但是之前不知道怎么用matlab画,今天研究了一下,拿出来和大家共享.所用到的matlab函数为zplane,matlab给出的解释如下: ZPLANE Z-p ...
- 【CF840E】In a Trap 分块
[CF840E]In a Trap 题意:一棵n个点的树,第i个点权值为ai,q次询问,每次给定u,v(u是v的祖先),求对于所有在u-v上的点i,$a_i\ \mathrm{xor}\ dis(i, ...