感谢大佬们的文章
1、(46条消息) Gram矩阵_wangyang20170901的博客-CSDN博客_gram矩阵
2、数据降维: 核主成分分析(Kernel PCA)原理解析 - 知乎
--------------------------------------------------KPCA应用解释----------------------------------------------------------
如果理解PCA的基础上去理解KPCA,简直就是相反的操作。PCA是有损降维,将多维数据降到低维且最大的保留重要的信息量,而KPCA是将低维往高维升,在低维中无法划分开的数据在高维却十分的容易简单,来张图片就能理解了。
图1是二维通过核为高斯核变成的三维图2。还有很多核等等再说,这里就将在二维不容易分离的数据点在三维就很容易分离开了。
打波广告不太理解PCA的可以看这篇:PCA(主成分分析法)的理解笔记及算法的实现_CMaking的博客-CSDN博客
-----------------------------------------------------KPCA总结步骤--------------------------------------------------------
废话不多先上步骤
1、选择核函数,组合成Gram matrix K=k(xi,xj)
2、标准化K,即,其中
是nxn维的全是
的矩阵
3、解出特征值核特征向量,即
4、标准化,
,模为
5、最后就可以把任何一个数据点投影到主成分向量上了
是投影后的数据点。
----------------------------------------------------------------------------------------------------------------------
刚刚说了KPCA和PCA一堆塑料兄弟,在PCA中求协方差矩阵的特征值和特征向量,那么我们现在推广到高维的
,这个
是低维映射到高维空间的函数,简单理解为低维空间的点通过加工操作变成了高维空间的数据点就好了。
1、我们假设均值为0,即,注意这里我们是假设的均值为0,等等后面要操作的。
2、我们计算高维协方差矩阵:,
是代表高维协方差矩阵的意思不是平均值。
3、求的特征值和特征向量。
就这样,但是是个高维的非常非常的高,高维处理起来就非常的麻烦,那么我们接下来针对这个问题进行下面的推导。
首先根据特征向量的定义:
是非零的特征向量
我们把带入到高维协方差矩阵中
,即得到:
其中内积是个常数再乘以一个
把他们合并起来,就可以得到
,
这样就把刚刚要找的转化成找一些系数
,只要能找到这个系数就能找到这个向量了。
------------------------------------------------------------------------------------------------------------------------------
我们接下来将带入到
中就会得到
是不是看到很多(x)头很大,那么我们接下来就定义
,将k带到上式中可以得到
两边继续同乘,k=1,....,N
我们在定义一个Gram matrix,他是任意K个向量的内积所组成的矩阵。
上链接: Gram矩阵_wangyang20170901的博客-CSDN博客_gram矩阵
,k是对称矩阵。
上式整理一下就有了,两边相消K得到
,令
整理得到
,然后解出特征值特征向量就好了。(当然没这么简单)
-------------------------------------------------------z向量标准化--------------------------------------------------------
注意的是我们在PCA中要求特征向量要单位化的即||||=1才行,在KPCA也一样那么我们标准化:
上式告诉我们单位化 我们只需要
,到这里我们就结束了嘛?还没有,上式中
还有我们讨厌的
存在,我们就把某个数据点投影到
试试,即得到
我们为什么要把他投影到上?我们的目的是求主方向,那么主方向怎么求就是把一个数据点投影到主方向上,既然是这样我们就不用管
()的定义了反正都可以直接计算出投影后的向量了。
最后一个问题,我刚刚一开始是假设是归一化后的,那么这里我们标准化好咯
这里用刚刚提到的Gram matrix代替里面的k就会得到,其中
是nxn维的全是
的矩阵。这一步使得K被标准化了
-----------------------------------------------------和函数------------------------------------------------------------------
核的选择要去试要去做实验才知道那个效果好,除非你很了解你的数据是什么分布的,不过在现实中不太可能会知道。
如果有错误欢迎留言指出,共同进步