机器学习重要算法-PCA主成分分析

大家好,很高兴可以和大家一起来继续学习机器学习,这几天时间,我着重研究了下主成分分析法,不过因为其数学推理实在有些过于繁琐和复杂,我也没太搞得太清楚,如果在文章当中出现了什么错误,也请各位多多指教.

1:什么是PCA?

主成分分析法是机器学习领域中常用的一种算法,是Pearson在1901年提出的,再后来由hotelling在1933年加以发展提出的一种多变量的统计方法.

主成分分析最主要的用途在于“降维”.通过析取主成分显出的最大的个别差异,也可以用来削减回归分析和聚类分析中变量的数目.

举个例子,你要做一项分析,选中了20个指标,你觉得都很重要,但是20个指标对于你的分析确实太过繁琐,这时候,你就可以采用主成分分析的方法进行降维.

20个指标之间会有这样那样的相互关系,相互之间会有影响,通过主成分分析后,得到4个或者5个主成分指标.此时,这几个主成分指标既涵盖了你20个指标中的绝大部分信息,又让你的分析得到了简化(从20维降到4、5维),简化了分析过程,增加了结果精度.如果在实际情况中,我们如果能用不超过3-5个的成分就可以解释数据变异的80%,这就可以算作为成功.

现在我们用R语言来做一个相关的PCA实例:

首先我们先来介绍下我们下边将要使用的主成分分析的相关函数:

1:princomp函数:

做主成分分析最主要的函数是princomp()函数,使用的格式为:

princomp(formula,data = NULL,subset,na.action,...)

其中formula是没有响应变量的公式,类似于回归分析和方差分析中但是没有响应的变量.data是数据框,类似于回归分析和方差分析.

2:summary函数:

summary函数与在回归分析中的用法相同,其主要的目的就是提取主成分的信息,主要的格式为:

summary(object,loadings = FALSE,cutoff = 0.1,...)

其中object是由princomp()得到的对象,loadings是逻辑变量,当loadings = TRUE时表示显示loading中的内容,当为FALSE时则不显示.

3:loadings函数:

loadings()函数主要显示主成分分析或者因子分析当中的loadings的内容,在主成分分析中,实际上是对主成分对应的各列,即正交矩阵.在因子分析中,其内容就是载荷因子矩阵,loadings()函数的使用格式为:

loadings(x)

其中x是由函数princomp()得到的对象

4:predict函数:

predict()函数是预测主成分的值,使用的格式为:

predict(object,newdata,...)

当object是由princomp()得到的对象,newdata是由预测值构成的数据框,当newdata缺省时,预测已有数据的主成分值

5:screeplot函数

screeplot()函数是画出主成分的碎石图,主要的格式有:

screeplot(x,npcs = min(10,length(x$sdev)),

type = c("barplot","lines"),

main = deparse(substitute(x)),...)

x princomp()npcs type

其中X是由princomp()得到的对象,npcs是画出主成分的个数,type是描述画出的碎石图的的类型,”barplot”是直方图类型,”lines”是直线图类型.

6:biplot函数

biplot()是画出关于主成分的散点图和原坐标在主成分下的方向,其中的格式为:

biplot(x,choices = 1:2,scale = 1,pc.biplot = FALSE,...)

其中X是由princomp()得到的对象,choices是选择的主成分,缺省值是第一个第二个主要成分,pc.biplot是逻辑变量.

现在我们把函数介绍完了,现在我们开始引用实例来去解决PCA问题:

在跳楼机大学中随机抽取某年级30名学生,测量其身高X1,体重X2,胸围X3和坐高X4,其中数据如下图所示,现在对着30名学生的身体的四项指标做主成分分析

首先,我们先用数据框的形式输入数据,用princomp()作为主成分分析,我在书上看到推荐使用相关的矩阵作为主成分分析更加的合理,因此这里选择的参数是cor=TRUE,最后用summary()列出主成分分析的值,这里选择loadings=TRUE,以下是相应的程序:

在上述程序中,summary函数列出了主成分分析的重要信息,Standard deviation行表示的是主成分的标准差,即主成分的方差的开方,也就是想应的特征值的开方,proporcrion of Variance行表示的是方差的贡献率,Cumulative Proportion行表示的是方差的累计贡献率

由于summary函数中的参数中选取了loadings = true,因此列出的的loading内容实际上就是主成分对应原始变量X1,X2,X3,X4的系数,因此我们可以得到:

因为前面两个的主成分的贡献率可以达到了96%,另外的两个主成分可以舍去,依次来达到降维的目的.

第一主成分对应的系数符号都相似,其中的数值都在0.5左右他反应了跳楼机学生的魁梧程度,身材高大的学生他的对应的其他的部分尺寸也比较大,因此第一主成分的值就比较小,均为负值;而身材矮小的学生,他的其他4部分都比较小.因此第一主成分的绝对值比较大,我们称第一主成分为大小因子,第二成分为高度和宽度的差,第二主成分大的可以表明这个学生比较瘦高,较小的可以看为”矮胖”.因此把第二主成分看为体型因子.

我们看一下各样本主成分的值,这个时候要使用predict()函数:

从第一主成分看,较小的几个值是25号样本,3号样本和5号样本,这说明这结果学生身材魁梧,而11,15,29的值比较大,说明这几个学生身材瘦小.

从第二主成分来看,较大的几个值是23,19,4号样本,说明这几个学生比较瘦比较高,17,8,2号样本这样的就属于矮胖了.

现在画出主成分的碎石图:

screeplot(student.pr,type="lines")

还可以画出第一主成分和第二主成分的样本直方图

好了,这就是这篇文章我想要阐述的一些东西,虽然看起来很简单,但是实际上后边的原理难以搞得一清二楚,接下来一段时间我将要研究主成分分析的一些应用,比如变量分类问题和主成分的回归问题,虽然这是个艰难的过程,但我相信其中的乐趣大于这些困难,加油吧!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,937评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,503评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,712评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,668评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,677评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,601评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,975评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,637评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,881评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,621评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,710评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,387评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,971评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,947评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,189评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,805评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,449评论 2 342

推荐阅读更多精彩内容