《机器学习技法》---核型SVM
(本文内容和图片来自林轩田老师《机器学习技法》)
1. 核技巧引入
如果要用SVM来做非线性的分类,我们采用的方法是将原来的特征空间映射到另一个更高维的空间,在这个更高维的空间做线性的SVM。即:

在这里我们计算这个向量内积有两种方法:一种是对Φ(x)给出明确的定义,分别算出两个高维向量,再做内积;另一种就是利用核函数,直接算出高维的内积。我们以一个例子来看这两种方法,定义一个二次转化:

我们可以直接计算出内积:

可以看出,最后的结果能够用x和x一撇表示出来,这就是一个核函数:

在这里,我们是给出了一个Φ(x)来推出它的核函数。但事实上,我们可以直接给一个核函数(只要我们能证明它是一个核函数),而不用知道它对应的Φ(x)是什么。这样做的一个好处就是我们不用求出高维向量在做内积,可以通过形式简单的核函数直接计算内积,计算复杂度降低了,到后面我们用核函数甚至可以引入无限维的转换。
我们的b值就是:

最终得到的分离超平面就是:

可以看出,不管是求解的优化问题还是最后的模型,我们都可以用核函数来表示。(这里我们不用知道w是什么)
因此,通过核函数的引入,我们相当于隐式的在高维空间进行线性SVM,而不用知道低维到高维的具体映射是什么。
关于使用核函数后的时间复杂度的优化,如下:

2 .多项式核函数
首先对一个常用的核函数——二次多项式核函数做导出:

对于不同的二次核,我们产生的决策边界是不同的:

之后我们可以推广出通用的多项式核函数:

3. 高斯核函数
我们可以证明高斯核函数是一个核函数,并且它对应一个到无限维的映射:

更通用的高斯核函数为:

高斯核SVM的分离超平面就是:

可以看出,模型是一堆中心在支撑向量上的高斯函数的线性组合,因此高斯核SVM也被称为RBF。
总结一下,SVM可以做的事情:

首先是有分离超平面,然后引入了的高维度转换(使得我们可以做非线性分类),然后使用了核技巧(使得我们降低了复杂度并且可以引入无限维的转换),在这些基础上,SVM有它的large-margin机制来确保我们的模型复杂度比较小(泛化能力)。
最后存储模型的时候,我们不用存储高维度的w,存储的是支持向量以及它们对应的阿尔法值。
接下来我们看看不同的高斯核svm产生的边界:

因此,即使SVM有large-margin的保护,但是还是要慎选伽马的值,否则仍然会过拟合。
4.几种核函数的比较


《机器学习技法》---核型SVM的更多相关文章
- Coursera台大机器学习技法课程笔记01-linear hard SVM
极其淡腾的一学期终于过去了,暑假打算学下台大的这门机器学习技法. 第一课是对SVM的介绍,虽然之前也学过,但听了一次感觉还是很有收获的.这位博主总结了个大概,具体细节还是 要听课:http://www ...
- 《机器学习技法》---线性SVM
(本文内容和图片来自林轩田老师<机器学习技法>) 1. 线性SVM的推导 1.1 形象理解为什么要使用间隔最大化 容忍更多的测量误差,更加的robust.间隔越大,噪声容忍度越大: 1.2 ...
- 机器学习技法笔记(2)-Linear SVM
从这一节开始学习机器学习技法课程中的SVM, 这一节主要介绍标准形式的SVM: Linear SVM 引入SVM 首先回顾Percentron Learning Algrithm(感知器算法PLA)是 ...
- 核型SVM
(本文内容和图片来自林轩田老师<机器学习技法>) 1. 核技巧引入 如果要用SVM来做非线性的分类,我们采用的方法是将原来的特征空间映射到另一个更高维的空间,在这个更高维的空间做线性的SV ...
- 机器学习技法课之Aggregation模型
Courses上台湾大学林轩田老师的机器学习技法课之Aggregation 模型学习笔记. 混合(blending) 本笔记是Course上台湾大学林轩田老师的<机器学习技法课>的学习笔记 ...
- 机器学习技法之Aggregation方法总结:Blending、Learning(Bagging、AdaBoost、Decision Tree)及其aggregation of aggregation
本文主要基于台大林轩田老师的机器学习技法课程中关于使用融合(aggregation)方法获得更好性能的g的一个总结.包含从静态的融合方法blending(已经有了一堆的g,通过uniform:voti ...
- 机器学习——支持向量机(SVM)
机器学习--支持向量机(SVM) 支持向量机(Support Vector Machine)广泛地应用于分类问题,回归问题和异常检测问题.支持向量机一个很好的性质是其与凸优化问题相对应,局部最优解就是 ...
- 遵循统一的机器学习框架理解SVM
遵循统一的机器学习框架理解SVM 一.前言 我的博客仅记录我的观点和思考过程.欢迎大家指出我思考的盲点,更希望大家能有自己的理解. 本文参考了李宏毅教授讲解SVM的课程和李航大大的统计学习方法. 二. ...
- Python机器学习笔记:SVM(1)——SVM概述
前言 整理SVM(support vector machine)的笔记是一个非常麻烦的事情,一方面这个东西本来就不好理解,要深入学习需要花费大量的时间和精力,另一方面我本身也是个初学者,整理起来难免思 ...
随机推荐
- watch 和 computed
<template> <div class="hello"> <h1>{{ msg }}</h1> <h2>Essent ...
- py+appium微信公众号自动化(已搞定多个坑)
最近需要做微信公众号的自动化测试,遇到了不少坑. 微信公众号自动化与app自动化还是有区别的,因为多了不少坑.打开微信x5内核调试的就不说了,百度有. 1.首先,微信公众号有webview,uiaut ...
- ASP.NET MVC ActionFilterAttribute 方法解释(区别)
1.OnActionExecuting 在Action方法调用前使用,使用场景:如何验证登录等. 2.OnActionExecuted 在Action方法调用后,result方 ...
- HBase的优化
HBase的优化 高可用 在 HBase 中 Hmaster 负责监控 RegionServer 的生命周期,均衡 RegionServer 的负载,如果 Hmaster 挂掉了,那么整个 HBase ...
- Spring+SpringMVC+mybatis maven pom文件
pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w ...
- Android调用系统分享功能总结
Android分享-调用系统自带的分享功能 实现分享功能的几个办法 1.调用系统的分享功能 2.通过第三方SDK,如ShareSDK,友盟等 3.自行使用各自平台的SDK,比如QQ,微信,微博各自的S ...
- SQLServer 问题(一)
出现这种错误: [DBNETLIB][ConnectionOpen(Connect()).]SQL Server 不存在或拒绝访问 数据库错误 原因: 1.查看是不是没有在数据库中添加数据库服务器地址 ...
- Java EE.Servlet.处理请求
Servlet的核心工作便是处理客户端提交的请求信息,生成动态响应信息返回客户端. 1.请求参数 POST方法一般用于更新服务器上的资源,当时用POST方法时,提交的数据包含在HTTP实体内,而GET ...
- vue.js-vue入门教程教你如何html中使用vue(30分钟快速入门)
前后端分离.微服务框架是当下比较流行的词汇,而vue就是前端框架的佼佼者.下面重点介绍一下vue的用法: vue起步:1.引包 2.启动new Vue({el:目的地,template:模板内容 ...
- Java计时新姿势
为获得更好的阅读体验,请访问原文:传送门 前言: 最近公司来了个大佬,从他那里学到不少东西,其中一个就是计时 的新姿势「StopWatch」,赶紧来一起了解了解吧! 一.最简单的计时 在我们的程序中不 ...
