核型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的更多相关文章
- 《机器学习技法》---核型SVM
(本文内容和图片来自林轩田老师<机器学习技法>) 1. 核技巧引入 如果要用SVM来做非线性的分类,我们采用的方法是将原来的特征空间映射到另一个更高维的空间,在这个更高维的空间做线性的SV ...
- 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)是 ...
- 机器学习技法课之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)的笔记是一个非常麻烦的事情,一方面这个东西本来就不好理解,要深入学习需要花费大量的时间和精力,另一方面我本身也是个初学者,整理起来难免思 ...
随机推荐
- 十分钟轻松让你认识Entity Framework 7
EF7不是在EF6上更新,而是完全重写了.它完全支持.NET Core runtime,也就是说以后你可以在Mac或者是Linux机器上使用EF了. https://github.com/nichol ...
- JSP基础学习
JQuery教程: http://www.w3school.com.cn/jquery/ HTTP协议的 http://www.w3.org/Protocols/rfc2616/rfc2616.htm ...
- C#进阶系列——DDD领域驱动设计初探(六):领域服务
前言:之前一直在搭建项目架构的代码,有点偏离我们的主题(DDD)了,这篇我们继续来聊聊DDD里面另一个比较重要的知识点:领域服务.关于领域服务的使用,书中也介绍得比较晦涩,在此就根据博主自己的理解谈谈 ...
- 【技术贴】大型发布会现场的WiFi网络应该如何搭建?
WiFi网络的部署要远远比一般人想象的复杂,不是说放上几十个AP带宽就自动增加几十倍,恰恰相反,简单放几十个AP带宽会由于AP之间的竞争而 迅速使带宽下降为几乎不可用.实际上这个问题完全可以写一本书了 ...
- 使用PhpDocumentor生成文档
一,网站根目录执行 $ composer require --dev phpdocumentor/phpdocumentor 二,进入vendor/bin/目录执行 $phpdoc -d D:\ser ...
- JavaScript----Js操控-HTML5 <progress> 标签
Js操控----HTML5 <progress> 标签 简单模拟下下载进度跑条 <h4>加载进度</h4> <input type="button& ...
- win10下JDK的安装与环境变量配置
1.到官网下载最新版本的JDK http://www.oracle.com/technetwork/java/javase/downloads/index.html 2.安装JDK,同安装其他软件一样 ...
- ionic+angularjs开发hybrid App(环境配置+创建测试项目)
本文使用的系统是win10 因为后期需要使用nodejs 所以先把node装好 https://nodejs.org/download/ 下载JDK并配置Java运行环境 http://www.ora ...
- python word
代码: #coding=utf-8 __author__ = 'zhm' from win32com import client as wc import os import time import ...
- 【bzoj1076】 SCOI2008—奖励关
http://www.lydsy.com/JudgeOnline/problem.php?id=1076 (题目链接) 题意 一个奖励,K次抛出宝物的机会,每次抛出都等概率的抛出n个物品中的一个,每个 ...
