Kernel PCA and De-Noisingin Feature Spaces
2024-09-08 11:39:06
引
kernel PCA通过\(k(x,y)\)隐式地将样本由输入空间映射到高维空间\(F\),那么问题来了,如何回来呢,即已知\(\Phi(x) \in F\),如何找到其原像\(x\)呢?可是呢:
- 这个问题不一定有解,因为从低维空间往高维空间映射往往不是满射;
- 即便有解,这个也不一定唯一。
但是这个方面的应用还是蛮多的啊,PCA可以通过抛去一些方向(方差小的部分)来去噪声(虽然效果似乎不是很好),kernel PCA如果也要这么做的话,就会产生上面的问题。这篇文章就是提出了一种可行的方法来解决这个问题。
通过最小化下式:
\[\min \limits_z \quad \rho (z)= \|\Phi(z) - \mathrm{P}_n \Phi(x)\|^2
\]
\]
其中\(\mathrm{P}_n(\cdot)\)是投影算子——将向量投影至由前n个特征向量构成的子空间之中。
主要内容
在化简上式之前,需要先进行一些必要的符号说明:
\[V^k = \sum \limits_{i=1}^l \alpha_i^k \Phi(x_i)
\]
\]
为第k个特征向量(F空间中的),其中\(l\)为样本个数(沿用了论文的符号)。
定义:
\[\beta_k = (V^k\cdot \Phi(x))=\sum \limits_{i=1}^l \alpha_i^k k(x, x_i)
\]
\]
那么:
\[\mathrm{P}_n \Phi(x) = \sum_{i=1}^n \beta_k V^k
\]
\]
现在,我们可以展开\(\rho(z)\):
其中\(\Omega\)为与\(z\)无关的项,通过梯度下降可以获得\(z\)。
如果我们假设\(k(x,y)=k(\|x-y\|^2)\),即\(k(x,x)\)为常数,则:
其中\(\Omega'\)为与\(z\)无关的项,\(\gamma_i = \sum_{k=1}^n \beta_k \alpha_i^k\)
容易计算其梯度为(差个常数2):
\[\nabla_z \rho(z) = \sum \limits_{i=1}^l \gamma_i k'(\|z-x_i\|)(z-x_i)
\]
\]
令其为0,得到一个必要条件:
\[z = \frac{\sum \limits_{i=1}^l \delta_i x_i}{\sum \limits_{i=1}^l \delta_i}
\]
\]
其中\(\delta_i = \gamma_i k'(\|z-x_i|^2\)
一个例子就是高斯核,这时:
选取一个合适的起始点(分母不为0),可以通过下式来迭代:
这么来想,一般的迭代方法是:
\[z_{t+1} = z_t - \eta \nabla \rho(z_t)
\]
\]
令\(\eta=1 / \sum_{i=1}^l \delta_i\)即可得(10),我不知道这么做是否有别的深意。
最新文章
- apache极简配置虚拟机
- C#按行读取文本并存放再数组内
- table的自动增加
- oracle 中的dual表简介与用法
- Spring IoC、DI入门小程序
- 教你安装漂亮的Arc GTK主题
- fuser命令小结
- 安卓手机修改host
- weewwe
- EditText操作收集
- details标签和summary标签
- log4net项目中如何配置,以下详解
- js 获取多少天前
- acdrem1083 人民城管爱人民 DP
- pymysql和 SQLAlchemy在python下的使用
- C# 打印PDF文档的10种方法
- PE文件常用结构体
- [转]通过设置nginx的client_max_body_size解决nginx+php上传大文件的问题
- Java多线程:CountDownLatch、CyclicBarrier 和 Semaphore
- .NET Core 从1.1升级到2.0记录(Cookie中间件踩坑)