R 语言是为数学研究工作者设计的一种数学编程语言,主要用于统计分析、绘图、数据挖掘。 机器学习是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。
这节课讲主成分分析(PCA)
项目实操——主成分分析
主成分分析和因子分析都是用来探索和简化多变量复杂分析的方法。主成分分析,也简称为PCA,是一种数据降维技巧,它能将大量相关变量转化为一组很少的不相关变量,这些无关的变量成为主成分,主成分其实是对原始变量重新进行线性组合,将原先众多具有一定相关性的指标,重新组合为一组的新的相互独立的综合指标。
R中内置的printcomp()函数可以进行主成分分析,这里我们使用psych包进行分析
步骤
主成分分析与因子分析的步骤:
数据预处理、选择分析模型、判断要选择的主成分/因子数目、选择主成分/因子、旋转主成分/因子、解释结果、计算主成分或因子得分。
例子
这里我们使用USjudgeratings数据集进行举例分析:
选择需要的主成分数目
选择PCA分析,通过绘制碎石图选择需要的主成分数目:
fa.parallel(USJudgeRatings,fa="pc",n.iter=100)
用principle()函数进行主成分分
接下来使用principle()函数进行主成分分析,nfactors是主成分因子的数目,rotate是旋转角度,scores表示是否要计算主成分得分,默认为不需要:
pc<-principal(USJudgeRatings,nfactors=1,rotate="none",scores=FALSE)
结果
这就是PCA分析的结果,其中,pc1栏是指观测变量与主成分的相关系数,如果nfactors=2或者3,那么还会有pc2、pc3等主成分,h2栏指成分公因子的方差,是主成分对每个变量的方差解释度,u2一栏是成分唯一性,方差不能被主成分解释的比例,proportion var表示每个主成分对数据集的解释程度,这里可以看到第一主成分pc1解释了所有变量84%的方差,我们将score参数设置为true,就可以获得每个变量的得分
继续分析
接下来我们使用Harman23.cor数据集进行分析:
在这个数据集中,数据是由变量的相关系数组成而非原始的数据集,先进行筛选主成分因子,利用平行分析得出碎石图:
fa.parallel(Harman23.cor$cov,n.obs=302,fa="pc",n.iter=100)
只有两个x在y=1之上,所以选择两个主成分因子,接下来进行主成分的分析
下面介绍一下主成分的旋转(这里只展示代码,具体的统计学知识查看统计学书本以及R语言实战p303)
pc<-principal(Harman23.cor$cov,nfactors=2,rotate='Varimax')