0
点赞
收藏
分享

微信扫一扫

算法工程师面试之PCA降维


前言

  • 待更新

在谈PCA降维之前,得先学会奇异值分解,奇异值分解可以在我的博客中查看。

奇异值分解

定义

任意一个mn 矩阵,都可以表示为三个矩阵的乘积(因值分解)形式,分别是m阶正交矩阵,由降序排列的非负的对角线元素组成的mn 矩形对角矩阵和n阶正交矩阵。这个分解就叫奇异值分解。

性质


  • 奇异值分解一定存在,但不唯一
  • 奇异值分解可以看做是矩阵数据压缩的一种方法,即用因子分解的方式近似地表示原始矩阵,

降维:将高维数据在转换为低维数据,尽可能的减少数据信息的丢失

分量提取:找到可以混合原子字典以构建样本所需的过程


降维数据集常用方法之一是基于样本协方差矩阵的分析。通常,随机变量的信息内容与其方差成正比。


可以从很多维度考虑降维这个问题,既可以从获取“数据较大方差”的角度;也可以从“熵”的角度考虑这个问题。(也间接说明方差和这个熵其实考虑的点是相似的)。

一维空间

从方差的角度考虑

先考虑一维空间的情况(只有一个横坐标),也就是给定的数据只有一个值。在PCA降维中,我们考虑的过程是:对于给定数据 X [ x 1 , x 2 , . . . , x n ] X[x_1,x_2,..., x_n] X[x1​,x2​,...,xn​],考虑找出投影向量 w w w,想要得到的效果是:

m a x w w t ∑ w s . t . w t w = 1 \begin{aligned} &max_w \quad w^t\sum w\\ &s.t. w^tw = 1 \end{aligned} ​maxw​wt∑ws.t.wtw=1​

通过拉格朗日方法,可以将其转换成一个约束下的最优化问题,最后可以得到投影向量 w w w。

但是同时,我们也可以从另外一个角度(熵)考虑这个问题。

从熵的角度考虑

给定数据集 X = [ x 1 , x 2 , . . . , x m ] X=[x_1,x_2,...,x_m] X=[x1​,x2​,...,xm​],我们想要找到新的数据集 Z = [ z 1 , z 2 , . . . , z m ] Z=[z_1,z_2,...,z_m] Z=[z1​,z2​,...,zm​],其中 z i = A T x i z_i = A^Tx_i zi​=ATxi​。应用投影变化之后,我们希望具有以下内容:

d i m ( z i ) < < d i m ( x i ) H ( z ) ≈ H ( x ) \begin{aligned} &dim(z_i) << dim(x_i) \\ &H(z) \approx H(x) \end{aligned} ​dim(zi​)<<dim(xi​)H(z)≈H(x)​

H z H_z Hz​ 表示 z z z向量的熵。

如何做PCA?

计算样本的协方差矩阵?

优点:简单直接

缺点:效率很低,如果对于大型数据集来说,则非常费时。

奇异值分解

使用文本数据如何使用PCA?

图像数据比较规整,我们可以直接按照像素个数得到其维度信息,但是文本的embedding该怎么获取?

参考资料

  • 《python无监督学习》


举报

相关推荐

0 条评论