基于R的主成分分析
程序员文章站
2022-07-10 23:36:24
...
基于R的主成分分析
- 背景介绍
- 数学原理推导
- 基于R的实验
- 结论
背景介绍
这一讲,我们讲讲主成分分析( Principal Component Analysis),这是一种非常经典的方法。经常和主成分分析一起出现的是另一种经典的方法,叫因子分析(factor analysis)。其实这两个方法还是不一样的,主成分分析的基本思想是:寻求现有许多自变量的一个线性组合,并且呢,这个线性组合的方差要最大,方差最大则保证了信息的有效提取。那么这个线性组合就是第一个主成分,那么第二个主成分是如何找到的,第二个主成分和第一个主成分是相互正交的,这样就把第二个主成分也找到了,依次后面的主成分就都找到了。
数学推导
其中
所以上式其实表达的是,初始特征
大家看这样的话,就把主成分分析变成了一个约束优化问题,很容易想到用拉格朗日乘子法计算,因此又可以变成下式。
下面对这个式子求梯度 ,并且让它等于
这里就奇妙了,大家看到,其实我们需要的主成分方向,或者说是原始特征的线性组合其实就是样本协方差的特征向量。这里呢,我们对上式两边乘以
这样呢,就利用了约束条件,
基于R语言的实验
主成分分析在R语言或者其他语言里边都是很容易实现的,大家通过上面的推导可以发现,就是对一个矩阵求解特征值和特征向量。
#引入数据
data(swiss)
#将每个样本的名字去掉
df = swiss[,-1]
#查看一下数据
head(df)
Agriculture Examination Education Catholic Infant.Mortality
Courtelary 17.0 15 12 9.96 22.2
Delemont 45.1 6 9 84.84 22.2
Franches-Mnt 39.7 5 5 93.40 20.2
Moutier 36.5 12 7 33.77 20.3
Neuveville 43.5 17 15 5.16 20.6
Porrentruy 35.3 9 7 90.57 26.6
#进行主成分分析,并且将结果保存到pac_result
pca_result = prcomp(swiss,center = TRUE, scale = TRUE)
#查看结果
summary(pca_result)
Importance of components%s:
PC1 PC2 PC3 PC4 PC5 PC6
Standard deviation 1.7888 1.0901 0.9207 0.66252 0.45225 0.34765
Proportion of Variance 0.5333 0.1981 0.1413 0.07315 0.03409 0.02014
Cumulative Proportion 0.5333 0.7313 0.8726 0.94577 0.97986 1.00000
结论
通过上面,我们简单做了一个主成分分析的介绍。那么主成分分析需要提取几个呢,一般是看累积百分比,从上面的这个例子来看,提取三个比较合适了,因为前面两个主成分已经占了
下一篇: 没有知觉了