PCA
Swift Lv6

PCA 是最经典的降维算法。

预备知识

在统计学中,方差是用来度量单个随机变量的离散程度,而协方差则一般用来衡量两个随机变量的联合变化程度。

方差

$n$ 表示样本数量,$\bar{x}$ 表示观测样本的均值。

协方差

$\bar{x}, \bar{y}$ 分别表示两个随机变量所对应的观测样本均值。方差 $\sigma_x^2$ 可看作随机变量 $x$ 关于自身的协方差 $\sigma(x, x)$ 。

协方差矩阵

给定 $d$ 个随机变量 $x_k$ ,$k=1, 2, \dots, d$ 。我们用 $x_{ki}$ 表示随机变量 $x_k$ 中的第 $i$ 个观测样本,每个随机变量所对应的观测样本数量均为 $n$ 。

对于这些随机变量,我们可以根据协方差的定义,求出两两之间的协方差,即:

因此协方差矩阵为:

其中,对角线上的元素为各个随机变量的方差,非对角线上的元素为两两随机变量之间的协方差。

PCA

PCA(主成分分析)是比较常见的线性降维方法,通过线性投影将高维数据映射到低维数据中,所期望的是在投影的维度上,新特征自身的方差尽量大,方差越大特征越有效,尽量使产生的新特征间的相关性越小。

算法流程

假设有 $m$ 条数据,每条数据有 $n$ 个特征。 $x_j^i$ 表示第 $i$ 个样本的第 $j$ 个特征。

  1. 均值归一化:

    其中 $s_j = max(x_j) - min(x_j)$

  2. 计算协方差矩阵:

  3. 计算特征向量:

    其中左奇异向量、奇异值矩阵、右奇异向量:$U \in \mathbb{R}^{n \times n}, S \in \mathbb{R}^{n \times m}, V \in \mathbb{R}^{m \times m}$

  4. 从 $U$ 中取前 $k$ 列:$U_{reduce} \in \mathbb{R}^{n \times k}$

  5. 计算得到降维后的数据:$Z = U_{reduce}^T * X, Z \in \mathbb{R}^{k \times m}$

如何选择 $k$ ?

选择满足上述条件的最小 $k$

降维的应用

  • 数据压缩,减少占用的存储空间
  • 加快算法计算速度
  • 低维平面可以可视化数据

PCA为什么要用协方差矩阵的特征向量矩阵来做投影矩阵呢?

降维的目的就是“降噪”和“去冗余”。

“降噪”的目的就是使保留下来的维度间的相关性尽可能小,而“去冗余”的目的就是使保留下来的维度含有的“能量”即方差尽可能大。

我们要最大化方差来保留更多的信息。去噪。
有趣的是,协方差矩阵能同时表现不同维度间的相关性以及各个维度上的方差。

协方差矩阵度量的是维度与维度之间的关系,而非样本与样本之间。协方差矩阵的主对角线上的元素是各个维度上的方差(即能量),其他元素是两两维度间的协方差(即相关性)。

先看“降噪”,让保留下的不同维度间的相关性尽可能小,也就是说让协方差矩阵中非对角线元素都基本为零。达到这个目的的方式——矩阵对角化。

再看“去冗余”,对角化后的协方差矩阵,对角线上较小的新方差对应的就是那些该去掉的维度。我们只取那些含有较大能量(特征值)的维度,其余的就舍掉即可。

LDA

LDA(线性判别分析)是一种经典的降维方法。和PCA不考虑样本类别输出的无监督降维技术不同,LDA是一种监督学习的降维技术,数据集的每个样本有类别输出。

LDA分类思想简单总结如下:

  • 多维空间中,数据处理分类问题较为复杂,LDA算法将多维空间中的数据投影到一条直线上,将d维数据转化成1维数据进行处理。
  • 对于训练数据,设法将多维数据投影到一条直线上,同类数据的投影点尽可能接近,异类数据点尽可能远离。
  • 对数据进行分类时,将其投影到同样的这条直线上,再根据投影点的位置来确定样本的类别。

如果用一句话概括LDA思想:投影后类内方差最小,类间方差最大。

LDA和PCA异同

异同点 LDA PCA
相同点 1. 两者均可以对数据进行降维;
2. 两者在降维时均使用了矩阵特征分解的思想;
3. 两者都假设数据符合高斯分布;
不同点 有监督 无监督
降维最多降到 $k-1$ 维 降维多少没有限制
可以用于降维,还可以用于分类 只用于降维
选择分类性能最好的投影方向 选择样本点投影具有最大方差的方向
更明确,更能反映样本间差异 目的较为模糊

参考

Powered by Hexo & Theme Keep
Unique Visitor Page View