数据压缩课前任务二:主成分分析(PCA)

主成分分析(PCA)是一种通过正交变换将一组可能相关的变量转化为一组线性不相关的主成分的方法,用于降低数据复杂性。PCA的基本思想是找到数据的最大方差方向,以保留最多信息。实现步骤包括计算协方差矩阵、对角化并选取前K个最大特征值对应的特征向量。在Matlab中,PCA可以通过处理数据矩阵、计算协方差、求解特征值和特征向量来实现。
摘要由CSDN通过智能技术生成

何为主成分分析

主成分定义

利用正交变换对一系列可能相关的变量的观测值进行线性变换,从而投影成一系列线性不相关的值,即为主成分。

应用

在解决问题时,通过主成分分析可以在减少变量尽可能地保留主要信息,从而达到降低分析、解决问题难度的目的。

基本思想

其基本思想为将坐标轴移动到数据中央,并旋转坐标轴使数据在坐标轴上方差最大,即数据投影最为分散,从而保证更多的信息被保留下来。

P 个随机变量可以有 P 个主成分,只需按照上述思想并同时保证与之前的主成分协方差最小即可依次找出

实现 PCA 的步骤

数学基础

将数据表示为矩阵后,计算得到协方差矩阵 C。通过协方差矩阵对角化(即对角线上方差不为零,其余协方差部分为零,从而达到保留更多数据信息的目的)得到所需的 K 维基向量矩阵。然后通过矩阵乘法实现坐标变换及降维,得到变换后的数据矩阵。

实现步骤

(假设有 m 条 n 维数据)
1) 将每一条数据以列向量的形式组成 n×m 的矩阵 X
2)计算每行数据的平均值后,让每个数据减去其对应的平均值,得到新的数据矩阵 B
3)求出数据矩阵 X 的协方差矩阵 C = 1 m B ⋅ B T C= \frac {1}{m}B \cdot B^{T} C=m1BBT
4)求协方差矩阵的特征值及特征向量
5)将特征值按照从大到小的顺序排列,并取前 K 个对应的特征向量分别作为列向量组成特征向量矩阵 P
6)取   Y = P ⋅ X \ Y = P \cdot X  Y=PX 得到降维至 k 维的新数据矩阵

Matlab 代码实现举例

代码还不太对QAQ,还在想怎么改

X=[25 2;
    5 0.8;
   23 2.9;
   20 3.1;
   16 1.7;
   12 1.1;
    9 0.8;];
[a,b] = size(X);

Ave = sum(X)/a;
B = zeros(a,b);
for i = 1:b
    B(:,i) = X(:,i) - Ave(i);
end

C = (1 / a) * B * B'
value = eig(C);
value = sort(value,'descend')

d = 0;
for i = 1:a
    if value(i) ~= 0
        d = d + 1;
    end
end

P = zeros(d,d);
for i = 1:d
    P(i,i) = value(i);
end
P
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值