核方法(kernel Method)
Kernel
Kernel Method
- Kernel
- 前言
- 一、General introduction to kernel methods
- 1.The Basic Idea
- 2.Inner Product Matrix(Gram Matrix/Kernel Matrix)
- 二、Dual Representation
- 三、PCA and KPCA
- 1.Principal Component Analysis (PCA)
- 2.Kernel Principal Component Analysis (KPCA)
- 四、LDA and GDA
- 1.Linear Discriminant Analysis(LDA)
- 2.Generalized Discriminant Analysis(GDA)
- 五、Hard-margin and Soft-margin SVMs
- 1.Hard-margin SVMs
- 2.Soft-margin SVMs
- 总结
前言
参考书籍:
[1]Kernel Methods for Pattern Analysis
[2]learning with Kernels:Support Vector Machines, Regularization, Optimization and Beyond
一、General introduction to kernel methods
1.The Basic Idea
①mapping
φ将二维空间映射到三维空间,这里面有一个映射特点:z1z_{1}z1和z3z_{3}z3恒为正,z2z_{2}z2要根据x1x_{1}x1和x2x_{2}x2乘积的值而定,因此可以看到feature space Η坐标全在右上象限上。
在original space x上,想要分开两个类,就需要使用椭圆:x12a2+x22b2=1\frac{x_{1}^{2}}{a^{2}}+\frac{x_{2}^{ 2}}{b^{2}}=1a2x12+b2x22=1,但是在feature space H中只要使用平面就可以分离两个类。
(注:z3z_{3}z3下的分母应该是b2b^{2}b2)
通过上面式子转换,椭圆式就变成了一个平面方程,本来在原始空间中要用一个非线性的椭圆,但是在映射空间中只要使用一个线性的平面就可以实现类别分离。
②kernel function
利用kernel function将原始空间上的点投影到映射空间,这里面的映射函数φ(x1,x2)=(x12,2x1x2,x22)=(z1,z2,z3)φ(x_{1},x_{2})=(x_{1}^{2},\sqrt{2}x_{1}x_{2},x_{2}^{2})=(z_{1},z_{2},z_{3})φ(x1,x2)=(x12,2
然后对投影后的点进行内积<φ(x1,x2),φ(x1′,x2′)>=(<x,x′>)2=k(x,x′)<φ(x_{1},x_{2}),φ(x_{1}^{'},x_{2}^{'})>=(<x,x^{'}>)^{2}=k(x,x^{'})<φ(x1,x2),φ(x1′,x2′)>=(<x,x′>)2=k(x,x′)(注:具体过程如上图所示),等式后面两项就是我们将要定义的kernel function。
在算映射空间的内积时,只要知道kernel function,φ函数有没有都不影响求映射空间的内积。
③process
♦Kernel Methods work by
☞embedding data in a vector space(with more high dimensionality):将我们的数据送入一个新的向量空间上面,一般希望这个空间具有比较高的纬度。
☞looking for(linear)relations in such space:要想办法在这个空间上找到一个线性关系,将它们分开。
♦If map is chosen suitably,complex relations can be simplified,and easily detected:如果选择到一个比较适当的空间,复杂的关系就会变得比较简单,而且容易被发现。
♦Much of the geometry of the data in the embedding space(relative position)is contained in all pairwise inner products
♦In many cases,inner product in the embedding space is very cheap to compute
内积可以帮我们决定高维空间的几何性质。几何性质:距离和角度。
③Distance in the Feature Space
在映射空间中两点的距离平方可以如下图中表示的那样
这样的话,两点之间的距离就转化成内积:
<φ(x),φ(x)>−2<φ(x),φ(x′)>+<φ(x′),φ(x′)>=k(x,x)−2k(x,x′)+k(x′,x′)<φ(x),φ(x)>-2<φ(x),φ(x^{'})>+<φ(x^{'}),φ(x^{'})>=k(x,x)-2k(x,x^{'})+k(x^{'},x^{'})<φ(x),φ(x)>−2<φ(x),φ(x′)>+<φ(x′),φ(x′)>=k(x,x)−2k(x,x′)+k(x′,x′)
只要知道Kernel Function,我们就能得到两个点之间的距离,而并不需要去关心φ(x)φ(x)φ(x)长什么样子。
④Angle in the Feature Space
在映射空间中两点的角度可以如下图中表示的那样
因此只要知道Kernel Function,就能知道两点在空间中的角度。
⑤总结
映射空间中的距离和角度都可以用内积表示,φ(x)φ(x)φ(x)到底长什么样子其实就变得对我们来说不重要了。
2.Inner Product Matrix(Gram Matrix/Kernel Matrix)
根据第一节的思想,n个点之间的内积就可以有一个内积矩阵:
①A Simple Recognition Algorithm
yiy_{i}yi是标签,只有两个类别+1和-1,然后利用φφφ将x映射到更高维空间φ(x)φ(x)φ(x),下面就是投影之后的空间
然后算中心点,也就是当前类别之后求平均得到c+c_{+}c+以及c−c_{-}c−
现在我们主要的想法就是找一条线将两个类分开,先找出两个中心点向量:w=c+−c−w=c_{+}-c_{-}w=c+−c−
然后从中心点出发,找出垂直平分w的点c=12(c++c−)c=\frac{1}{2}(c_{+}+c_{-})c=21(c++c−),也就是下方蓝色线和红色线的交点
现在当测试点进入的时候,先进行的就是feature mapping,之后就是算角度,判断标签y是+1还是-1
两个向量之间的内积要小于零,这样就能保证角度是在0-180°之间,当角度小于90°的时候,就表明表示是+1,90°-180°表明y是-1
利用sgn将上面的关系转换成关系式(sgn取内积的正负号)
接下来就是计算上面的式子:y=sgn(<φ(x)−c,w>)y=sgn(<φ(x)-c,w>)y=sgn(<φ(x)−c,w>)
第一个方法:已知φ
直接将所有的sample送到高维空间中去,直接计算。
第二种方法:不知道φ,知道kernel function
将表达是化成内积形式,这样就不需要feature mapping。如下所示:
②kernel function and feature mapping
因此就形成下面几个问题:
●只要知道kernel function,φ就不是必须的
●只要知道kernel function就可以达到计算需求
●有限半正定的kernel matrix可以使用
●k和φ是一一对应的
●知道kernel function 可以构建feature space
One definition:
Finitely positive semi-definite functions
One theorem:
Characterization of kernels
③一些常用的核函数
二、Dual Representation
Dual Representation主要求一个线性函数表达式:f(x)=wTφ(x)+bf(x)=w^{T}φ(x)+bf(x)=wTφ(x)+b
因此需要求解wTw^{T}wT和bbb,在我们上一个例子中,对w的求解就是相当于求φ(xi)φ(x_{i})φ(xi)的线性组合,系数αiα_{i}αi的数量和样本数量有关,假设w是100维的,α的值是有可能大于这个值的也有可能小于这个值。
上面的概念可以总结成下面的两个式子
最后也可以化成内积的表达形式,有利于减少计算复杂度
注意w和α维度的区别
一般投影流程
三、PCA and KPCA
具有降噪功能,除去一些对数据结构影响很小的特征
1.Principal Component Analysis (PCA)
对下面的数据进行投影,投影到蓝色的线的variance是最大的
这里需要用到投影的知识:
寻找投影坐标的过程,先找到一个投影最大的轴
前提条件:均值为零
现在就是优化找出v,使用拉格朗日乘法
这里可以看出v和λ一个是特征值一个是特征向量
因此λ最大就可以得到argmaxvTCvargmax v^{T}CvargmaxvTCv就是最大
由于直接是特征向量和特征值,因此它们相互正交,很好的满足了轴之间的对称垂直性。
2.Kernel Principal Component Analysis (KPCA)
先进行维度投影然后在使用PCA,直接投影计算是没有办法进行的,因为我们是不知道φ(feature mapping)
接下来就需要将C变成与kernel function有关的式子
先观察kernel matrix
四、LDA and GDA
这里面还是需要用到投影的知识
1.Linear Discriminant Analysis(LDA)
了解LDA,要先知道LDA和PCA的区别,假设有两个群
①PCA:找到两个群投影的最大variance,也就是投影之后散的最开的,但是如果作分类就会发现始终有个地方是重叠的,无法区分类别。
②LDA:LDA可以解决PCA遗留的缺陷,也就是投影之后两个群之间的mean分隔最大。而且每个群自身的variance越集中越好。(这里面可以理解成类别,类别之间尽量保持不交叉)
LDA具备的属性
符号定义
将所有的样本投射到方向v,每一个类有不一样的投影mean,也就是说要分别计算
●Linear Discriminant Analysis-Between-class scatter matrix
每个类别之间的mean相减平方和
这里面的转换过程和KPCA相似
上面的式子中已经计算了mi−mjm_{i}-m_{j}mi−mj,后面就不会计算了,但是在一些资料里面会重复计算,具体如下面所示,但是两个是一样的。
由上式化简之后就只要计算下面的那个式子
本来需要考虑下面三个mean之间的距离尽可能大
经过转换之后可以化成下面的关系
这就是组间分散矩阵
●Linear Discriminant Analysis-Within-class scatter matrix
这里就是希望组内mean越小越好,说明类内是比较集中的,对象就变成了样本实例,而不是上面样本空间
●优化目标:最大化组间距离之和,最小化组内距离之和
这里面用了一个思想,固定分母,优化分子,最后化成求广义逆
v的计算式如下是为了保证vTSwLDAV=1v^{T}S_{w}^{LDA}V=1vTSwLDAV=1
2.Generalized Discriminant Analysis(GDA)
符号定义
为了方便,前提假设样本的均值是零,类间距离和LDA相同,但是类内距离计算不同,含义投影之后的点越往中心集中越好,相当于每个点都减去了m0m_{0}m0,这样所有点都要往中心靠齐。
计算过程:
将1化成B,只留外面一个1N\frac{1}{N}N1便于后面化简消去
五、Hard-margin and Soft-margin SVMs
SVM中的一个比较重要的思想,将优化问题转成拉格朗日问题
除此之外还有一个比较重要的理论:KKT
这里面有一个优化方向target,三个优化条件constrain
现在假设的条件是在x∗x^{*}x∗上取得minf(x)minf(x)minf(x),因此g1g_{1}g1和g2g_{2}g2取值是零,而g3g_{3}g3无法取到零,只能取小于零的数,因此只有g1g_{1}g1和g2g_{2}g2是有效的(active),g3g_{3}g3无效,由下图可以看出f(x)f(x)f(x)的导数可以由g1g_{1}g1和g2g_{2}g2的导数表示,因此就有如下表达式:▽f(x)=α1(−▽g1)+α2▽g2▽f(x)=α_{1}(-▽g_{1})+α_{2}▽g_{2}▽f(x)=α1(−▽g1)+α2▽g2
根据方向α1、α2α_{1}、α_{2}α1、α2需要大于零,α3α_{3}α3等于零
可以观察到只有不等式才有限制,而且不等式要化成小于等于零的情况,等式系数是没有限制的
1.Hard-margin SVMs
首先考虑二分类问题
样本散点图如下所示,因此需要找一条线分开两类,这条线的选择十分多,因此需要选择最中间的那条,也就是两个类之间最大的那个距离
wTx+b=−1/+1w^{T}x+b=-1/+1wTx+b=−1/+1其中这个-1/+1是可以任意取值的,如果取-2/+2的话,两边同时除2之后是等价的,我们希望上面的值带入之后都是大于+1的数,下方的值带入是小于-1的数
计算边缘距离
可以将上面的式子化成拉格朗日乘子
这一步将W(α)W(α)W(α)矩阵化
之后优化目标就变成下式
从下图中可以观察到,在虚线上的α是大于零的,其余的都是等于零的,因此在训练的过程中,只有边缘点是起作用的,其他点都没有作用
计算b的过程,其实就是当α大于零的时候
2.Soft-margin SVMs
problem one:当类无法用直线或者平面分开的时候,可以容忍在分割的时候存在一些误差,如下面所示的两个类,它们是无法完全分开的。
problem two:过拟合问题
由于上面两个问题,因此需要对边间条件进行放松,允许存在误差分类。
C增加,就会导致ξ相对会减小,这样的话边界就相当于减小了,因为容许误差的范围变小了。
上面的式子化成拉格朗日乘式,加入了两个系数α和β,分别对w、b、ξ求导,可以得到下面的式子。可以发现C的值和α、β是有关系的。
如果进行了空间映射,就可以表示成下面的式子:
得到w的L2-norm以及xix_{i}xi的投影坐标
将上面求出的值,代入优化目标函数中
化简之后就得到下面的式子
有了优化目标,就可以得到一个最优解,之后就是将新的sample代入进去判断是来自那个类的以及具体在哪个区域,这里主要就是根据KKT条件进行分析。
根据上面可以得到两个式子,然后由这两个式子进行分析(注意这里面是建立在α、β、C≥0的条件):
①当α=0时,这时候β就是等于C,因此ξ就是等于0,计算表达式不为零,因此只能在界限两端;
②当0<α<C时,这样β就不为零,ξ就必须等于零,而且计算表达式要等于零,因此点是在界限上面的;
③当a=C时,β就是为零,因此ξ可取任意值,而表达式必须为零,所有点是在界限之间。
多分类SVM
总结
核方法(kernel Method)相关推荐
- 核方法(kernel method)的主要思想
本文对核方法(kernel method)进行简要的介绍. 核方法的主要思想是基于这样一个假设:"在低维空间中不能线性分割的点集,通过转化为高维空间中的点集时,很有可能变为线性可分的&quo ...
- 【优化】核方法(kernel method)超简说明
本文不做数学推导,仅从最简单的概念上讲解核方法. 问题 有训练样本 x i x_i xi,其标定 y i y_i yi, i=1,2-N. 欲求解一个回归函数 f ( z ) f(z) f(z), ...
- Kernel Method核方法—应用与理解
前一篇主要梳理了几个基本概念以及相关关系,这一篇主要针对核方法的应用进行讨论,并理解核方法的思想,了解为什么要引入核方法. 核方法在机器学习中是一种灵活的技术,主要归结为两个方面: 非线性问题转换为高 ...
- Kernel Method核方法—基本概念
这里只是简单叙述了核方法中运用到的几个概念和相互的关系,包括什么是核函数Kernel function.正定函数Positive definite function.再生核希尔伯特空间Reproduc ...
- 机器学习与高维信息检索 - Note 6 - 核, 核方法与核函数(Kernels and the Kernel Trick)
Note 6 核, 核方法与核函数 到目前为止,我们所讨论的机器学习算法的成功都依赖于对输入数据分布的假设.例如,PCA的效果越好,数据围绕线性子空间分布.或者在线性判别分析中,我们假设类的高斯分布, ...
- matlab求logistics映射 的le_高维映射 与 核方法(Kernel Methods)
高维映射跟核方法的概念很容易混淆. 高维映射通过将样本从原始空间映射到一个更高维的特征空间,从而解决了低纬下难以解决的问题. 核方法往往跟高维映射配合使用,可以看做是一种技巧,可以通过它来避免这种映射 ...
- DNN盛行的当下,老旧的核(kernel)方法或能打开神经网络的魔盒
©作者 | 杜伟 来源 | 机器之心 重新思考「老旧的」核(kernel)方法,或许可以破解深度学习的奥秘. 在机器学习(ML)的世界,人工神经网络(ANN)越来越大的演化趋势以及超大规模网络取得的成 ...
- paper 6:支持向量机系列三:Kernel —— 介绍核方法,并由此将支持向量机推广到非线性的情况。...
前面我们介绍了线性情况下的支持向量机,它通过寻找一个线性的超平面来达到对数据进行分类的目的.不过,由于是线性方法,所以对非线性的数据就没有办法处理了.例如图中的两类数据,分别分布为两个圆圈的形状,不论 ...
- 关系抽取论文整理,核方法、远程监督的重点都在这里
来源 | CSDN 博客 作者 | Matt_sh,编辑 | Carol 来源 | CSDN云计算(ID:CSDNcloud) 本文是个人阅读文章的笔记整理,没有涉及到深度学习在关系抽取中的应用. 笔 ...
- Kernel Method的理解
kernel method是针对低维线性不可分而提出的一种解决方法,在PRML中有一章节的介绍,对其理解,也是迭代更进的过程. 简单来说,kernel method是一种低维和高维特征空间映射的方法, ...
最新文章
- bash mysql_解决bash: mysql: command not found 的方法
- 数据库表DML操作不了 可能是被锁了
- nagios 使用mysql_Nagios监控MySQL
- Asp.Net Core Blazor之容器部署
- POJ 1944 Fiber Communications (枚举 + 并查集 OR 线段树)
- arcgis批量将栅格里的nodata转为0
- java 缓存行填充_缓存伪共享问题以及解决方案缓存行填充
- linux脚本制定java堆大小_Java使用比堆大小更多的内存(或正确的Docker内存限制大小)...
- Java、JS、C++ 依然强势,Go、Kotlin 等新语言为何不能破局?
- 动态切换tableView中的cell的种类
- python是否存在键_检查给定的键在Python的字典中是否已经存在
- Matlab产生由正弦波产生方波
- php redis 清除队列,PHP Redis Queue
- 綫程池 部分代碼實現 筆記
- 如何在linux上下载github项目,在linux上使用github
- 结构光相机国产、非国产统计参数对比分析
- Android:从零开始打造自己的深度链接库(一):ARouter简介
- Google勇敢新世界:两个天才的相遇
- 下载文件中英文逗号导致下载失败
- Python可视化——matplotlib.pyplot绘图的基本参数详解