背景

上一讲从对偶问题的角度描述了SVM问题,但是始终需要计算原始数据feature转换后的数据。这一讲,通过一个kernel(核函数)技巧,可以省去feature转换计算,但是仍然可以利用feature转换的特性。

 

什么是kernel

Kernel的其实就是将向量feature转换与点积运算合并后的运算,如下,

概念上很简单,但是并不是所有的feature转换函数都有kernel的特性。

 

Kernel化的SVM

在对偶化的SVM解中,有三个地方会使用到kernel

  • 计算截距b
  • 计算QP中的Q矩阵
  • 预测分类

使用了kernel,w的具体值都无需计算,因为没有地方会直接使用w。这也是为什么上一讲花了那么大的精力描述对偶化的SVM解。

 

常见kernel

常见kernel有多项式,高斯和线性,各有利弊。

 

线性kernel

不做feature转换,直接使用。不需要使用对偶技巧,直接使用linear hard SVM解。

优点:计算效率高;结果解释性好。

缺点:需要数据线性可分

 

多项kernel

对x进行多项式展开,一般的形式为

其中a,b,Q为常量。

优点:相比线性kernel,对数据要求没有那么严格

缺点:需要选择的系数较多;Q太大会超出一些计算机的精度,一般Q<=3。

 

高斯Kernel

有些资料也称为RBF(Radial Base Function),一般形式为

其中a(>0)是常量。高斯kernel厉害的地方是可以将原始数据x映射到无线维度空间中,x下面取a=1的例子

上面的变化采用了Taylor展开,接着

其中特征转化为

这样,就完成了向无线维度转换,RBF是不是很厉害!

优点:调试的系数较少;比线性和多项式更强大,几乎可以适应所有数据;不容易出现计算精度问题

缺点:无线维度无法解释;太强大,容易过拟合;计算开销大。

 

总结

个人感觉,核函数是SVM画龙点睛之笔,真的很佩服发现kernel的科学家。在实际使用SVM的过程中,很大一部分精力可能就是选择kernel和相关系数。Kernel还可以自定义,但是需要满足一些条件,具体可以参考讲义相关部分。

机器学习技法--学习笔记03--Kernel技巧的更多相关文章

  1. 机器学习技法--学习笔记04--Soft SVM

    背景 之前所讨论的SVM都是非常严格的hard版本,必须要求每个点都被正确的区分开.但是,实际情况时很少出现这种情况的,因为噪声数据时无法避免的.所以,需要在hard SVM上添加容错机制,使得可以容 ...

  2. 机器学习实战(Machine Learning in Action)学习笔记————03.决策树原理、源码解析及测试

    机器学习实战(Machine Learning in Action)学习笔记————03.决策树原理.源码解析及测试 关键字:决策树.python.源码解析.测试作者:米仓山下时间:2018-10-2 ...

  3. OpenCV 学习笔记03 边界框、最小矩形区域和最小闭圆的轮廓

    本节代码使用的opencv-python 4.0.1,numpy 1.15.4 + mkl 使用图片为 Mjolnir_Round_Car_Magnet_300x300.jpg 代码如下: impor ...

  4. OpenCV 学习笔记03 findContours函数

    opencv-python   4.0.1 1 函数释义 词义:发现轮廓! 从二进制图像中查找轮廓(Finds contours in a binary image):轮廓是形状分析和物体检测和识别的 ...

  5. TensorFlow机器学习框架-学习笔记-001

    # TensorFlow机器学习框架-学习笔记-001 ### 测试TensorFlow环境是否安装完成-----------------------------```import tensorflo ...

  6. 《软件调试的艺术》学习笔记——GDB使用技巧摘要

    <软件调试的艺术>学习笔记——GDB使用技巧摘要 <软件调试的艺术>,因为名是The Art of Debugging with GDB, DDD, and Eclipse. ...

  7. C++ GUI Qt4学习笔记03

    C++ GUI Qt4学习笔记03   qtc++spreadsheet文档工具resources 本章介绍创建Spreadsheet应用程序的主窗口 1.子类化QMainWindow 通过子类化QM ...

  8. SaToken学习笔记-03

    SaToken学习笔记-03 如果排版有问题,请点击:传送门 核心思想 所谓权限验证,验证的核心就是一个账号是否拥有一个权限码 有,就让你通过.没有?那么禁止访问! 再往底了说,就是每个账号都会拥有一 ...

  9. Redis:学习笔记-03

    Redis:学习笔记-03 该部分内容,参考了 bilibili 上讲解 Redis 中,观看数最多的课程 Redis最新超详细版教程通俗易懂,来自 UP主 遇见狂神说 7. Redis配置文件 启动 ...

随机推荐

  1. xcode添加音效

    xcode添加背景音乐/音效 背景音乐:http://www.cnblogs.com/jiayongqiang/p/5476069.html 音效: 一.介绍: 又称“短音频”,通常在程序中的播放时长 ...

  2. N皇后

    #include <stdio.h> #include <math.h> ], a[]; /*int place(int k) { for(int i = 1; i < ...

  3. Unity5的AssetBundle的一点使用心得

    昨天一位朋友在我这里留言,想让我写点Unity5的AssetBundle心得.于是我就看了相关的介绍,和自己确切的做了一次.下面来谈谈所谓的心得. 如果你觉得自己对AssetBundle不熟悉,建议先 ...

  4. JS 插件使用

    1.时间控件的使用 My97DatePicker WdatePicker({ minDate: '%y-%M-{%d}'}) 默认当前日期以后 LoanMessage.LoanAppAgentMode ...

  5. LVS三种模式配置及优点缺点比较

    目录: LVS三种模式配置 LVS 三种工作模式的优缺点比较 LVS三种模式配置 LVS三种(LVS-DR,LVS-NAT,LVS-TUN)模式的简要配置 LVS是什么: http://www.lin ...

  6. 如何处理webView跳转

    - (void)webView:(UIWebView *)wv didFailLoadWithError:(NSError *)error {    // Give iOS a chance to o ...

  7. 从SQLSERVER/MYSQL数据库中随机取一条或者N条记录

    从SQLSERVER/MYSQL数据库中随机取一条或者N条记录 很多人都知道使用rand()函数但是怎麽使用可能不是每个人都知道 建立测试表 USE [sss] GO ,NAME ) DEFAULT ...

  8. 【基础知识】.Net基础加强06天

    一. 垃圾回收 1. 垃圾回收的目的:提高内存的利用效率. 2. 垃圾回收器: 只回收托管堆中的内存资源,不回收其他资源(数据库连接.文件句柄.网络端口等): 3. 什么时候垃圾回收? a) 当对象没 ...

  9. 用c#开发微信(3)基于Senparc.Weixin框架的接收普通消息处理 (源码下载)

    本文讲述使用Senparc.Weixin框架来快速处理各种接收的普通消息.这里的消息指的是传统的微信公众平台消息交互,微信用户向公众号发送消息后,公众号回复消息给微信用户.包括以下7种类型: 1 文本 ...

  10. C#设计模式(17)——观察者模式(Observer Pattern)

    一.引言 在现实生活中,处处可见观察者模式,例如,微信中的订阅号,订阅博客和QQ微博中关注好友,这些都属于观察者模式的应用.在这一章将分享我对观察者模式的理解,废话不多说了,直接进入今天的主题. 二. ...