
姓名 | |
学号 | |
班号 | |
电子邮件 | |
手机号码 |
1 实验目的
实现一个PCA模型,能够对给定数据进行降维(即找到其中的主成分)
2 实验要求及实验环境
2.1 实验要求
测试:
-
首先人工生成一些数据(如三维数据),让它们主要分布在低维空间中,如首先让某个维度的方差远小于其它唯独,然后对这些数据旋转。生成这些数据后,用你的PCA方法进行主成分提取。
-
找一个人脸数据(小点样本量),用你实现PCA方法对该数据降维,找出一些主成分,然后用这些主成分对每一副人脸图像进行重建,比较一些它们与原图像有多大差别(用信噪比衡量)。
2.2 实验环境
Windows 10, Python 3.8.5, Jupyter notebook
3 实验原理
PCA(主成分分析,Principal Component Analysis)是最常用的一种降维方法。PCA的主要思想是将D维特征通过一组投影向量映射到K维上,这K维是全新的正交特征,称之为主成分,采用主成分作为数据的代表,有效地降低了数据维度,且保留了最多的信息。关于PCA的推导有两种方式:最大投影方差和最小投影距离。
- 最大投影方差:样本点在这个超平面上的投影尽可能分开
- 最小投影距离:样本点到这个超平面的距离都足够近
3.1 中心化
在开始PCA之前需要对数据进行预处理,即对数据中心化。设数据集 X = { x 1 , x 2 , . . . , x n } X=\{x_1, x_2, ..., x_n\} X={ x1,x2,...,xn},其中 x i = { x i 1 , x i 2 , . . . , x i d } x_i = \{x_{i1}, x_{i2}, ..., x_{id}\} xi={ xi1,xi2,...,xid},即 X X X 是一个 n × d n \times d n×d 的矩阵。则此数据集的中心向量(均值向量)为:
μ = 1 n ∑ i = 1 n x i \mu = \frac 1 n \sum_{i=1}^n x_i μ=n1i=1∑nxi
对数据集每个样本均进行操作: x i = x i − μ x_i = x_i - \mu xi=xi−μ,就得到了中心化后的数据,此时有 ∑ i = 1 n x i = 0 \displaystyle\sum_{i=1}^n x_i=0 i=1∑nxi=0。
中心化可以给后面的计算带来极大的便利,因为中心化之后的常规线性变换就是绕原点的旋转变化,也就是坐标变换。此时,协方差为 S = 1 n ∑ i = 1 n x i x i T = 1 n X T X S=\displaystyle\frac 1 n\sum_{i=1}^n x_i x_i^T=\frac 1 n X^T X S=n1i=1∑nxixiT=n1XTX
设使用的投影坐标系的一组标准正交基为 U k × d = { u 1 , u 2 , . . . , u k } , k < d , u i = { u i 1 , u i 2 , . . . , u i d } U_{k\times d}=\{u_1, u_2, ..., u_k\},\ k<d, u_i = \{u_{i1}, u_{i2}, ..., u_{id}\} Uk×d={ u1,u2,...,uk}, k<d,ui={ ui1,ui2,...,uid},故有 U U T = 1 UU^T=1 UUT=1,使用这组基变换中心化矩阵 X X X,得降维压缩后的矩阵 Y n × k = X U T Y_{n \times k}=XU^T Yn×k=XUT,重建得到 X ^ = Y U = X U T U \hat X=YU=XU^TU X^=YU=XUTU。
3.2 最大投影方差
对于任意一个样本 x i x_i xi,在新的坐标系中的投影为 y i = x i U T y_i=x_iU^T