PCA模型实验
一、实验目的
目标
实现一个PCA模型,能够对给定数据进行降维(即找到其中的主成分)
测试
- 首先人工生成一些数据(如三维数据),让它们主要分布在低维空间中,如首先让某个维度的方差远小于其它唯独,然后对这些数据旋转。生成这些数据后,用你的PCA方法进行主成分提取。
- 找一个人脸数据(小点样本量),用你实现PCA方法对该数据降维,找出一些主成分,然后用这些主成分对每一副人脸图像进行重建,比较一些它们与原图像有多大差别(用信噪比衡量)。
二、实验环境
- win10
- python 3.7.4
- pycharm 2020.2
三、数学原理
3.1 PCA的目的
PCA(PrincipalComponentAnalysis)PCA(Principal Component Analysis)PCA(PrincipalComponentAnalysis)是一种常用的数据分析方法。它通过线性变换将原始数据用一组线性无关的basebasebase来表示,可用于提取数据的主要特征分量,常用于高维数据的降维,以减少资源消耗。
3.2 内积与投影
向量的内积被定义为
(a1,a2...an)T⋅(b1,b2...bn)T=a1b1+a2b2+...anbn (a_1,a_2...a_n)^T \cdot (b_1,b_2...b_n)^T =a_1b_1+a_2b_2+...a_nb_n (a1,a2...an)T⋅(b1,b2...bn)T=a1b1+a2b2+...anbn
内积运算将两个向量映射为一个实数
它的几何意义在于:相当于一个向量在另一个向量方向上的投影乘以另一个向量的模长

例如,上图中A=(a1,a2),B=(b1,b2)A=(a_1,a_2),B=(b_1,b_2)A=(a1,a2),B=(b1,b2)
则A⋅B=∣A∣cosα∣B∣A\cdot B=|A|cos\alpha|B|A⋅B=∣A∣cosα∣B∣,现欲求AAA向量在BBB向量方向上的投影(即以该方向上的坐标),即∣A∣cosα=A⋅B∣B∣|A|cos\alpha = \frac{A\cdot B}{|B|}∣A∣cosα=∣B∣A⋅B,倘若∣B∣=1|B|=1∣B∣=1,则简化为∣A∣cosα=A⋅B|A|cos\alpha = A\cdot B∣A∣cosα=A⋅B
3.3 基变换
我们想要准确描述一个向量,首先需要一组基;然后给出该向量在各个基basebasebase方向上的投影即可。而我们对于基的要求就是线性无关且能“张成”对应的向量空间,通常使用正交基,因为正交基拥有一些良好的性质,但是非正交基也可以。
现在介绍基变换,一般的,如果我们有M个N维向量,想将其变换为由R个N维向量表示的新空间中,那么首先将R个基按行组成矩阵A,然后将向量按列组成矩阵B,那么两矩阵的乘积AB就是变换结果,其中AB的第m列为A中第m列变换后的结果。
数学表示为:
(p1p2⋮pR)(a1a2⋯aM)=(p1a1p1a2⋯p1aMp2a1p2a2⋯p2aM⋮⋮⋱⋮pRa1pRa2...pRaM) \begin{pmatrix} p_1\\ p_2\\ \vdots \\ p_R \end{pmatrix} \begin{pmatrix} a_1&a_2 & \cdots &a_M \end{pmatrix} =\begin{pmatrix} p_1a_1 &p_1a_2 & \cdots &p_1a_M\\ p_2a_1 &p_2a_2 & \cdots &p_2a_M\\ \vdots & \vdots& \ddots& \vdots\\ p_Ra_1 &p_Ra_2 &... &p_Ra_M\\ \end{pmatrix} ⎝⎜⎜⎜⎛p1p2⋮pR⎠⎟⎟⎟⎞(a1a2⋯aM)=⎝⎜⎜⎜⎛p1a1p2a1⋮

本文详细介绍了PCA模型的实现过程,包括数据生成、人脸数据降维与重构,以及信噪比分析。通过人工生成的二维和三维数据展示了PCA降维效果,以及在人脸识别中的应用,强调了PCA在高维数据处理中的关键作用和信息保留能力。
最低0.47元/天 解锁文章
2233

被折叠的 条评论
为什么被折叠?



