主成分分析(PCA)

PCA 简介

多元统计分析中普遍存在的困难中,有一个困难是多元数据的可视化。matlab 中的 plot 可以显示两个变量之间的关系,plot3 和surf 可以显示三维的不同。但是当有多于3个变量时,要可视化变量之间的关系就很困难了。

幸运的是,在一组多变量的数据中,很多变量常常是一起变动的。一个原因是很多变量是同一个驱动影响的结果。在很多系统中,只有少数几个这样的驱动,但是多余的仪器使我们测量了很多的系统变量。当这种情况发生的时候,你需要处理的就是冗余的信息。而你可以通过用一个简单的新变量代替这组变量来简化此问题。

PCA 是一种较为常用的降维技术,PCA 的思想是将n维特征映射到k维上,这k维是全新的正交特征。这k维特征称为主元,是重新构造出来的k维特征。在 PCA 中,数据从原来的坐标系转换到新的坐标系下,新的坐标系的选择与数据本身是密切相关的。其中,第一个新坐标轴选择的是原始数据中方差最大的方向,第二个新坐标轴选取的是与第一个坐标轴正交且具有最大方差的方向,依次类推,我们可以取到这样的k个坐标轴。

PCA 操作流程

  1. 去均值,即每一位特征减去各自的平均值(当然,为避免量纲以及数据数量级差异带来的影响,先标准化是必要的)
  2. 计算协方差矩阵
  3. 计算协方差矩阵的特征值与特征向量
  4. 对特征值从大到小排序
  5. 保留最大的k个特征向量
  6. 将数据转换到k个特征向量构建的新空间中

PCA 实例

考虑到实例的简洁性,这里只用二维数据。

假设二维数据为 data:

取均值:

  • 去均值矩阵:

  • 计算其协方差矩阵:

  • 计算协方差矩阵的特征值和特征向量:

特征值为:

特征向量为:

  • 对特征值进行排序(只有两个特征)

  • 选择最大的特征值对应的特征向量:

  • 转换到新的空间

由此,便实现了 PCA 降维操作。

MATLAB 实现 PCA

上面已经对 PCA 的算法过程做了详细说明,这里只针对 MATLAB 中的 PCA 函数作介绍并加以实例说明(详情也可参考 MATLAB 的PCA 文档,官方文档更加细致):

[coef,score,latent] = pca(x);
  • 1

x:为要输入的 n 维原始数据。带入这个 matlab 自带函数,将会生成新的 n 维加工后的数据(即 score)。此数据与之前的 n 维原始数据一一对应。

score:生成的n维加工后的数据存在 score 里。它是对原始数据进行的分析,进而在新的坐标系下获得的数据。他将这 n 维数据按贡献率由大到小排列。(即在改变坐标系的情况下,又对 n 维数据排序)。

latent:是一维列向量,每一个数据是对应 score 里相应维的贡献率,因为数据有 n 维所以列向量有n个数据。由大到小排列(因为 score 也是按贡献率由大到小排列)。

coef:是系数矩阵。通过 cofe 可以知道x是怎样转换成 score 的。

则模型为从原始数据出发:
score = bsxfun(@minus,x,mean(x,1))coef; (作用:可以把测试数据通过此方法转变为新的坐标系)
逆变换: x = bsxfun(@plus,score
inv(coef),mean(x,1))

代码示例(此处选择一个10维度的数据集):

%调用 pca 函数
[coef,score,latent,t2] = pca();

score
%测试score是否和score_test一样
score_test=bsxfun(@minus,x,mean(x,1))*coef;
score_test

latent=100*latent/sum(latent)%将latent总和统一为100,便于观察贡献率
pareto(latent);%调用 matlab 画排列图
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

上图当贡献率累加至95%,以后的维数会不在显示,最多只显示10维。

几个注意点:

  • PCA 针对的是 feature extraction ,而不是 feature selection。PCA后会有贡献值,是输入者根据自己想要的贡献值进行维数的改变,进而生成数据。(一般大家会取贡献值在85%以上,要求高一点95%)。即在特征信息损失不多的情况下达到降维的目的。

  • 主成分分析中 latent 显示的贡献值是加工后的数据的,并非原始数据。

  • PCA分析,只根据输入数据的特征进行主成分分析,与输出有多少类型,每个数据对应哪个类型无关。考虑与聚类的结合,PCA 与聚类结果没有直接的关系。原因:PCA只是降低维度,簇并不一定与维度绑定,PCA 的作用顶多就是去掉噪音,减少计算量,并不会剔除簇信息。

———————— END ————————

本文使用 文章同步助手 同步

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

推荐阅读更多精彩内容