前言
- 待更新
在谈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} maxwwt∑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无监督学习》