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-第十三章-支持向量机的更多相关文章

  1. Andrew Ng机器学习公开课笔记 -- 支持向量机

    网易公开课,第6,7,8课 notes,http://cs229.stanford.edu/notes/cs229-notes3.pdf SVM-支持向量机算法概述, 这篇讲的挺好,可以参考   先继 ...

  2. Andrew Ng机器学习第五章——多变量线性回归

    一.多变量线性回归的技巧之一——特征缩放 1.为什么要使用特征缩放? 特征缩放用来确保特征值在相似的范围之内. 设想这样一种情况(房价预测),两个特征值分别是房子的大小和卧室的数量.每个特征值所处的范 ...

  3. Andrew Ng机器学习第三章——线性回归回顾

    一些概念: 向量:向量在矩阵中表示为只有一列的矩阵 n维向量:N行1列的矩阵. 利用矩阵计算可以快速实现多种结果的计算. 如下图,给出四个房子大小的样本,有四个假设函数对房子价格进行预测.构造下面的矩 ...

  4. 【原】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 ...

  5. Andrew Ng机器学习课程笔记(五)之应用机器学习的建议

    Andrew Ng机器学习课程笔记(五)之 应用机器学习的建议 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7368472.h ...

  6. Andrew Ng机器学习课程笔记(六)之 机器学习系统的设计

    Andrew Ng机器学习课程笔记(六)之 机器学习系统的设计 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7392408.h ...

  7. Andrew Ng机器学习课程笔记(四)之神经网络

    Andrew Ng机器学习课程笔记(四)之神经网络 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7365730.html 前言 ...

  8. Andrew Ng机器学习课程笔记(三)之正则化

    Andrew Ng机器学习课程笔记(三)之正则化 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7365475.html 前言 ...

  9. 斯坦福大学Andrew Ng - 机器学习笔记(5) -- 支持向量机(SVM)

    大概用了一个月,Andrew Ng老师的机器学习视频断断续续看完了,以下是个人学习笔记,入门级别,权当总结.笔记难免有遗漏和误解,欢迎讨论. 鸣谢:中国海洋大学黄海广博士提供课程视频和个人笔记,在此深 ...

随机推荐

  1. 【技术分享会】 @第七期 android开发基础

    前言 Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发. Android 软件系列包括操作系统.中间 ...

  2. WEB中会话跟踪[转]

    今天晚上去华工参加睿智融科的笔试,问到web会话跟踪,一脸懵比,这个词听都没听过,回来后百度下,发现其实会话跟踪的内容我基本都了解的~_~ 转自:http://www.cnblogs.com/gaop ...

  3. 【前端系列】移动前端开发之viewport的深入理解

    在页面上没有设置width所以样式显示有问题,本来选择的响应式模式的320*410结果看到页面的实际宽度确实980px. 本文转载自: 在移动设备上进行网页的重构或开发,首先得搞明白的就是移动设备上的 ...

  4. Linux(Ubuntu)下如何解压 .zip 文件

    安装解压缩软件 使用如下命令安装: sudo apt-get install p7zip-full 7zip,估计会比较熟悉. p7zip,是什么? 听说是 7zip 的 shell 封装. 解压 使 ...

  5. 泛型实体类List<>绑定到repeater

    后台代码: private void bindnewslist() { long num = 100L; List<Model.news> news = _news.GetList(out ...

  6. Word 2010 插入其他文件的方法

    1. 2.

  7. Rails 添加新的运行环境

    Rails自带了development.test和production三个environments 我们可以添加Staging database.yml staging: adapter: mysql ...

  8. Dockerfile ,ADD详细解读

    一.ADD指令 ADD指令的功能是将主机构建环境(上下文)目录中的文件和目录.以及一个URL标记的文件 拷贝到镜像中. 其格式是: ADD  源路径  目标路径 如: #test FROM ubunt ...

  9. jquery的ajax()函数中文传值出现乱码完美解决方案

    1.        jquery的ajax()函数 $.ajax({ type: "POST", dataType: "text", url: ".. ...

  10. 关于nagios系统下使用shell脚本自定义监控插件的编写

    在自已编写监控插件之前我们首先需要对nagios监控原理有一定的了解 Nagios的功能是监控服务和主机,但是他自身并不包括这部分功能,所有的监控.检测功能都是通过各种插件来完成的. 启动Nagios ...