如何实现降维处理(R语言)
现实世界中数据一般都是复杂和高维的,比如描述一个人,有姓名、年龄、性别、受教育程度、收入、地址、电话等等几十种属性,如此多的属性对于数据分析是一个严重的挑战,除了极大增加建模的成本和模型的复杂度,往往也会导致过拟合问题,因此在实际处理过程中,一些降维的方法是必不可少,其中用的比较多的有主成分分析(PCA)、奇异值分解(SVD)、特征选择(Feature
Select),本文将对PCA和SVD作简单的介绍,并力图通过案例加深对这两种降维方法的理解。
1 主成分分析PCA
1.1 R语言案例
在R语言中PCA对应函数是princomp,来自stats包。以美国的各州犯罪数据为对象进行分析,数据集USArrests在graphics包中。
> library(stats) ##princomp
> head(USArrests)
Murder Assault UrbanPop Rape
Alabama
13.2
236
58 21.2
Alaska
10.0
263
48 44.5
Arizona
8.1
294
80 31.0
> summary(pc.cr <-
princomp(USArrests, cor = TRUE))
##每个主成分对方差的贡献比例,显然Comp.1
Comp2所占比例超过85%,因此能够用前两个主成分来表示整个数据集,也将数据从4维降到两维
Importance
of components:
Comp.1
Comp.2
Comp.3
Comp.4
Standard
deviation
1.5748783 0.9948694 0.5971291 0.41644938
Proportion
of Variance 0.6200604 0.2474413 0.0891408 0.04335752
Cumulative
Proportion 0.6200604 0.8675017 0.9566425
1.00000000
接下来查看每个特征在主成分中所在的比例
> loadings(pc.cr)
Loadings:
Comp.1 Comp.2 Comp.3 Comp.4
Murder -0.536
0.418 -0.341 0.649
Assault -0.583 0.188 -0.268
-0.743
UrbanPop
-0.278 -0.873 -0.378 0.134
Rape
-0.543 -0.167
0.818
Comp.1 Comp.2 Comp.3 Comp.4
SS
loadings
1.00
1.00
1.00 1.00
Proportion
Var
0.25
0.25
0.25 0.25
Cumulative
Var
0.25
0.50
0.75 1.00
根据以上数据可很容易转换为几个数学等式: