PCA降维

PCA降维

PCA降维也称为主成分分析法,是一种使用最广泛的数据降维算法。PCA的主要思想是将n维特征映射到k维上,这k维是全新的正交特征也被称为主成分,是在原有n维特征的基础上重新构造出来的k维特征。

案例分析

本文将一个三维数据降维成二维的数据,同时进行可视化。

基本原理

(1)标准化
设数据矩阵 / X = ( x i j ) m × n / /X=\left ( x_{ij} \right ) _{m\times n}/ /X=(xij)m×n/,设数据矩阵内元素,经过指标正向化和标准化处理过后的矩阵 / D = ( d i j ) m × n / /D=\left ( d_{ij} \right ) _{m\times n} / /D=(dij)m×n/
x j ˉ = 1 n ∑ i = 1 n x i j \bar{x_{j} } =\frac{1}{n}\sum_{i=1}^{n} x_{ij} xjˉ=n1i=1nxij
S j = ∑ i = 1 m ( x i j ′ − x j ′ ˉ ) n − 1 S_{j} =\sqrt{\frac{\sum_{i=1}^{m}\left ( x_{ij}^{'}-\bar{x_{j}^{'} } \right ) }{n-1} } Sj=n1i=1m(xijxjˉ)
d i j = x i j − x j ˉ S j d_{ij} =\frac{x_{ij}-\bar{x_{j} } }{S_{j} } dij=Sjxijxjˉ
(2)降维

  1. 计算相关系数矩阵:计算相关系数矩阵R,使用皮尔逊相关系数计算各指标间的相关系数,即列与列之间的相关系数。
  2. 计算R的特征值和特征向量:计算出特征值并把它们按照从大到小的顺序排列,对应的特征向量也相应排列。特征值为: / λ 1 ≥ λ 2 ≥ ⋯ λ n ≥ 0 / /\lambda _{1} \ge \lambda _{2} \ge \cdots \lambda _{n} \ge 0/ /λ1λ2λn0/,其对应的特征向量为: / e j = ( l 1 , l 2 , ⋯ l n ) / /e_{j} =\left ( l_{1} , l_{2} ,\cdots l_{n} \right ) / /ej=(l1,l2,ln)/
  3. 计算主成成分贡献率及累计贡献率: 设第j项指标贡献率为 / a j = λ j ∑ j = 1 n λ j / /a_{j} =\frac{\lambda _{j} }{\sum_{j=1}^{n} \lambda _{j}} / /aj=j=1nλjλj/,设前p项指标累计贡献为 / a s j = ∑ j = 1 p λ j ∑ j = 1 n λ j / /a_{sj} =\frac{\sum_{j=1}^{p}\lambda _{j} }{\sum_{j=1}^{n} \lambda _{j}} / /asj=j=1nλjj=1pλj/
    若前p个指标累计累计贡献率大于85%,则可以认为这p个主成分可以综合体现指标。降维后的矩阵如下: / M i j = D m n × [ l 1 , l 2 , ⋯ l p ] / /M_{ij} =D_{mn} \times \left [ l_{1},l_{2},\cdots l_{p} \right ] / /Mij=Dmn×[l1,l2,lp]/

PCA降维的Matlab代码

clc
clear
t=-4:0.05:4*pi;x=cos(t);y=sin(t);z=t;
scatter3(x,y,z,'g');
hold on
data=[x;y;z]';
data=zscore(data);
R=corr(data);
%计算特征向量和特征值
[V,D]=eig(R);  %V特征向量,D特征值对角线矩阵
lam=diag(D);%取出对角线元素
%对特征值从大到小排列
[lam_sort,index]=sort(lam,'descend');
V_sort=V(:,index);
gong=lam_sort./sum(lam_sort); %贡献率
cgong=cumsum(gong); %累计贡献率
index1=2; %找到累计贡献达到85%的位置
M=data*V_sort;
M=M(:,1:index1);  %这就是得到的新的累计贡献率超过85%主成分
plot(M(:,1),M(:,2),'b')
hold on
title('三维数据降为两维数据')
legend('降维前的三维数据','降维后的二维数据')
xlabel('x')
ylabel('y')
zlabel('z')

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值