摘要 ——————————————————————————— 2
主板报警
1 引言 —————————————————————————— 3
2基于PCA的数据降维算法 ————————————————— 3
2.1 主元分析法 —————————————————————————— 3
2.2给定模型的主元分析法降维 ——————————————————— 3
2.3 主元分析法降维的部分代码实现及结果 —————————————— 5
3思考与拓展 ——————————————————————— 9
3.1 标准化矩阵 —————————————————————————— 9
3.2 协方差矩阵 —————————————————————————— 9
4 心得与体会 —————————————————————————— 10
参 考 文 献 ——————————————————————————— 11
附录1 —————————————————————————————— 12
附录2 —————————————————————————————— 15
基于主元分析法的数据降维研究
摘要:在科学研究中,我们经常会遇到大量的多维数据分析的问题,然而,对多维数据进行分析往往需要花费很大的人力、物力,因此,本文将介绍一种降维方法——主元分析法。通过主元分析法(Principal Component Analysis , PCA)对数据进行降维处理,将多个变量降维,以便于我们计算与分析。
关键词:主元分析法,PCA,降维
Abstract:In scientific rearch,we often encounter the problem of a large number of multidimensional data analysis. However, multidimensional data analysis often takes a lot of manpower and material.Thus, this article will introduce a dimension reduction method-- Principal Component Analysis.So we u Principal Component Analysis(PCA) to reduce the dimension of the data in order to make our calculation and analysis much easier.
Keyword: Principal Component Analysis,PCA, Dimensionality reduction
1
引言
随着时代的发展,当今社会的事物越来越往多元化发展,对于数据的处理也不例外。现今,2维、3维已远远不能满足我们的需求,取而代之的是更高的维数。然而,维数增加了,数据的准确性增加了,与此同时,却也增加了我们计算的难度,因此,我们便采用了一种数据降维的方法——主元分析法(Principal Component Analysis , PCA)。
通常,我们进行数据降维主要基于以下目的:
1.压缩数据以减少存储量
2.去除噪声的影响
3.从数据中提取特征以便于进行分类
4.将数据投影到低维可视空间,以便于看清数据的分布
2基于PCA的数据降维算法
2.1 主元分析法
主元分析(PCA)是一种掌握事物主要矛盾的统计分析方法,它可以从多元事物中解析出主要影响因素,揭示事物的本质,简化复杂的问题。[1]主元分析法是霍特林1933年首先提出来的,其计算主成分的目的是将高维数据投影到较低维空间。新的映射空间由原始数据变量的线性组合构成,从而大大的降低了投影空间的维数,又因为投影空间统计特征向量彼此正交,所以消除了变量间的关联性,而使得原始过程特性分析的复杂程度得到了大大的简化。
2.2 给定模型的主元分析法降维
给定模型如下,要求利用MATLAB 编程语言建立该模型的主元分析模型。
x1 = 8 + 0.1 × randn( 1000元宵节几号,1)
x2 = 11 + 0.2 × randn( 1000,1)
x3 = 17 + 0.3 × randn( 1000,1)
x4 = - 1.3 × x1 + 0.2 × x2 + 0.8 × x3
x5 = - 0.8 × x1 + 0.8 × x2 + 0.9 × x3
凉拌腐竹怎么做x6 = 5 + x2 - 0.3 × x3
x7 = - x1 + 0.8 × x2 + x4
x8 = x2 + x3
x是一个1000*8的矩阵,其8个列向量x1,x2,x3,···,x8是x的8个样本。使用主元分析法降维后,可以得到另一个具有m维的不相关向量X,m≤8.
具体实现步骤如下:
(1)对原始的1000*8矩阵进行标准化处理,即将每个变量的均值减掉,然后除以它的标准差,得到标准化矩阵A。
金刚经图片,其中
(2)计算A的协方差矩阵R(i,j):
协方差矩阵的定义:
设X=(X1,X2,···,Xn)T为n维随机变量,称矩阵
为n维随机变量X的协方差矩阵,也记为D(X),其中
=Cov(,),i,j=1,2,···,n
为X的分量的协方差(设它们都存在)。[2]
所以 ,
其中=Cov(,雨的繁体),i,j=1,2,···,8
(3)计算协方差矩阵R(i,j)的特征值矩阵D与特征向量V。
(4)计算贡献率gx:
先将特征值矩阵D的主要元素提取出来,转置后进行降序排列,得到行向量d1,以便于计算贡献率。相应的,特征值所对应的特征向量也要按照与特征值相同的顺序排列,一一对应,得到矩阵V1。然后,分别计算出每个特征值的贡献率,再分别计算前m项特征值和的贡献率,并一一与85%进行比较,直到大于85%为止,输出此时参与求和的特征值的个数m,即为主元个数。
(5)计算主元X
X(:,i)=A*V1(:,i)
(6)计算主元模型:
Xn= X(:,1)* V1(:,1)’+ X(:,2)* V1(:,2)’+···+X(:,8)V1(:,8)
’
至此,我们已经基本建立了原数据模型的主元分析模型。
2.3 主元分析法降维的部分代码实现及结果
在进行主程序之前,添加了清空数据库以及命令窗口的命令:clc;clean all;以方便后续操作及观察数据结果。
(1)标准化矩阵
Matlab中可以直接应用zscore()函数进行求解,其原理上面已经具体叙述,因此又可以用下列函数具体实现:夸父逐日原文
S=mean(x,1);
for i=1:size(x,1)
x0(i,:)=x(i,:)-S;
end
s=std(x,0,1);
for i=1:size(x,1)
a(i,:)=x0(i,:)./s;
end
(2)协方差矩阵
协方差矩阵在matlab中也有专门的函数可以求解,那就是cov()函数,由于cov函数的原理是:Cov(X,Y) = E{ [ (X-E(X) ] [ (Y-E(Y) ] },但是在本例中的最后一步应该除以n-1,而不是n,所以,我们又可以用下面的函数具体实现cov函数的功能:
for i=1:size(A,2)
for j=1:size(A,2)
R(i,j)=sum((A(:,i)-mean(A(:,i))).*(A(:,j)-mean(A(:,j))))/(size(A,1)-1);移动硬盘排行榜
end
end
实验结果:
标准化矩阵的协方差矩阵:
1.0000 -0.0093 0.0282 -0.4477 -0.2232 -0.0205 -0.5736 0.0180
-0.0093 1.0000 0.0517 0.1945 0.5284 0.9073 0.5468 0.5815
0.0282 0.0517 1.0000 0.8694 0.8400 -0.3730 0.6255 0.8425
-0.4477 0.1945 0.8694 1.0000 0.9169 -0.1853 0.8968 0.8132
-0.2232 0.5284 0.8400 0.9169 1.0000 0.1373 0.9173 0.9694
-0.0205 0.9073 -0.3730 -0.1853 0.1373 1.0000 0.2447 0.1856
-0.5736 0.5468 0.6255 0.8968 0.9173 0.2447 1.0000 0.8045
0.0180 0.5815 0.8425 0.8132 0.9694 0.1856 0.8045 1.0000
(3)特征值与特征向量及排序
特征值矩阵D与特征向量V可以直接通过eig()函数直接得到,特征值的排序用 sort(d0,’descend’)即可得到降序排列(d0为特征值向量的对角元素,也即特征值组成的行向量),为了将其对应的特征向量也对应排列,采用了find()函数来得到特征值在原矩阵中的位置。具体函数实现如下:
d1=sort(d0,'descend');
for i=1:size(d0,2)
[p,q]=find(d0==d1(:,i));
V1(:,i)=V(:,q);
end
其中,d1与V1分别为排序后的特征值与特征向量。
实验结果:
R的特征值:
-0.0000 0.0000 0.0000 0.0000 0.0000 1.2440 2.0513 4.7048
R的特征向量:
0.3768 -0.0577 0.2925 0.1092 0.1068 0.8508 -0.0369 -0.1434
-0.1073 -0.7090 -0.2065 -0.1656 0.0233 0.1044 -0.5873 0.2434
-0.2784 0.1228 -0.3075 -0.3655 0.5822 0.2889 0.3429 0.3731