先看一眼PCA与KPCA的可视化区别:

PCA算法是怎么跟协方差矩阵/特征值/特征向量勾搭起来的?里已经推导过PCA算法的小半部分原理.
本文假设你已经知道了PCA算法的基本原理和步骤.


从原始输入空间到特征空间

普通PCA算法的输入:

  • 训练数据集\(D={x_1, \dots, x_m}\), \(x_i \in R^n\).
  • 目标降维维度: \(d\)
  • 新的测试数据\(x\)

Kernel PCA则需要在输入中加入一个指定的 kernel function \(\kappa\).
我们已经知道, 每个合法的 kernel function, 即对称和正半定的函数, 都能找到至少一个对应的feature mapping function \(\Phi\). 现在\(\kappa\)是已知的, \(\Phi\)是隐藏的:存在, 但对我们来说未知. 用\(\Phi\)把每个训练样本\(x_i\)映射到一个特征空间\(H\), 得到\(z_i\):
\[
z_i = \Phi(x_i)
\qquad
Z =
\left[
\begin{matrix}
z_1^T \\
z_2^T \\
\vdots \\
z_m^T
\end{matrix}
\right]
\]

均值化处理, 使每个维度的均值为0

均值向量:
\[
\mu = \frac 1m Z^T \left[\begin{matrix}1 \\ 1 \\ \vdots \\1\end{matrix}\right]_{m\times 1} = \frac 1m Z^T \beta
\]
从\(Z\)中每一行都减去\(\mu^T\):
\[
\bar Z = Z - \beta \mu^T = Z - \frac 1m \beta \beta^T Z
\]

协方差矩阵正交对角化

这一步有点绕.
因为协方差矩阵\(C = \bar Z^T \bar Z\)中有未知函数\(\Phi\), 所以没办法直接对角化. 在之前推导kernel svm和kernel linear regression算法的过程中, 我们都使用了kernel matrix:
\[
K =
\left [
\begin{matrix}
\Phi(x_1)^T \Phi(x_1), &\Phi(x_1)^T \Phi(x_2), &\dots &\Phi(x_1)^T \Phi(x_n) \\
\vdots &\dots &\dots &\vdots \\
\Phi(x_n)^T \Phi(x_1), &\Phi(x_n)^T \Phi(x_2), &\dots &\Phi(x_n)^T \Phi(x_n)
\end{matrix}
\right ]
\]
这次也不例外.
先看这个类似于\(K\)的均\(K\)矩阵:
\[
\bar K = \bar Z \bar Z^T
\]
假设\(\bar K\)有一个特征值\(\lambda\),对应的已规范化特征向量为\(u\):
\[
\bar Z \bar Z^T u = \lambda u
\]
两边同时左乘一个\(\bar Z^T\):
\[
\bar Z^T \bar Z \bar Z^T u = \bar Z^T\lambda u
\]
\[
\to C \bar Z^T u =\lambda \bar Z^Tu
\]
这代表\(\bar Z^T u\)是协方差矩阵\(C\)的特征向量, 对应的特征值也是\(\lambda\).
所以, 我们只需要规范正交对角化\(\bar K\), 就能对角化\(C\). 规范正交对角化操作的对象为:
\[
\bar K = \bar Z \bar Z^T = ( Z - \frac 1m \beta \beta^T Z)( Z^T - \frac 1m Z^T \beta \beta^T) = ZZ^T - \frac 1m \beta \beta^T ZZ^T - \frac 1m ZZ^T \beta \beta^T + \frac 1{m^2} \beta \beta^T ZZ^T \beta \beta^T = K - \frac 1m \beta \beta^T K - \frac 1m K\beta \beta^T + \frac 1{m^2} \beta \beta^T K \beta \beta^T
\]

特征向量规范化

由\(\bar K\)的规范化特征向量\(u\), 我们可以得到\(C\)的特征向量\(\bar Z^Tu\), 但它不一定是单位向量, 所以我们还要对它进行规范化处理.
\[
||u||^2 = u^T\bar Z \bar Z^Tu = u^T\lambda u = \lambda
\]
\[
p = \frac {\bar Z^Tu}{||\bar Z^Tu||} = \frac {\bar Z^Tu}{\sqrt \lambda}
\]
注意到了吧, 这里还是有\(\bar Z\)存在, 而\(\bar Z = Z - \frac 1m \beta \beta^T Z\), \(Z\)因为包含未知的\(\Phi\)所以也是未知的. 但是PCA的最终目的是降维, 会有一个输入向量\(x\), 到时又可与\(Z\)配合起来, 构成\(\kappa\).

对向量\(x\)进行降维操作

中间没写出来的步骤, 即特征值降序排列取前\(d\)个对应的特征向量, 与普通的PCA是一样的.
降维操作通过\(x\)在一个基上的投影操作即可说明.
\[
p^T\Phi(x) = \frac {u^T \bar Z \Phi(x)}{\sqrt \lambda} = \frac 1{\sqrt \lambda} u^T ( Z - \frac 1m \beta \beta^T Z) \Phi(x) = \frac 1{\sqrt \lambda} u^T (k - \frac 1m \beta \beta^T k) = \frac 1{\sqrt \lambda} u^T (I_{m \times m} - \frac 1m \beta \beta^T)k
\]
其中, \(\lambda\)与\(u\)分别是\(\bar K\)的特征值和对应的规范化特征向量,
\[
k =
\left [
\begin{matrix}
\kappa(x_1, x) \\
\kappa(x_2, x) \\
\vdots \\
\kappa(x_m, x) \\
\end{matrix}
\right]
\qquad
\beta = \left[\begin{matrix}1 \\ 1 \\ \vdots \\1\end{matrix}\right]_{m\times 1}
\]

Kernel Methods (5) Kernel PCA的更多相关文章

  1. Kernel Methods (4) Kernel SVM

    (本文假设你已经知道了hard margin SVM的基本知识.) 如果要为Kernel methods找一个最好搭档, 那肯定是SVM. SVM从90年代开始流行, 直至2012年被deep lea ...

  2. Kernel Methods (2) Kernel function

    几个重要的问题 现在已经知道了kernel function的定义, 以及使用kernel后可以将非线性问题转换成一个线性问题. 在使用kernel 方法时, 如果稍微思考一下的话, 就会遇到以下几个 ...

  3. Kernel Methods (3) Kernel Linear Regression

    Linear Regression 线性回归应该算得上是最简单的一种机器学习算法了吧. 它的问题定义为: 给定训练数据集\(D\), 由\(m\)个二元组\(x_i, y_i\)组成, 其中: \(x ...

  4. Kernel Methods - An conclusion

    Kernel Methods理论的几个要点: 隐藏的特征映射函数\(\Phi\) 核函数\(\kappa\): 条件: 对称, 正半定; 合法的每个kernel function都能找到对应的\(\P ...

  5. 核方法(Kernel Methods)

    核方法(Kernel Methods) 支持向量机(SVM)是机器学习中一个常见的算法,通过最大间隔的思想去求解一个优化问题,得到一个分类超平面.对于非线性问题,则是通过引入核函数,对特征进行映射(通 ...

  6. PRML读书会第六章 Kernel Methods(核函数,线性回归的Dual Representations,高斯过程 ,Gaussian Processes)

    主讲人 网络上的尼采 (新浪微博:@Nietzsche_复杂网络机器学习) 网络上的尼采(813394698) 9:16:05 今天的主要内容:Kernel的基本知识,高斯过程.边思考边打字,有点慢, ...

  7. Kernel methods on spike train space for neuroscience: a tutorial

    郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布! 时序点过程:http://www.tensorinfinity.com/paper_154.html Abstract 在过去的十年中,人 ...

  8. Kernel Methods for Deep Learning

    目录 引 主要内容 与深度学习的联系 实验 Cho Y, Saul L K. Kernel Methods for Deep Learning[C]. neural information proce ...

  9. Kernel Methods (1) 从简单的例子开始

    一个简单的分类问题, 如图左半部分所示. 很明显, 我们需要一个决策边界为椭圆形的非线性分类器. 我们可以利用原来的特征构造新的特征: \((x_1, x_2) \to (x_1^2, \sqrt 2 ...

随机推荐

  1. 转:HTML网页中插入视频各种方法

    现在如果要在页面中使用video标签,需要考虑三种情况,支持Ogg Theora或者VP8(如果这玩意儿没出事的话)的(Opera.Mozilla.Chrome),支持H.264的(Safari.IE ...

  2. IT菜鸟的第2天(输入输出,数据类型,运算符的使用)

    1:输入输出 另一种读写方法: 注释:Console.Write(Line{自动换行})是输入,string xxx = Console.ReadLine();是输出. string :字符串类型   ...

  3. window10 安装出现the error code is 2503错误的解决方法

    window10 安装出现the error code is 2503错误的解决方法:  设置 C:\WINDOWS\TEMP的权限

  4. zlog学习笔记(level)

    level.h /** * */ #ifndef __zlog_level_h #define __zlog_level_h #include "stdio.h" #include ...

  5. MathType 公式后的空格问题

    注册表编辑器修改 Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\Design Science\DSMT6\WordC ...

  6. indows 8上强制Visual Studio以管理员身份运行

    http://diaosbook.com/Post/2013/2/28/force-visual-studio-always-run-as-admin-on-windows-8 Windows 8的一 ...

  7. [py]给函数传递数组和字典

    一 , 1.1传元组 def fun(x): print x t=(1,2) fun(t) 1.2传元组 #传元组 def fun(x,y): print x,y # t=(1,2) t=(1,2,3 ...

  8. <实训|第八天>超级管理员管理linux用户行为权限附监控主机状态

    作为运维工程师,系统管理员,你最大的权力就是给别人分配权力,而且你还能时时控制着他们,今天就给大家介绍一下关于管理用户这一方面的前前后后.  开班第八天: 主要课程大纲:(下面我将把自己的身份定位成一 ...

  9. Jquery 页面首次加载方式

    $(document).ready(function(){ alert("111"); }); $(function(){ alert("222"); }); ...

  10. 你能熟练使用Dictionary字典和List列表吗?(转)

    命名空间System.Collections.Generic中有两个非常重要,而且常用的泛型集合类,它们分别是Dictionary<TKey,TValue>字典和List<T> ...