第十四章 降维 主成分分析
• 右图最靠左边(与第3 主成分最负相关) 的2 个国家为China, India, 其后
有Indonesia, Bangladesh, United States of America, Pakistan; 它们的总人
口较多. 图14.5右图的右边挤在一起, 不很突出. 图14.5右图最靠下面的
(与第5 主成分比较负相关) 的6 个国家Gabon,Kazakhstan, Russian
图14.5 左右两图分别是观测值相应于第1、2 及第3、5 主成分的记分24图
记分(score)
• 图14.5左图最靠左边(与第1 主成分最负相关) 的6 个国家是Japan, Germany, Italy, Finland, Austria, Switzerland, 它们是世界上最发达的国 家; 而图14.5左图最靠右边(与第1 主成分最正相关) 的6 个国家是Niger, Chad, Burundi, Uganda, Mali, Democratic Republic of the Congo, 它们是 世界上最不发达的国家.
由于变量之间相关, 谈论单独某个变量对描述数据的单独贡献就没有 多大的意义, 这些互相相关的变量有着“集体贡献”, 降维就有可能.
• 主成分分析是在变量相关时寻找不相关的线性组合
在变量相关时, 可以由相关的变量形成若干变量的线性组合, 而这些线
性组合之间不相关. 这时谈论每个组合对问题的单独贡献就有意义了.
16
主成分及崖底碎石图
• 得到相应于11 个变量的特征值及累计贡献为: e$values [1] 6.3726 1.5656 1.0448 0.7961 0.5010 0.3368 [7] 0.2060 0.1324 0.0320 0.0080 0.0046 cumsum(e$values)/sum(e$values)#各个成分的累计贡献 [1] 0.58 0.72 0.82 0.89 0.93 0.97 0.98 1.00 1.00 1.00 1.00
> sweep(a$vectors,2,sqrt(a$values),"*")
[,1] [,2]
[1,] 0.99 -0.12
[2,] 0.99 0.12
12
主成分分析的步骤
• 找到各个不相关的成分,并选择代表性的少数成分: – 通过相关阵的特征值来看成分的重要性(崖底碎石图)并选择成分; – 通过相关阵的特征向量来看成分和原变量的关系(载荷图) 并解 释成分.
[,1] [,2]
[,1] [,2]
[1,] 0.71 -0.71
[1,] 0.71 -0.71
[2,] 0.71 0.71
[2,] 0.71 0.71
• 图14.1左右两图的特征向量(即两个主成分) 方向一样, 但左图数据特征
值(即方差) 的比例(代码prop.table(a$values))相差很大, 后面
• 可能性 并不是所有多元数据分析都能够或者有必要降维. 问题的性质、研究 者的目的及数据变量之间的关系等各种因素确定了降维的可能性.
4
降维的可能性
• 数据各变量不相关的情况
每个变量对于这个数据的整体特征的贡献都是独立的, 并不与其他变 量混杂, 这样的数据不能降维, 主成分分析无意义.
• 数据各变量相互相关的情况
8
椭圆的正交长短轴
• 寻找两个点云相应椭圆的主轴(即正交的长短轴)等价于寻找观测值方 差(或标准差)最大的方向.
• 在数学上为寻找数据相关矩阵最大的特征值(相应于方差) 及对应的特 征向量(即第一主轴的方向).
• 很容易利用R 函数eigen算出:
> xy=read.csv("xy.csv") > (a=xy%>%cor()%>%eigen()) #求xy相关阵特征值及特征向量
18
体现相关系数的载荷
• 输出结果见下表: 表14.1 各变量主成分载荷表
19
体现相关系数的载荷
• 对于第1主成分: – 和第1 主成分比较负相关(相关系数绝对值大于0.6) 的变量为D1 (人 口增长率), D13 (都市人口), D15 (人口中位数年龄), D16 (超过60 的人口比例), D2 (手机用户量), D7 (人均国民总收入). 因此第一主 成分负值越大, 国家越发达. – 和第1 主成分比较正相关(相关系数绝对值大于0.6) 的变量为D17 (15 以下的人口比例), D18 (总生育率), D5 (粗出生率). 因此第一主 成分正值越大, 国家越落后.
• 把原来的观测值投影到选择的成分上(计算得分并画图).
13
三 通过特征值问题求各个主成分
14
例14.1
• 数据描述 数据有177行, 每行代表一个国家或地区, 一共有12 个变量(数据的列), 除了名为Country.or.Area 的第一列为各个国家或地区的名字之外, 其 他列都是人口学的一些变量.
• 变量意义 D1:人口年增长率(%); D5:粗出生率(每1000 人口); …… D18:总生育率(每个妇女);
15
主成分及崖底碎石图
DP=read.csv("DP.csv") #求特征值和相应的特征向量 (e=eigen(cor(DP[,-1])))#数据第一列是国家或地区名字必须去掉 cumsum(e$values)/sum(e$values)#各个成分的累计贡献 plot(e$values,type="b",main="Scree plot",pch=16,col=4,lwd=3)
数据科学导论
— 第十四章 降维: 主成分分析
刘苗
miaoliu@ Jan.3, 2020
1
主要内容
一 变量之间的关系与降维的可能性 二 两维空间的降维 三 通过特征值问题求各个主成分 四 各个观测值在新坐标中的记分 五 主成分分析在图像处理中的应用 六 本章的Python代码
这些互不相关的组合在主成分分析中称为成分(component).
5
变量选择
• 在做主成分分析时, 最主观、对结果影响最大的决策就是选择哪些变 量参与建模, 这方面怎么强调都不过分.
• 必须注意到, 在教科书中的数据是给定的, 读者往往被动地“接受” 这些别人采集的变量, 而无法去质疑其合理性, 也很难认识到选择不同 的变量对结果的不同影响.
将会说明, 特征值不同的比例揭示了降维的可能性.
10
崖底碎石图(scree plot)
• 图14.1左图数据在两个方向的方差之比为0:986 : 0:014(相应的特征值 大小之比), 即长轴解释了98.6% 的信息, 因此如果舍弃短轴, 则仅损失 1.4% 的信息. 结论是有降维的可能.
• 图14.1右图数据长短轴方差的比例为0:52 : 0:48, 任何降维都会损失将 近50% 的信息. 结论是不适合降维.
图14.2 图14.1左右两图的崖底碎石图
11
主成分和原数据的关系
• 每个单位向量乘以其对应的特征值的平方根则为该成分和对应原始变 量的相关系数, 这些以相关系数表示的方向称为载荷.
• 图14.1左图数据和原来变量的相关系数: 第一列所代表的第一主成分与 两个原始变量的相关系数均为0.99, 因此, 第一主成分对原始数据的代 表性很强, 而第二主成分则代表性很弱. #每列特征向量乘以相应的特征值平方根
成.
图14.6 一个老宅的照片
28
图像压缩案例
• 得到3 个新文件的压缩比分别为0.09942, 0.14536, 0.29486
图14.7 老宅照片分别选取的主成分个数为3、10、100 的压缩照片及对
29
比的原始照片(自上左到下右排列)
习题
• 关于主成分分析, 请考虑下面问题: – 是不是一个数量变量的多元数据一定可以做主成分分析? – 主成分分析中有没有选取成分个数的不变标准?请解释. 你将按照 什么标准选取主成分? – 主成分分析的载荷在不同的程序中会得到不同的符号(指值的正负 号),这有关系吗?为什么?
Federation Panama, Saudi Arabia, Botswana; 它们手机用户比例可能较
大(但相关性不那么强).
25
五 主成分分析在图像处理中的应用
26
压缩
• 压缩的图像利于传送, 但我们也不希望压缩得太厉害以致失去原图片 太多的信息.
• 彩色图像的颜色大都通过三原色深浅组合而成, 计算机在处理颜色时 会将其转化为R(红), G (绿), B (蓝) 三个值(注意这里的绿色实际上是柠 檬色) 来记录, 取值都在0 255 之间.
• 可以看出最突出的是前面少数几个成分, 它们所代表的信息已经达到 80% 以上, 后面成分对方差的贡献就小多了.
17
体现相关系数的载荷
• 前面可通过e$vectors 函数得到11 个特征向量, 但它们都是单位向 量, 仅仅给出方向, 没有给出各个成分与原始变量的线性相关系数.
• 把每个单位特征向量乘以它们相应的特征值的平方根则给出这些相关 系数, 称为载荷(我们只输出前面5 个成分): loading=sweep(e$vectors,2,sqrt(e$values),"*")%>%da ta.frame() names(loading)=paste0("Comp-",1:11) data.frame(Variable=names(DP)[-1],loading[1:5])
20
体现相关系数的载荷
• 对于第2主成分:
– 和第2 主成分比较负相关(相关系数绝对值大于0.5) 的变量为D6 (粗 死亡率)还有稍微相关的D1 (人口增长率). 因此第2 主成分负值越大, 粗死亡率越高但出生率也较高.