吴恩达机器学习笔记(六) —— 支持向量机SVM
主要内容:
一.损失函数
二.决策边界
三.Kernel
四.使用SVM
(有关SVM数学解释:机器学习笔记(八)震惊!支持向量机(SVM)居然是这种机)
一.损失函数

二.决策边界
对于:

当C非常大时,括号括起来的部分就接近于0,所以就变成了:

非常有意思的是,在最小化 1/2*∑θj^2的时候,最小间距也达到最大。原因如下:


所以:

即:如果我们要最小化1/2*∑θj^2,就要使得||θ||尽量小,而当||θ||最小时,又因为
,所以p(i)最大,即间距最大。
注意:C可以看成是正则项系数λ的倒数。所以,当C越大时(可以看成是λ越小),则曲线对于数据越敏感。如下:

三.Kernel
上面介绍的都是线性可分的情况,当线性不可分时,或许我们可以用多项式进行拟合,如下:

但是多项式的次数太高,计算成本就会很大,有没有更好的办法?那就是SVM带核的方法。
我们将上面的多项式改为:

然后f的公式为:

这个f函数就是高斯核函数。
我们在坐标轴上选取三个地标

其中f1就是坐标轴上某一点到L(1)距离的远近,离得近则f1 = 1,离得远则f1 = 0,f2、f3等以此类推。
对于高斯核函数,σ对整体分布的影响为:σ越大,分布越扁平:

于是新的决策方法就变为:

那么如何选取地标L呢?那就是数据集的每一点都作为地标,如下:

综上,带核的SVM可以描述为:

四.使用SVM
支持向量机较为复杂,一般而言,我们都不会自己去实现算法,而是直接调用。但是我们需要做两点工作,那就是:1.选择C的值(cost function上的那个系数C),2.选择核函数(或者直接使用无核),具体步骤如下:

吴恩达机器学习笔记(六) —— 支持向量机SVM的更多相关文章
- [吴恩达机器学习笔记]12支持向量机5SVM参数细节
12.支持向量机 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考资料 斯坦福大学 2014 机器学习教程中文笔记 by 黄海广 12.5 SVM参数细节 标记点选取 标记点(landma ...
- [吴恩达机器学习笔记]12支持向量机2 SVM的正则化参数和决策间距
12.支持向量机 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考资料 斯坦福大学 2014 机器学习教程中文笔记 by 黄海广 12.2 大间距的直观理解- Large Margin I ...
- [吴恩达机器学习笔记]12支持向量机1从逻辑回归到SVM/SVM的损失函数
12.支持向量机 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考资料 斯坦福大学 2014 机器学习教程中文笔记 by 黄海广 12.1 SVM损失函数 从逻辑回归到支持向量机 为了描述 ...
- [吴恩达机器学习笔记]12支持向量机3SVM大间距分类的数学解释
12.支持向量机 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考资料 斯坦福大学 2014 机器学习教程中文笔记 by 黄海广 12.3 大间距分类背后的数学原理- Mathematic ...
- [吴恩达机器学习笔记]12支持向量机6SVM总结
12.支持向量机 觉得有用的话,欢迎一起讨论相互学习~Follow Me 12.6SVM总结 推荐使用成熟的软件包 用以解决 SVM 最优化问题的软件很复杂,且已经有研究者做了很多年数值优化.因此强烈 ...
- [吴恩达机器学习笔记]12支持向量机4核函数和标记点kernels and landmark
12.支持向量机 觉得有用的话,欢迎一起讨论相互学习~Follow Me 12.4 核函数与标记点- Kernels and landmarks 问题引入 如果你有以下的训练集,然后想去拟合其能够分开 ...
- 吴恩达机器学习笔记45-使用支持向量机(Using A SVM)
本篇我们讨论如何运行或者运用SVM. 在高斯核函数之外我们还有其他一些选择,如:多项式核函数(Polynomial Kernel)字符串核函数(String kernel)卡方核函数( chi-squ ...
- 吴恩达机器学习笔记43-SVM大边界分类背后的数学(Mathematics Behind Large Margin Classification of SVM)
假设我有两个向量,
- Machine Learning——吴恩达机器学习笔记(酷
[1] ML Introduction a. supervised learning & unsupervised learning 监督学习:从给定的训练数据集中学习出一个函数(模型参数), ...
随机推荐
- Hibernate get load的区别
这两个函数都是用来从数据库中加载对象,其区别说起来主要有以下两点: 1.如果数据库中不存在该对象,那么load是抛出一个ObjectNotFound的异常,而get是返回一个空指针 2.加载机制不同 ...
- appium在MAC上环境搭建
1. 安装.启动Appium bixiaopeng@bixiaopeng ~$ npm install -g appium Password: npm http GET https://registr ...
- cocos2d-x 3.0 内存管理机制
***************************************转载请注明出处:http://blog.csdn.net/lttree************************** ...
- python之脚本参数optparse
import optparse usage = "myprog[ -f <filename>][-s <xyz>] arg1[,arg2..]" opter ...
- java中BigDecimal的学习
干着java的活,但是看的都是一些偏底层的东西(或者我根本就没有看),有点荒废了java的学习. 最近一直在用到一个类是BigDecimal,但都是模棱两可地在那儿用,并没有深入研究这个类的细节,感觉 ...
- Nginx性能测试
环境:Centos 7.0 Nginx 1.6.2 测试工具:siege 3.0.7 配置1: I3-3110M 4G 测试1(100用户,1000请求): 平均响应:0.06s 并发数:59.19 ...
- javascript onclick中post提交
对post提交进行封装: function post(URL, PARAMS) { var temp = document.createElement("form"); temp. ...
- 深入Asyncio(十一)优雅地开始与结束
Startup and Shutdown Graceful 大部分基于asyncio的程序都是需要长期运行.基于网络的应用,处理这种应用的正确开启与关闭存在惊人的复杂性. 开启相对来说更简单点,常规做 ...
- 06 redis中set结构及命令详解
集合 set 相关命令 集合的性质: 唯一性,无序性,确定性 注: 在string和link的命令中,可以通过range 来访问string中的某几个字符或某几个元素 但,因为集合的无序性,无法通过下 ...
- pjax简单实例
ajax缺点是破坏了浏览器的前进后退,因为ajax的请求不会留在历史记录中.pjax就不一样了,pjax被解释成ajax+pushState的封装,因为它把ajax的请求写入历史记录,并反映在地址栏, ...