哈工大-机器学习-实验四:PCA

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

PCA模型实验

一、实验目的

目标

实现一个PCA模型,能够对给定数据进行降维(即找到其中的主成分)

测试

  1. 首先人工生成一些数据(如三维数据),让它们主要分布在低维空间中,如首先让某个维度的方差远小于其它唯独,然后对这些数据旋转。生成这些数据后,用你的PCA方法进行主成分提取。
  2. 找一个人脸数据(小点样本量),用你实现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|AB=AcosαB,现欲求AAA向量在BBB向量方向上的投影(即以该方向上的坐标),即∣A∣cosα=A⋅B∣B∣|A|cos\alpha = \frac{A\cdot B}{|B|}Acosα=BAB,倘若∣B∣=1|B|=1B=1,则简化为∣A∣cosα=A⋅B|A|cos\alpha = A\cdot BAcosα=AB

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} p1p2pR(a1a2aM)=p1a1p2a1

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值