1. 当前所在位置:
  2. 首页
  3. 深海捕鱼

从变量角度解释主成分分析的原理和概念

2018-12-24 admin
  主成分分析的原理描述起来很简单,但涉及的概念,如标准化、正交变换、特征值、特征向量和降维等,参考资料中大多是从向量的角度进行解释,其涵义往往比较抽象。在线性代数中,向量以行表示,变量按列表示。本文通过一个小例子,从变量的角度,解释主成分分析的基本原理及相关概念的意义。
 
  1.变量描述
 
  为方便描述,本文首先产生两个相关性很高的变量。其代码如下:
 
  library(ggplot2)set.seed(123);x1=1:20+rnorm(10);x2=1:20+rnorm(10)(data_raw=data.frame(x1,x2))p=ggplot(data_raw,aes(x1,x2))p+geom_point(col=2)
 
  data_raw为原始数据集,包括两个变量x1和x2,其散点图如下。散点图可知,x1和x2呈明显的线性关系,相关性很高。
 
  x1和x2的散点图
 
  2.协方差矩阵和相关系数矩阵的关系
 
  主成分分析中数据的预处理可分为两种方式:当变量的量纲相同,值域比较接近时可以用原始数据直接计算协方差矩阵。当变量的量纲不同时或值域相差很大时,一般要对数据标准化,然后再计算协方差矩阵。数据标准化的方式为(x-mean(x))/sd(x)。数据标准化后计算的协方差矩阵即相关系数矩阵。
 
  data_scale=scale(data_raw,scale=T)cov(data_scale)#计算协方差矩阵cor(data_scale)#计算相关系数矩阵
 
  相关系数矩阵
 
  由上面结果可以看出,标准化之后协方差矩阵与相关系数矩阵是一样的。因此在R语言中,很多以主成分分析为基础的统计分析方法,其函数都需要指定使用协方差矩阵还是相关系数矩阵:若指定用协方差矩阵,表示是基于原始数据的分析。若指定相关系数矩阵,表明需要对数据标准化。若事先对数据标准化了,那么用什么矩阵都一样。需要注意的是,协方差矩阵对角线元素就是此时两个变量的方差。
 
  3.特征值和特征向量
 
  首先用eigen()获得上述协方差矩阵的特征值和特征向量。
 
  特征值和特征向量
 
  运行结果可知,协方差矩阵的特征值为1.98833213和0.01166787。如果把这两个特征值加起来,1.988+0.012=2,正好等于协方差对角线元素之和,也即两个变量标准化后的方差之和。这是特征值的一个重要特性。其意义可以理解为:数据的变异程度一开始分布于两个变量上,求取特征值的过程,实际上是重新构建了一个新的变量,使原先两个变量的变异程度,集中到了第一个新变量上,而第二个变量能够解释的变异程度很小。
 
  从以上结果可知,重新构建后的变量其方差即为两个特征值,第一个变量的方差占总方差比例的1.988/2=0.994,也即能够解释总变异的99.4%,第二个变量仅能解释总变异的0.4%,所含的信息量非常少,基本可以忽略不计了。如果将第二个变量剔除掉,仅保留第一个变量用于分析,也不会对结果造成大的影响,这就是降维。实现这个过程的方法就是所谓的线性变换。
 
  4.正交变换
 
  两个特征值对应了两个特征向量,这两个特征向量构成一个矩阵,这个矩阵最大的特点就是A'A=E,其中A'表示矩阵A的转置矩阵,E表示单位矩阵。用R语言运行如下:
 
  此时A矩阵就称为正交矩阵。正交矩阵A的两个列向量称为单位正交基。将这个正交矩阵A右乘原始数据标准化后的data_scale,就是我们产生的两个新向量。其方差就是求出的两个主成分1.988和0.012,用R语言运行如下:
 
  正交变换
 
  将正交矩阵A右乘原始数据标准化后的data_scale的过程称为正交变换。
 
  5.主成分
 
  正交矩阵A右乘原始数据data_raw产生的两个新变量,称为主成分,主成分数据集我们用data_new数据集表示。至此我们从原始数据data_raw通过正交变换产生了新的数据集data_new。
 
  正交变换后的数据
 
  6方差最大化旋转
 
  正交变换是主成分分析的思想核心。它的作用在几何图形上可看做是不改变原始变量形状和大小的前提下,进行坐标旋转,这种旋转用下面的图示可一目了然。
 
  data_raw=data.frame(No="raw",x1=data_raw[,1],x2=data_raw[,2])data_new=data.frame(No="new",x1=data_new[,1],x2=data_new[,2])all_data=rbind(data_raw,data_new)p1=ggplot(all_data,aes(x=x1,y=x2,colour=factor(No)))p1+geom_hline(yintercept=0,lwd=1,col=8)+geom_vline(xintercept=0,lwd=1,col=8)+geom_point(lwd=3)+stat_ellipse(lwd=1)+ylim(-30,30)+theme(axis.text=element_text(size=15),axis.title=element_text(size=15))
 
  方差最大化旋转
 
  注意到特征向量的值均为±0.7071068,即1/sqrt(2)=cos(135),此处正交变换的作用是将坐标按逆时针旋转了135度。所有点仅仅是位置发生了变化,其几何形状并未发生变化。
 
  所谓的正交变换,实际上就是坐标旋转,通过逆时针旋转135度,使得第一主成分的方差达到最大,因此这种方法叫方差最大化旋转。通过方差最大化旋转使得主成分按照方差由大到小的顺序排列,选择方差较大的前几个主成分,剔除方差较小的主成分,以达到削减变量的目的,即降维。若需完全理解主成分分析,还需深入学习和理解线性代数的基本知识。
捕鱼驾到