核PCA与PCA的精髓和核函数的映射实质
1.PCA简介
遭遇维度危机的时候,进行特征选择有两种方法,即特征选择和特征抽取。特征选择即经过某种法则直接扔掉某些特征,特征抽取即利用映射的方法,将高维度的样本映射至低维度。PCA(或者K-L变换),即Principal Component Analysis是特征抽取的主要方法之一。
PCA适用于非监督的学习的不带标签(带标签的样本,往往用LDA降维)的样本降维,特别是小样本问题。广义认为,这类样本属性之间的相关性很大,通过映射,将高维样本向量映射成属性不相关的样本向量。PCA的步骤是:
1.特征中心化。即每一维的数据都减去该维的均值。
2.计算协方差矩阵.
3.计算协方差矩阵的特征值和特征向量。
4.选取从大到小依次选取若干个的特征值对应的特征向量,映射得到新的样本集。
实际上,大的特征值表征这个映射向量——或者映射方向,能够使得样本在映射后,具有最大的方差。样本在这个方向最发散(stretched out)通常情况下,有用信息具有较大的方差,或者说较大的能量。反而言之,小的特征值对应的特征向量方向,样本映射后方差较小,也就是说噪声往往方差小(如高斯白噪声)。这是基于通常的情况,当然也可能说,高频信号往往类似于噪音(比如说图像噪声和边缘),也有小方差现象,此时可以利用到独立成分分析(Independent
Component Analysis)。
可以证明,PCA映射过程满足一定最优性:
1.重建误差最小理论(reconstruction error)。误差的2范数等于未使用(剩下)的映射向量对应的协方差特征值之和。
2.最大方差理论。在信号处理中认为信号具有较大的方差,噪声有较小的方差,信噪比(信号与噪声的方差比)越大越好。
3.最小平方误差理论。简单理解,利用2范数求导可以得到样本中心最能代表所有的样本点,倘若从样本中心画出一条直线,在高维空间拟合样本集(即所有的样本离这条直线的垂直距离之和最短)。求出来的直线的方向,也是映射向量的方向,且大特征向量对应的方向所得到的直线,该平方误差最小。
2.Kernel-PCA
可以认为,PCA是一个去属性相关性的过程,这里的相关性主要指的是线性相关性,那么对于非线性的情况,怎么办,那这就涉及到Kernel—PCA即所谓的核PCA(KPCA)。直观来说,核PCA就是将原样本通过核映射后,在核空间基础上做PCA降维。自然而然,考虑用于分解的协方差矩阵,也应该变化。
PCA的协方差矩阵为
KPCA的协方差矩阵为
l为样本总数。我们先假设样本在核映射Φ(x)后也是中心化的——样本集经过Φ(x)一一映射后,均值仍然为0,即
但是,存在这样的一个问题,核函数是定义2个向量之间的关系,即 K(x,y)=(Φ(x)•Φ(y))=Φ(x)'Φ(y),结果是一个值。换句话说,我们不显式的知道Φ(x)的具体映射机制。那么这个映射后的协方差矩阵C当然无法显式计算。
等等,我们忽略了问题的实质,我们是希望获得经过映射后降维的样本向量,只要我们希望得到这个向量,怎么获得的,我们并不关心。KPCA的精髓就在于间接得到降维度后样本向量。
我们先定义向量内积(X•Y)=X'*Y。
假设我们已经得到KPCA协方差C,和它分解后的得到的某个映射向量v,对应特征值为λ。对于任意一个在核空间表征的样本Φ(Xk)。一定存在:
公式1:
考虑到。对于PCA的这个过程,可以理解为——希望得到一组基向量,用这组基向量最大可能的线性表征原来的样本,基向量的个数即是被降维后的样本维度,原来样本与某个基向量的内积即是这种线性表征的加权系数。所有内积组合成向量,就是降维后的样本向量。
那么,经过矩阵变换,任意一个映射向量V,也可以由所有训练样本线性表征。即:
公式2:
定义l*l维的矩阵K的第(i,j)元素为:
公式3
将所有映射后的样本将写成矩阵,带入公式1。利用公式2和公式3,可以的求出:
公式4
现在显式求映射向量V的问题就转换成求系数向量α的问题了。知道了α,我们就可以利用公式2加权所有的样本集求出映射向量V。
当然,求解公式4得到α等同于求解下列公式,这也是矩阵分解的问题。α实际为下列等式的特征向量:
至此,我们知道,Kernel-PCA真正需要分解的即是矩阵K,加权系数向量α为K的特征向量。
考虑到的映射向量V为单位向量,对于第k个映射向量Vk,利用公式2,有:
αk和λk分别是矩阵K分解后对应的第k个特征向量和特征值。此时K的特征向量或者V的加权系数向量αk,要在单位矩阵的基础上进一步归一化(除以根号下λk)。
总结:KPCA的步骤:
1.利用核方程K(x,y)计算矩阵K。
2.PCA分解矩阵矩阵K,获得前M个单位化映射向量V
3.对于每个α,对它再次除以对应的特征值λ的开方,进行再次"归一化"
4.对于新的样本x,分别在1-M个映射向量上映射(作内积),第k(1<=k<=M)个映射结果等于:注意到,这里利用系数向量α表征映射向量V,又再次利用核函数的定义,间接求出映射(内积)结果。由于x在核空间的映射Φ(x)不清楚,所以映射向量V实际是无法求出的。
5.将M个内积结果按列排列,即是原来数据映射成降维后的M维特征向量。
3.Kernel-PCA的映射样本中心化问题
实际上,我们是很难满足最初的假设——映射后样本仍旧中心化这一前提,即
现在考虑样本集映射后非归一化,我们令第i个样本集的映射结果简化形式:
代表
重新定义实际目标分解矩阵K,假设现在的样本集长度为N。则对样本在核映射空间中心化后求得的目标分解矩阵K的第(i,j)个元素为:
同理,仍然可以转换到不显式知道Φ(x)的映射机制,间接求得映射后样本特征向量的目的。
4.常见的核函数和多项式核显式映射机制
常见的核函数如下:
还有其他的一些核函数,具体可见:【模式识别】SVM核函数
我们这里分析多项式核的基本模式:
对于上面描叙多项式核,可以化简为上面基本模式(将a乘入x,将c开根号,分别添加为x,y的一项)
考虑x,y均为2维的情况,当d=2时,实际是在计算
可以看出,多项式核的Φ(x)映射机制,是将其映射至了3维空间(尽管上式写作4维,但x1x2==x2x1,故有意义的只有3维)。
实际上,倘若样本x为p维,多项式核的映射结果实际上是----多项式(x1+x2+...........xp).^d完全分解合并后剩下的项,去掉加号这些项(包括系数)构成的向量,即是映射后的结果。
如上(x1+x2).^2映射成了3维空间。总结而言,p维特征向量,在多项式的Φ(x)映射后维度表示为排列组合是C(d,d+p-1)。
当然,若x仍旧为p维,且多项式核为以下形式:
对应Φ(x)映射后维度表示为排列组合是C(d,d+p)。因为c可以开根号分别添加为x,y的一项。
到此,核PCA讲完了。
对于Kernel-PCA。是不是可以这样认为:传统的PCA去掉了属性之间的线性相关性;而KPCA关注于样本的非线性相关:它隐式地将样本映射至高维(相对于原样本维度)后属性之间又变为线性相关,即KPCA的实质:
1.用高维样本属性(核映射)的线性相关尽量(拟合,有损)表征了低维样本属性的非线性相关
2.间接使用PCA去掉了高维属性的线性相关
高斯核
K(x1,
x2) =
exp(−∥x1
−
x2∥2/2σ2),这个核就是最开始提到过的会将原始空间映射为无穷维空间的那个家伙。不过,如果
σ
选得很大的话,高次特征上的权重实际上衰减得非常快,所以实际上(数值上近似一下)相当于一个低维的子空间;反过来,如果
σ
选得很小,则可以将任意的数据映射为线性可分——当然,这并不一定是好事,因为随之而来的可能是非常严重的过拟合问题。不过,总的来说,通过调控参数
σ,高斯核实际上具有相当高的灵活性,也是使用最广泛的核函数之一。
一句话总结KPCA:间接使用核映射去掉原样本属性之间非线性相关性,使用PCA和核函数间接达到降维的目的。
我整理了一些PCA和KPCA的精炼文档5篇,点击下载《PCA和KPCA》
参考:
1.特征降维-PCA(Principal Component Analysis)
4.特征降维-PCA
核PCA与PCA的精髓和核函数的映射实质的更多相关文章
- 主成分分析(PCA)原理总结
主成分分析(Principal components analysis,以下简称PCA)是最重要的降维方法之一.在数据压缩消除冗余和数据噪音消除等领域都有广泛的应用.一般我们提到降维最容易想到的算法就 ...
- Python机器学习笔记 使用scikit-learn工具进行PCA降维
之前总结过关于PCA的知识:深入学习主成分分析(PCA)算法原理.这里打算再写一篇笔记,总结一下如何使用scikit-learn工具来进行PCA降维. 在数据处理中,经常会遇到特征维度比样本数量多得多 ...
- 深入学习主成分分析(PCA)算法原理(Python实现)
一:引入问题 首先看一个表格,下表是某些学生的语文,数学,物理,化学成绩统计: 首先,假设这些科目成绩不相关,也就是说某一科目考多少分与其他科目没有关系,那么如何判断三个学生的优秀程度呢?首先我们一眼 ...
- 机器学习算法总结(九)——降维(SVD, PCA)
降维是机器学习中很重要的一种思想.在机器学习中经常会碰到一些高维的数据集,而在高维数据情形下会出现数据样本稀疏,距离计算等困难,这类问题是所有机器学习方法共同面临的严重问题,称之为“ 维度灾难 ”.另 ...
- 05-03 主成分分析(PCA)
目录 主成分分析(PCA) 一.维数灾难和降维 二.主成分分析学习目标 三.主成分分析详解 3.1 主成分分析两个条件 3.2 基于最近重构性推导PCA 3.2.1 主成分分析目标函数 3.2.2 主 ...
- Probabilistic PCA、Kernel PCA以及t-SNE
Probabilistic PCA 在之前的文章PCA与LDA介绍中介绍了PCA的基本原理,这一部分主要在此基础上进行扩展,在PCA中引入概率的元素,具体思路是对每个数据$\vec{x}_i$,假设$ ...
- 线性判别分析(LDA), 主成分分析(PCA)及其推导【转】
前言: 如果学习分类算法,最好从线性的入手,线性分类器最简单的就是LDA,它可以看做是简化版的SVM,如果想理解SVM这种分类器,那理解LDA就是很有必要的了. 谈到LDA,就不得不谈谈PCA,PCA ...
- 机器学习中的数学-线性判别分析(LDA), 主成分分析(PCA)
转:http://www.cnblogs.com/LeftNotEasy/archive/2011/01/08/lda-and-pca-machine-learning.html 版权声明: 本文由L ...
- 机器学习中的数学(4)-线性判别分析(LDA), 主成分分析(PCA)
版权声明: 本文由LeftNotEasy发布于http://leftnoteasy.cnblogs.com, 本文可以被全部的转载或者部分使用,但请注明出处,如果有问题,请联系wheeleast@gm ...
随机推荐
- 用cocos2d-html5做的消除类游戏《英雄爱消除》(1)——系统主菜单
系统主菜单如下图所示: 首先,介绍下这个主菜单,它包含了一个动画logo以及一个按钮选项,动画logo每隔1秒钟切换一张图片,点击相应的按钮选项会切换不同的游戏场景. 下面看下这个界面的源码: /** ...
- 2018年长沙理工大学第十三届程序设计竞赛 G 逃离迷宫 【BFS】
链接:https://www.nowcoder.com/acm/contest/96/G 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536 ...
- Python decorator @property
@property广泛应用在类的定义中,可以让调用者写出简短的代码,同时保证对参数进行必要的检查,这样,程序运行时就减少了出错的可能性 下面的链接很好的阐述了@property的概念和应用 http: ...
- AC自动机的一点理解
\(fail\)指针:指向最长的在\(tire\)里出现的后缀 比\(tire\)多出来的子边:原来的\(tire\),我们失配后又得返回根结点再次匹配,而加入这些边后只需要花\(strlen(s)\ ...
- linux bash缓存
http://www.xuebuyuan.com/296675.html 在已经运行的系统中更改了某些以前存在于PATH环境变量所指明的目录中的程序的存放目录后可能出现No such file or ...
- GetWindowRect和GetClientRect比较学习
一:关于坐标 MFC中绘图时经常涉及到坐标计算,GetWindowRect和GetClientRect这两个函数,是获取逻辑坐标系中窗口或控件(其实也是窗口)大小和坐标的常用函数了,有什么不一样的? ...
- 在webBrowser中取Cookie的方法
在很多情况下我们会使用间进程的webBrowser去实现一些网页的请求和抓去,这个时候有部分网页是取不到Cookie的,那怎么办呢?下面我提供一个方法,应该99%的都能取到, //取当前webBrow ...
- scp的用法
scp是有Security的文件copy,基于ssh登录.命令基本格式:scp [OPTIONS] file_source file_target OPTIONS:-v 和大多数 linux 命令中的 ...
- UVA 1664 Conquer a New Region (并查集+贪心)
并查集的一道比较考想法的题 题意:给你n个点,接着给你n-1条边形成一颗生成树,每条边都有一个权值.求的是以一个点作为特殊点,并求出从此点出发到其他每个点的条件边权的总和最大,条件边权就是:起点到终点 ...
- ANT+JMETER集成
一.ant安装 环境准备: 1.安装jdk http://www.oracle.com/technetwork/java/javase/downloads/index.html 注意:最好与jmete ...