主成分分析(PCA)
好多小伙伴在学习数学建模的时候会遇到这么一个算法—主成分分析,顾名思义,是用来分析主要成分的。简单点说,就是对评价指标集进行分析,得到新的若干个成分,来代替原始的评价指标(听不懂没关系!继续往下看,保证可以听得懂!)。
它是一种普遍的降维算法,在机器学习、生物分析等各个领域都有着广泛的应用。接下来,跟着我的思路,带你掌握这个算法,并学会如何去应用!
1 例题引入
大家设想一下这个例子,为了衡量一个人的体育综合能力,我们设有如下评价指标集{BMI(身高体重),肺活量,400米跑成绩,800米跑成绩,跳高,跳远}。接着我们分析问题的时候,觉得这些指标太多了(似乎并不多,但是假设你觉得多),对我们分析问题比较麻烦,这个时候我需要对指标进行处理,这个时候我就进行主成分分析。很多同学对这有个误解,认为主成分分析出来的是从原来指标集中直接挑出来的,绝对不是这样!大家请看下图:

在这个图中,左边是我们刚刚设定的变量,这里我用1-6来表示,右边是我们求出来的主成分(PC),为什么会有6个主成分呢?实际上我们用matlab软件求出来的就是多少个指标对应着多少个主成分。有人会问,不是说好的降维吗,为啥还是六个主成分呢?别急,我们先保留这个问题。
大家还需要注意的一点就是,每一个主成分和原来的指标都是存在一个线性关系的,我这里图中只画出来PC1,其他的PC也是这样的,也就说,我们可以把PC1用下面公式表示:
P C 1 = a X 1 + b X 2 + . . . + f X 6 P{C_1} = a{X_1} + b{X_2} + ... + f{X_6} PC1=aX1+bX2+...+fX6
什么意思呢?也就是说,每一个主成分都和原来的变量有关系,并不是说主成分就是从原来变量中直接挑出来的,但是他是有一定意义的。比如说,假设这个主成分PC1在X2,X3,X4(对应着肺活量,400米跑,800米跑)前面的系数比较大且为正值,那我们可以分析得到这个主成分主要侧重于人的耐力方面(肺活量,400米,800米这三个指标本身就体现了一个人的耐力);同理如果某个主成分PC2,在X5,X6,对着的前面系数比较大,说明我们分析得到的这个主成分是衡量人的爆发力方面。但是注意,并不是每一个主成分都可以分析出它们的意义。
我们可以看到前面两个主成分是彼此独立的,衡量人体育成绩不同方面的,这也是符合我们寻找主成分的定义的。接下来我们看一下,主成分分析的具体原理又是怎么实现的呢?
2 基本思想
在展开PCA数学原理之前,我们先整体把握一下其思想:
PCA算法是一种降维算法,降维就不可避免的涉及到数据的损失,就好比在三维世界中你看到的一个球,在二维世界中你只能看到一个面。怎么让我们的数据经过降维之后,尽可能的保留原始信息,这是我们需要解决的。
我们期望找到主成分彼此之间尽可能的独立,就比如前面例题中找到的主成分,分别来侧重说明某一方面,相互独立。如果不是相互独立,说明我们找的主成分不具有代表性,是不符合要求的。
总结一下:
- 降维后数据尽可能损失小
- 得到主成分之间尽可能独立
以上就是我们PCA算法的基本思