降维总结之 kernel PCA。

kernel PCA: 讲它又不得不夹私货,kernel tricks。 相信大家对 kernel tricks 都不陌生,最直观的印象是它能把线性算法变成非线性, 深刻一点的理解是它自带样本空间映射功能, 可以把低维 feature 映射到高维:


从 kernel method 的定义可以看出其实它在本质上还是算点积,不同的是首先要把 x 映射到新 的空间里,通过映射函数\Phi(\cdot ) , 但是 kernel method 又有个别名叫 kernel tricks, 因为我们不用费劲去寻找映射函数的具体形式, 因为可以被很方便地计算出来。举个例子,大家一定都听说过 RBF kernel 有一个非常拉风的功能: 可以把 feature 映射到无穷维,推倒过程如下:


这样就把 RBF kernel 写成了两个无穷维的向量的点积形式,相当于把 x 给映射到了无穷维。 精髓的是,我们并不需要跑到无穷维上就能直接算出这个点积的值。这就是 kernel tricks, kernel PCA 顾名思义就是用上了 kernel tricks 的 PCA, 相信读到这里 大家基本上都能想到 kernel PCA 大概要怎么玩了:

1. 利用 kernel tricks 计算 kernel matrix K
2. 对K做SVD分解,找到topk的特征向量
3. 把高维数据 x 投射到 k 个特征向量上,从而把它降低到 k 维

但是这里有个很深的坑, 而且不得不承认作者自己在很长的一段时间里都是在这个坑里度过 的。假设样本 X 维度为 n\times m , 表示 n 个样本,m 个 feature, 按照 PCA 的思路, 我们要对协方差矩阵C=X^TX  做 SVD 分解,并且 C 的维度将会是m\times m; 但是 kernel PCA 的思路却是对 kernel matrix K 做 SVD 分解,如果是线性 kernel 的话, K=XX^T维度是 n\times n 。所以 kernel PCA 感觉与 PCA 南辕而北辙, 一个在协方差矩阵 C 上玩,另 一个在 kernel matrix K 上玩, 根本不是同一类东西。但其实他俩并不矛盾,kernel PCA 本质上确实是 PCA, 而且也确实继承了 kernel method 那 “把样本映射到高维空间” 的能力。下面让我们试着从传统 PCA 的角度来推出线性 kernel PCA:


这之中最重要的一步是 U=\alpha X ,就是把特征矩阵 U 用 X 来线性地表示出来(可以证明 U 一定可以如此地表示出来)。下一步就是把 X 映射到低维空间:

啰嗦了这么多,其实就是想要证明 PCA 不但可以从协方差矩阵 C 的角度入手, 也可以从 kernel matrix K 的角度入手,于是把上面的线性 kernel 换成其他的 kernel,就得到了 kernel PCA。kernel PCA 降维打击后的蛋卷是这样的

但是蛋卷貌似看不出 kernel PCA 的作用,感觉跟普通的 PCA 没什么区别, 不过下面这个例子就能看出它的效果。

原文链接:https://zhuanlan.zhihu.com/p/25097144

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值