预处理(一):主成分分析PCA

主成分分析(PCA)

在许多领域的研究与应用中,往往需要对反映事物的多个变量进行大量的观测,收集大量数据以便进行分析寻找规律。多变量大样本无疑会为研究和应用提供了丰富的信息,但也在一定程度上增加了数据采集的工作量,更重要的是在多数情况下,许多变量之间可能存在相关性,从而增加了问题分析的复杂性,同时对分析带来不便。如果分别对每个指标进行分析,分析往往是孤立的,而不是综合的。盲目减少指标会损失很多信息,容易产生错误的结论。

因此需要找到一个合理的方法,在减少需要分析的指标的同时,尽量减少原指标包含信息的损失,以达到对所收集数据进行全面分析的目的。由于各变量间存在一定的相关关系,因此有可能用较少的综合指标,分别综合存在于各变量中的各类信息。主成分分析与因子分析就属于这类降维的方法。

问题描述

下表是某些学生的语文、数学、物理、化学成绩统计:

学生编号 语文 数学 物理 化学
1 90 140 99 100
2 90 97 88 92
3 90 110 79 83
…… …… …… …… ……

首先,假设这些科目成绩不相关,也就是说某一科目考多少分与其他科目没有关系。那么一眼就能看出来,数学、物理、化学这三门课的成绩构成了这组数据的主成分(很显然,数学作为第一主成分,因为数学成绩拉的最开)。下面再看一组学生的数学、物理、化学、语文、历史、英语成绩统计:

学生编号 数学 物理 化学 语文 历史 英语
1 65 61 72 84 81 79
2 77 77 76 64 70 55
3 67 63 49 65 67 57
4 80 69 75 74 74 63
5 74 70 80 84 82 74
6 78 84 75 62 72 64
7 66 71 67 52 65 57
8 77 71 57 72 86 71
9 83 100 79 41 67 50
…… …… …… …… …… …… ……

数据太多了,以至于看起来有些凌乱!也就是说,无法直接看出这组数据的主成分,因为在坐标系下这组数据分布的很散乱。

在另一个例子中,假设数据在相应坐标空间中表示出来如下图所示,也许你就能换一个观察角度找出主成分。


6a3aa9a2e690fa67aec528dfc2d8595.png

但是,对于更高维的数据,能想象其分布吗?就算能描述分布,如何精确地找到这些主成分的轴?如何衡量你提取的主成分到底占了整个数据的多少信息?所以,我们就要用到主成分分析的处理方法。

数据降维

假设三维空间中有一系列点,这些点分布在一个过原点的斜面上,如果你用自然坐标系x,y,z这三个轴来表示这组数据的话,需要使用三个维度,而事实上,这些点的分布仅仅是在一个二维的平面上。如果我们把坐标轴旋转一下, 使数据所在的平面与x^`, y^`平面重合,不就只需要使用两个维度了吗。这样数据的维数就降下来了。究其本质,如果把这些数据按行存储成一个矩阵,那么这个矩阵的秩为2。这些数据之间是具有相关性的,这些数据的最大线性无关组只包含两个向量。(一般来讲n维空间中的n个点一定能在一个n-1维子空间中分析)

将上面的数据降维之后,我们可以认为并没有损失信息,因为所有的数据在平面之外的第三个维度的分量都是0。现在假设z^`轴有一个轻微的扰动,那么我们仍然用上述的二维来表示这些数据,因为我们可以认为这两个轴包含了数据的主成分。而且这些信息对于我们的分析已经足够了,z^`轴的扰动很有可能是噪声,并且具有很大的相关性。所以,综合考虑,可以认为数据在x^`, y^`上的投影构成数据的主成分。

PCA的思想是将n维特征映射到k维上(k<n),这k维是全新的正交特征。这k维特征称为主成分,是重新构造出来的k维特征,而不是简单地从n维特征中去除其余n-k维特征。

PCA推导

357d394d5b6639f12f25e175372ad7b.png

首先对于二维数据,如上图所示,每个观测点都是二维平面的一个点。如果这些数据形成一个椭圆形的点阵,这个椭圆有一个长轴和一个短轴。在短轴方向,数据的变化很小;在极端的情况下,如果短轴退化成了一个点,那么只有在长轴的方向才能解释这些点的变化。这样二维就降维一维了。

显然,上图中u_1就是主成分方向,二维空间中与u_1正交的方向,就是u_2方向。则数据在u_1轴的离散程度最大(方差最大),数据在u_1上的投影代表了原始数据的绝大部分信息,即使不考虑u2,信息损失也不多。而且,u1、u2不相关。只考虑u1时,二维降为一维。

椭圆的长短轴相差得越大,降维也越有道理。

1、最大方差理论

在信号处理中认为信号具有较大的方差,噪声有较小的方差,信噪比就是信号与噪声的方差比,越大越好。如前面的图,样本在u1上的投影方差较大,在u2上的投影方差较小,那么可认为u2上的投影是由噪声引起的。

因此我们认为,最好的k维特征是将n维样本点转换为k维后,每一维上的样本方差都很大。

2、最小二乘法

使用最小二乘法来确定各个主轴的方向。

对于一组给定的数据\{\vec z_1, \vec z_2, \vec z_3, \cdots, \vec z_n\}

其数据的中心为:

\vec \mu = \frac{1}{n} \sum_{i = 1}^{n} \vec z_i

数据中心化后为:

\{\vec x_1, \vec x_2, \cdots, \vec x_n\} = \{\vec z_1 - \vec \mu, \vec z_2 - \vec \mu,\cdots, \vec z_n - \vec \mu \}

设中心化后的数据在第一主轴u_1方向上分布最为离散,也就是说在u1方向上的投影的绝对值之和最大(也可以说方差最大),只需要求出u_1方向,设u_1为单位向量。

也就是最大化式:

\frac{1}{n} \sum_{i=1}^n(\vec x_i \cdot \vec u_i)^2 = \frac{1}{n} \sum_{i=1}^n(x_i^T u_1)^2 = \frac{1}{n} \sum_{i=1}^nu_1^Tx_ix_i^Tu_1 = \frac{1}{n} u_1^T(\sum_{i=1}^nx_ix_i^T)u_1

令: X = [x_1, x_2, \cdots, x_n]

上式 = \frac{1}{n} u_1^T XX^Tu_1

u_1^T XX^Tu_1是一个二次型,我们假设XX^T的某一个特征值为\lambda,对应的特征向量为\xi,那么:

(XX^T)^T = XX^T

XX^T\xi = \lambda\xi

(XX^T\xi)^T\xi = (\lambda\xi)^T\xi

\xi^TXX^T\xi = \lambda\xi^T\xi

\xi^TXX^T\xi = (X^T\xi)^T(X^T\xi) = \left \| X^T\xi \right \|^2 = \lambda\xi^T\xi = \lambda \left \| \xi \right\|^2

显然,\frac{1}{n} u_1^T XX^Tu_1是一个半正定的二次型,且有最大值。

求解最大值和最大值点

目标函数可以表示成映射后的向量的二范数平方:

u_1^TXX^Tu_1^T = (X^Tu_1)^T(X^Tu_1) = <X^Tu_1^T, X^Tu_1> = (\frac{|| X^Tu_1||_2^2}{||u_1||_2})^2

所以最大化目标函数的基本问题就转化成了:对于一个矩阵,它对一个向量做变换,变换前后的向量的模长伸缩尺度如何才能最大?我们有矩阵代数中的定理知,向量经矩阵映射前后的向量长度之比的最大值就是这个矩阵的最大奇异值,即:

\frac{\left\|Ax\right\|}{\left\| x\right\|} \leq \sigma_1(A)

X^TX最大特征值对应的特征向量的方向就是第一个主成分u_1的方向。

主成分所占整个信息的百分比可用下式计算:

\sqrt{\frac{\sum_{i=1}^k\sigma_i^2}{\sum_{i=1}^n\sigma_i^2}}

分母为所有奇异值的平方和,分子为前k个奇异值的平方和。

PCA实例

我们假设有如下数据:

x y
2.5 2.4
0.5 0.7
2.2 2.9
1.9 2.2
3.1 3.0
2.3 2.7
2 1.6
1 1.1
1.5 1.6
1.1 0.9

第一步:分别球x,y的平均值:然后对所有的样例,都减去对应的均值。\overline{x} = 1.81\ \ \overline{y} = 1.91

x - \overline{x} y - \overline{y}
0.69 0.49
-1.31 -1.21
0.39 0.99
0.09 0.29
1.29 1.09
0.49 0.79
0.19 -0.31
-0.81 -0.81
-0.31 -0.31
-0.71 -1.01

第二步:求特征协方差矩阵

cov = \left( \begin{array}{ccc}.616555556 & .615444444 \\.615444444 & .716555556 \end{array}\right)

第三步:求协方差的特征值和特征向量

eigenbalues = \left( \begin{array} {ccc} .490833989&1.28402771\end{array}\right)

eigenvectors = \left(\begin{array}{ccc} -.735178656&-.677873399 \\ .677873399&-.735178656\end{array}\right)

第四步:将特征值按照从大到小的顺序排序,选择其中最大的k个,然后将其对应的k个特征向量分别作为列向量组成特征向量矩阵。

这里特征值只有两个,我们选择其中最大的那个,这里是1.28402771,对应的特征向量为
\left( \begin{array} {ccc} .677873399&-.735178656\end{array} \right)

第五步:将样本点投影到特征向量上, 这样,就将原始样例的n维特征变成了k维,这k维就是原始特征在k维上的投影。

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

推荐阅读更多精彩内容