MATLAB小技巧(19)矩阵分析--主成分分析

MATLAB小技巧(19)矩阵分析--主成分分析

前言

MATLAB进行图像处理相关的学习是非常友好的,可以从零开始,对基础的图像处理都已经有了封装好的许多可直接调用的函数,这个系列文章的话主要就是介绍一些大家在MATLAB中常用一些概念函数进行例程演示!

主成分分析(Principal Component Analysis,PCA), 是一种统计方法。通过正交变换将一组可能存在相关性的变量转换为一组线性不相关的变量,转换后的这组变量叫主成分。在实际课题中,为了全面分析问题,往往提出很多与此有关的变量(或因素),因为每个变量都在不同程度上反映这个课题的某些信息。主成分分析首先是由K.皮尔森(Karl Pearson)对非随机变量引入的,尔后H.霍特林将此方法推广到随机向量的情形。信息的大小通常用离差平方和或方差来衡量。

进行主成分分析主要步骤如下:

  1. 指标数据标准化(SPSS软件自动执行);

  2. 指标之间的相关性判定;

  3. 确定主成分个数m;

  4. 主成分Fi表达式;

  5. 主成分Fi命名。

主成分分析法是一种降维的统计方法,它借助于一个正交变换,将其分量相关的原随机向量转化成其分量不相关的新随机向量,这在代数上表现为将原随机向量的协方差阵变换成对角形阵,在几何上表现为将原坐标系变换成新的正交坐标系,使之指向样本点散布最开的p 个正交方向,然后对多维变量系统进行降维处理,使之能以一个较高的精度转换成低维变量系统,再通过构造适当的价值函数,进一步把低维系统转化成一维系统。

搜寻资料的时候遇到的这个示例,这里分享给大家,MATLAB版本为MATLAB2015b。

一. MATLAB仿真

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%功能:矩阵分析--主成分分析法
%环境:Win7,Matlab2015b
%Modi: C.S
%时间:2022-06-25
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% 清空环境变量
clear all
clc

tic

A=[1	1/5	 1	1/5	 1/6   1/6
5	1	 5	1/2	 1/2   1/2
2	1/5	 1  1/4	 1/6   1/4
5	1/2	 4	1	 1/2   1/2
6	2	 6	2	 1	   1
6	2	 4	2	 1	   1];

h=zscore(A); %数据标准化
r=corrcoef(h); %计算相关系数矩阵
disp('计算的相关系数矩阵如下:');
disp(r);
[x,y,z]=pcacov(r);  %计算特征向量与特征值
s=zeros(size(z));
for i=1:length(z)
    s(i)=sum(z(1:i));
end
disp('由上计算出相关系数矩阵的前几个特征根及其贡献率:');
disp([z,s])
tg=[z,s];
f=repmat(sign(sum(x)),size(x,1),1);
x=x.*f;
n=input('请选择前n个需要计算的主成分:\n');
disp('由此可得选择的主成分系数分别为:');
for i=1:n
    xs(i,:)=(x(:,i)');
end
newdt=h*xs';
disp('以主成分的贡献率为权重,构建主成分综合评价模型系数:');
q=((z(1:n)./100)')
w=input('是否需要进行主成分综合评价?(y or n)\n');
if w==y
    df=h*x(:,1:n);
    tf=df*z(1:n)/100;
    [stf,ind]=sort(tf,'descend'); %按照降序排列
    disp('主成分综合评价结果排序:');
    px=[ind,stf]
else
    return;
end
toc

二. 仿真结果

计算的相关系数矩阵如下:
    1.0000    0.8374    0.9252    0.8344    0.9009    0.8941
    0.8374    1.0000    0.7750    0.9281    0.9766    0.9771
    0.9252    0.7750    1.0000    0.7110    0.8141    0.7946
    0.8344    0.9281    0.7110    1.0000    0.9749    0.9771
    0.9009    0.9766    0.8141    0.9749    1.0000    0.9967
    0.8941    0.9771    0.7946    0.9771    0.9967    1.0000

由上计算出相关系数矩阵的前几个特征根及其贡献率:
   90.7979   90.7979
    7.0303   97.8282
    1.4832   99.3114
    0.6456   99.9569
    0.0431  100.0000
    0.0000  100.0000

请选择前n个需要计算的主成分:
4
由此可得选择的主成分系数分别为:
以主成分的贡献率为权重,构建主成分综合评价模型系数:

q =

    0.9080    0.0703    0.0148    0.0065

是否需要进行主成分综合评价?(y or n)
y
主成分综合评价结果排序:

px =

    5.0000    2.5471
    6.0000    2.1629
    2.0000    0.1177
    4.0000   -0.0866
    3.0000   -2.2277
    1.0000   -2.5134

时间已过 13.348336 秒。

在这里插入图片描述

三. 小结

矩阵主成分分析方法的示例,之前记得有学习过这个,自己的理解是,在处理特征参数时可以进行应用,主要的应用场景也是在数据的降维上面,当信息出现冗余的时候,也会对预测识别之列的应用产生干扰,因此需要将冗余信息筛选调,而通过PCA降维,仅保留主要成分信息,将会得到更好的分类预测效果,或者是因硬件资源等问题,在不损失实际性能需求的基础上,可以通过降维将系统响应时间进行提升,也是PCA方法的一种应用场景。其实MATLAB已经集成了主成分分析的函数,这里相当于重写了一遍,做个笔记。每天学一个MATLAB小知识,大家一起来学习进步阿!

猜你喜欢

转载自blog.csdn.net/sinat_34897952/article/details/125462166
今日推荐