简单易懂的主成分分析(PCA)

PCA(主成分分析)是一种数据降维算法,旨在尽可能保留最大信息。本文以直观方式解释PCA的作用、降维过程和优化目标,通过方差和协方差的概念寻找最佳基,最终实现数据的压缩。示例展示了PCA如何将二维数据降为一维,以及在鸢尾花数据集上的应用。
摘要由CSDN通过智能技术生成

PCA(Principal Component Analysis)是一种矩阵压缩的算法,在数据分析和机器学习等很多方向都有着应用。这篇文章的主要目的是将这个算法的原理讲的简单易懂,网上很多讲PCA的文章,但是大部分讲的并不够朴素,用了很多公式,很多图解和专有名词,但是在我看来,这些东西并不一定能降低理解这个算法的门槛。所以,这篇文章可能不会有特别严谨的数学推导,我会尽量使用符合人类直观理解的方式来阐述问题。

当然,在此之前,你要对特征值和特征向量有个基础的理解,可以参考我的另一篇文章:简单易懂的特征值与特征向量

PCA的作用

在学习这个算法之前,我们首先要知道这东西到底有啥用。简单来说,就是数据的降维,降维这件事情,听着挺高端,实际并不是,比较贴近生活中理解的例子是三视图:

一个3d的立体的图像,可以转化为2d的平面的图像,当然,从每一个单独的视角来看,都是丢失了信息的,无论是主视图、左视图还是俯视图,都不能根据它直接还原出原始的三维图形。这其中很有意思的一点就是,你会发现最左边的图,其实也是个平面图像,它大概相当于在物体斜上角45°拍了照,但是这个图包含的信息比其他三视图丰富的多,你几乎可以还原出原始的3d图形。

说回到PCA,它的作用大概就是在全方位立体360°的照片中,找到信息最全的那张照片。也就是说,PCA实际上是一个尽可能保留最大信息的降维算法。

如何降维?

首先我们先规定一下数据的格式。通常现实世界中遇到的数据分析的问题,我们都会找很多维度来衡量,比如我想要预估一下这篇文章的访问量。那么我可能会搜罗一些数据来帮我分析:

文章id 访问量 点赞数 收藏数 评论数 粉丝数
1 2194 4 1 6 100
2 9308 10 4 10 200
3 35702 27 10 20 300

通常我们会用一个向量表示其中的一条数据:

a 1 ⃗ = ( 2194 4 1 6 100 ) \vec{a_1} = \begin{pmatrix}2194\\4\\1\\6\\100\end{pmatrix} a1 =2194416100

这是一个五维的向量,代表表格中的五个字段。当然了,在讲PCA的过程中,还是会使用二维和一维的向量,可以画出图来,理解起来更加的直观。

下面我们看二维转一维怎么搞,简单来说就是把平面的点都投影到同一条直线上去,这没什么难的,最容易的就是投影到x轴或着y轴,如下图所示:
在这里插入图片描述
在这里插入图片描述

当然了,投影到一个轴,另一个轴的信息就会丢失,这是不可逆的过程。损失信息是必然的,因此我们可以接受损失一些信息,但是仔细观察两个图,你会发现,有些点在投影过后,位置是重合的,也就是说,存在不同的点在压缩过后表示的信息是完全一样的,投影到x轴,有两个点重合,投影到y轴,有三个点重合。这不是一个很好的结果,最终我们还是希望点与点之间间隔尽可能的远,保留的信息尽可能的多。

最好的结果类似这样,依然是选择了某个直线,并把点投影到这条直线上,但是点之间没有重合,点与点的间隔也比较远。看到这里,你就知道PCA到底要做什么了,没错,就是找到这条直线,并求出投影到这条直线的点的坐标(当然二维降一维是直线,三维降二维就是平面了,更多维度也是类似的)。

在这里插入图片描述

优化目标

上述的过程,可以认为是找一个合适的基,并把原始坐标投影到新的基上(不理解的可以看我开篇发的文章)。拿投影到x轴来举例的话,新的基是 x ^ = ( 1 0 ) \hat{x} = \binom{1}{0} x^=(01), 为了让原始二维坐标映射到一维的坐标,我们需要一个线性变换,可以扩展基的维度,并填0,用一个矩阵来表示:

A = ( 1 0 0 0 ) A=\begin{pmatrix} 1 & 0 \\ 0 & 0 \end{pmatrix} A=(1000)

另外,还要满足两个条件:

1. 投影后的数据要尽可能的分散。
2. 新的基要线性无关。

关于第2点需要说明一下,线性无关的条件是为了保留更多信息,不要最后降低到比目标更少的维度去。

如何找一个合适的基呢?貌似没什么好的思路,没关系,我们可以先从量化下面两个条件入手。

利用方差衡量离散程度

在数学上,通常利用方差来描述数据的离散程度。下面是一组三维的向量组成的矩阵:

X = ( x 1 x 2 . . . x m y 1 y 2 . . . y m z 1 z 2 . . . z m ) X = \begin{pmatrix} x_1 & x_2 & ... & x_m \\ y_1 & y_2 & ... & y_m \\ z_1 & z_2 & ... & z_m \end{pmatrix} X=x1y1z1x2y2z2.........xmymzm

那么每一维的方差就可以描述为:

σ x 2 = 1 m ∑ i m ( x i − x ˉ ) 2 \sigma_x^2 = \frac{1}{m} \sum_{i}^{m} (x_i - \bar{x})^2 σx2=m1im(xixˉ)2

σ y 2 = 1 m ∑ i m ( y i − y ˉ ) 2 \sigma_y^2 = \frac{1}{m} \sum_{i}^{m} (y_i - \bar{y})^2 σy2=m1im(yiyˉ)2

σ z 2 = 1 m ∑ i m ( z i − z ˉ ) 2 \sigma_z^2 = \frac{1}{m} \sum_{i}^{m} (z_i - \bar{z})^2 σz2=m1im(zizˉ)2

通常为了计算方便,会先将向量减去均值,这样方差的表示就更简单了:

X = X − ( x ˉ y ˉ z ˉ ) X = X - \begin{pmatrix} \bar{x} \\ \bar{y} \\ \bar{z} \end{pmatrix} X=Xxˉyˉ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值