核函数的定义和作用(转)

  我来举一个核函数把低维空间映射到高维空间的例子。

  下面这张图位于第一、二象限内。我们关注红色的门,以及“北京四合院”这几个字下面的紫色的字母。我们把红色的门上的点看成是“+”数据,紫色字母上的点看成是“-”数据,它们的横、纵坐标是两个特征。显然,在这个二维空间内,“+”“-”两类数据不是线性可分的。

  我们现在考虑核函数,即“内积平方”。这里面是二维空间中的两个点。这个核函数对应着一个二维空间到三维空间的映射,它的表达式是:
                                                                                      

可以验证,

在P这个映射下,原来二维空间中的图在三维空间中的像是这个样子:


                                               (前后轴为x轴,左右轴为y轴,上下轴为z轴)
注意到绿色的平面可以完美地分割红色和紫色,也就是说,两类数据在三维空间中变成线性可分的了。而三维中的这个判决边界,再映射回二维空间中是这样的:

这是一条双曲线,它不是线性的。

================================================

  如上面的例子所说,核函数的作用就是隐含着一个从低维空间到高维空间的映射,而这个映射可以把低维空间中线性不可分的两类点变成线性可分的。

当然,我举的这个具体例子强烈地依赖于数据在原始空间中的位置。
事实中使用的核函数往往比这个例子复杂得多。它们对应的映射并不一定能够显式地表达出来;它们映射到的高维空间的维数也比我举的例子(三维)高得多,甚至是无穷维的。这样,就可以期待原来并不线性可分的两类点变成线性可分的了。

================================================

  在机器学习中常用的核函数,一般有这么几类,也就是LibSVM中自带的这几类:
1) 线性:
2) 多项式:
3) Radial basis function:
4) Sigmoid:

我举的例子是多项式核函数中的情况。

  在实用中,很多使用者都是盲目地试验各种核函数,并扫描其中的参数,选择效果最好的。至于什么样的核函数适用于什么样的问题,大多数人都不懂。很不幸,我也属于这大多数人,所以如果有人对这个问题有理论性的理解,还请指教。

================================================

  核函数要满足的条件称为Mercer‘s condition。由于我以应用SVM为主,对它的理论并不很了解,就不阐述什么了。使用SVM的很多人甚至都不知道这个条件,也不关心它;有些不满足该条件的函数也被拿来当核函数用。

  

作者:王赟 Maigo
链接:https://www.zhihu.com/question/24627666/answer/28440943
来源:知乎

时间: 2024-09-29 05:03:24

核函数的定义和作用(转)的相关文章

构造器的定义与作用

构造方法的特征 - 它具有和类相同的名称: - 它不含返回值: 注意: 在构造方法里不含返回值的概念是不同于"void"的,在定义构造方法时加了"void",结果这个方法就不再被自动调用了. 构造方法的作用 当一个类的实例对象刚产生时,这个类的构造方法就会被自动调用,我们可以在这个方法中加入要完成初始化工作的代码.这就好像我们规定每个"人"一出生就必须先洗澡,我们就可以在"人"的构造方法中加入完成"洗澡"的

C#泛型List 的定义、作用、用法

定义:List类表示可通过索引访问的对象的强类型列表,提供用于对列表进行搜索.排序和操作的方法. 作用:泛型最常见的用途是泛型集合我们在创建列表类时,列表项的数据类型可能是int,string或其它类型,如果对列表类的处理方法相同,就没有必要事先指定数据类型,留待列表类实例化时再指定.相当于把数据类型当成参数,这样可以最大限度地重用代码,保护类型的安全以及提高性能. List的一般用法所属命名空间: System.Collections.Genericpublic class List:ILis

UUID的定义以及作用

UUID含义是通用唯一识别码 (Universally Unique Identifier),这 是一个软件建构的标准,也是被开源软件基金会 (Open Software Foundation, OSF) 的组织应用在分布式计算环境 (Distributed Computing Environment, DCE) 领域的重要部分. 作用: UUID 的目的是让分布式系统中的所有元素,都能有唯一的辨识资讯,而不需要透过中央控制端来做辨识资讯的指定.如此一来,每个人都可以建立不与其它人冲突的 UUI

转:FIFO的定义与作用

一.先入先出队列(First Input First Output,FIFO)这是一种传统的按序执行方法,先进入的指令先完成并引退,跟着才执行第二条指令. 1.什么是FIFO? FIFO是英文First In First Out 的缩写,是一种先进先出的数据缓存器,他与普通存储器的区别是没有外部读写地址线,这样使用起来非常简单,但缺点就是只能顺序写入数据,顺序的读出数据,其数据地址由内部读写指针自动加1完成,不能像普通存储器那样可以由地址线决定读取或写入某个指定的地址. 2.什么情况下用FIFO

割接的定义、作用和由来

割接 一.定义 割接一般包括设备和线路.业务等,是指使用一种新的事物替换原有旧的事物,也指将一种业务或流量从一个网中移植到另一网络中. 总之凡是以新的系统替换旧的系统的行为都称为割接,此处的系统也是一个广义的概念,比如电源系统割接.移动的BOSS系统割接.联通的营帐系统割接,等等都是割接.说白了,割接就是替换. 1.1 网络割接 网络割接是对正在使用的线路.设备进行操作,将会直接影响到上面承载的业务,网络改造中关键的一步就是网络割接.网络割接又叫网络迁移,是指运行网络物理或者逻辑上的更改. 网络

c# 泛型List的定义、作用、用法

定义:List<T>类表示可通过索引访问的对象的强类型列表,提供用于对列表进行搜索.排序和操作的方法. 作用: 泛型最常见的用途是泛型集合 我们在创建列表类时,列表项的数据类型可能是int,string或其它类型,如果对列表类的处理方法相同, 就没有必要事先指定数据类型,留待列表类实例化时再指定.相当于把数据类型当成参数,这样可以最 大限度地重用代码,保护类型的安全以及提高性能. List的一般用法 所属命名空间: System.Collections.Generic public class

Dubbo定义及其作用

Dubbo定义 Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案.简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式的时候,才有dubbo这样的分布式服务框架的需求,远程服务调用的分布式框架. 其核心部分包含: 1.远程通讯:提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及"请求-响应"模式的信息交换方式. 2.集群容错:提供基于接口方法的透明远程过程调用,包括多协议支

java接口定义和作用

接口语法 1.接口是一种引用类型,可以等同看作类.修饰符 interface 接口名 2.接口中只能出现常量和抽象方法 3.接口其实是一个特殊的抽象类,特殊在接口是完全抽象的 4.接口中没有构造方法,接口也无法实例化 5.接口和接口之间可以多继承 6.一个类可以实现多个接口,这里的实现等同于继承 7.一个非抽象的类实现接口,需要将接口中所有方法实现/重写/覆盖 #java package study1; public interface A{ //常量都是public static final,

jsp中的九大内置对象的定义及作用

1.什么叫做内置对象? 答:在jsp中,有一些对象即开发者不需要自己去创建对象(全部由系统创建好),就可以直接使用对象调用相应的方法,这些由系统创建的对象称为内置对象. 2.九大内置对象分别是哪些? 内置对象名                   类型                                                                 对象名                             作用域 四大作用域对象: request