PCA (Principal Component Analysis)主成分分析

简介

通常来说,数据是机器学习应用中大部分性能提升的驱动因素,有时数据会很复杂,数据越复杂会导致很难理解哪部分数据特征在实际应用中很重要。因此,降维是一种帮助我们更好地宏观理解数据的技术,它减少了数据集的特征数量,因此我们只剩下最重要的数据集特征。

主成分分析是一种用于降维的技术,通过它,我们可以直接减少特征的数量,从而缩小重要特征的范围并节省计算量。如下图所示,数据从1000个点的三维空间转换为100个点的二维空间,计算节省了10倍。因此,PCA不仅可以减少特征数量,还可以节省计算量,加快算法的训练和测试时间。
在这里插入图片描述
基本思想
PCA是无监督的、基于方差的。基本思想是将原有的多个特征转化为几个代表性好的综合特征,这几个综合特征能反映原有特征的大部分信息,且各个特征保持独立。如果提取的特征分布很紧密,模型很难将其分开,如果特征分布比较离散,则容易分开,那么怎么判断数据的离散程度呢?即方差,数据越离散,方差就越大,PCA要做的就是寻找一个坐标轴,使得数据在该坐标轴上离散度最高,这样达到降维的效果,因此将原有的多个特征转化为几个代表性好的综合特征。

举个栗子
概念看起来比较枯燥,举几个例子感受下PCA的降维打击~
下面是用PCA将二维数据(平面)转换为一维数据(数轴)。
在这里插入图片描述

下面是用PCA将五维数据转换为二维数据。

在这里插入图片描述

以二维数据转换为一维数据为例,这种方向的线会有很多,如下图仅仅展示两种有向线(红色和绿色),那到底选择哪一条线才能尽可能保留最多的原始信息呢?直观上看法:希望投影后的投影值尽可能分散,即方差越大越好,显然,绿色的分散程度高。那么,我们如何从“数学”的角度更精确地去说明呢?接下来继续说明~

在这里插入图片描述

PCA原理

基础概念

首先回顾下线性代数基本概念。

向量:有方向、大小,起始点为原点,一般用箭头表示。

内积
两个向量
A ⃗ = [ a 1 , a 2 , ⋯   , a n ] 和 B ⃗ = [ b 1 , b 2 , ⋯   , b n ] 内 积 为 : A ⃗ ⋅ B ⃗ = ∑ i = 1 n a i b i = a 1 b 1 + a 2 b 2 + ⋯ + a n b n \vec{A}=[a_1, a_2, \cdots, a_n]和\vec{B}=[b_1, b_2, \cdots, b_n]内积为:\\ \vec{A}\cdot \vec{B} = \sum_{i=1}^n a_ib_i = a_1b_1 + a_2b_2 + \cdots + a_nb_n A =[a1,a2,,an]B =[b1,b2,,bn]A B =i=1naibi=a1b1+a2b2++anbn
几何定义为:
A ⃗ ⋅ B ⃗ = ∣ a ⃗ ∣   ∣ b ⃗ ∣ cos ⁡ θ    \vec{A} \cdot \vec{B} = |\vec{a}| \, |\vec{b}| \cos \theta \; A B =a b cosθ
几何意义:向量A与向量B的内积值等于向量A向向量B所在直线投影的矢量长度乘以向量B的模,如下图所示。
在这里插入图片描述

基变换
向 量 ( 3 , 2 ) = x ( 1 , 0 ) T + y ( 0 , 1 ) T 其 中 , x = 3 , y = 2 向量(3,2)=x(1,0)^T+y(0,1)^T\\ 其中,x=3,y=2 (3,2)=x(1,0)T+y(0,1)Tx=3y=2
基:(1,0)和(0,1)叫做二维空间中的一组基
基需要满足以下两个性质:
①基是正交的 (内积为0,即垂直)
②线性无关

因为坐标系中的坐标轴也满足以上两个性质,因此基可以看作是坐标系,基变换也就是坐标系变换。对于向量来说,向量本身是不变的,但在不同坐标系中的表示是不同的,即向量在不同坐标系中坐标值是不一样的。通过基变换,将得到向量在其他基上的坐标值。

方差
用来度量单个随机变量的离散程度
离散程度越大,方差就越大
在这里插入图片描述
协方差
方差仅仅反应的是一个变量(一维)的离散程度,到二维了,我们可以对每个维度求其离散程度,但是人类是不满足的,他们还想知道更多,想知道两个维度之间的关系。举个直观的例子:身高和体重,我们采集的数据里面有一个固有的性质,那就是身高越高的样本似乎总有着更大的体重,那么如何衡量这种关系呢?很显然,单独求两个方差是不行的。

因此,需要协方差这个概念。公式如下:
σ ( x , y ) = 1 n − 1 ∑ i = 1 n ( x i − x ‾ ) ( y i − y ‾ ) c o v ( X , Y ) = E [ ( X − μ x ) ( Y − μ y ) ] \sigma (x,y)=\frac{1}{n-1}\sum_{i=1}^{n}(x_{i}-\overline{x})(y_{i}-\overline{y})\\ \mathrm{cov}(X, Y) = \mathrm{E}\begin{bmatrix} (X- \mu_x) (Y - \mu_y) \end{bmatrix} σ(x,y)=n11i=1n(xix)(yiy)cov(X,Y)=E[(Xμx)(Yμy)]

当Cov(x, y) >0时,说明X与Y正相关。
当Cov(x, y) < 0时,说明X与Y负相关。
当Cov(x, y) = 0时,说明X与Y不相关。

综上:协方差的值如果为正值,则说明两者是正相关的 (数值越大,相关性越强),结果为负值就说明负相关的,如果为0,也是就是统计上说的“相互独立”。

协方差矩阵
对多维随机变量X=[X1,X2,X3,…,Xn]T,我们往往需要计算各维度两两之间的协方差,这样各协方差组成了一个n×n的矩阵,称为协方差矩阵。协方差矩阵是个对称矩阵,对角线上的元素是各维度上随机变量的方差。我们定义协方差矩阵为Σ,这个符号与求和∑相同,需要根据上下文区分。矩阵内的元素Σij为:

在这里插入图片描述

这样,这个协方差矩阵为:

在这里插入图片描述
协方差矩阵为一个方阵,对角线上是方差。

实对称矩阵
定义:一个n行n列的实对称矩阵一定可以找到n个单位正交特征向量E
E = ( e 1 , e 2 , . . . , e n ) E=(e_1,e_2,...,e_n) E=(e1,e2,...,en)
实对称矩阵可进行对角化
E T C E = Λ = ( λ 1 λ 2 ⋱ λ n ) E^{T}CE=\Lambda =\begin{pmatrix} \lambda _1 & & & \\ & \lambda _2 & & \\ & & \ddots & \\ & & & \lambda _n \end{pmatrix} ETCE=Λ=λ1λ2λn
根据特征值从大到小,将特征向量从上到下排列

PCA思想

PCA思想:
( p 1 p 2 ⋮ p r ) ( a 1 a 2 ⋯ a m ) = ( p 1 a 1 p 1 a 2 ⋯ p 1 a m p 2 a 1 p 2 a 2 ⋯ p 2 a m ⋮ ⋮ ⋱ ⋮ p r a 1 p r a 2 ⋯ p r a m ) \begin{pmatrix} p_1\\ p_2\\ \vdots \\ p_r \end{pmatrix}\begin{pmatrix} a_1 &a_2 &\cdots & a_m \end{pmatrix}=\begin{pmatrix} p_1a_1 &p_1a_2 &\cdots &p_1a_m \\ p_2a_1 & p_2a_2 & \cdots & p_2a_m\\ \vdots & \vdots &\ddots &\vdots \\ p_ra_1 & p_ra_2 &\cdots & p_ra_m \end{pmatrix} p1p2pr(a1a2am)=p1a1p2a1pra1p1a2p2a2pra2p1amp2ampram
以上,
基 为 : ( p 1 p 2 ⋮ p r ) 基为:\begin{pmatrix} p_1\\ p_2\\ \vdots \\ p_r \end{pmatrix} p1p2pr
数 据 为 : ( a 1 a 2 ⋯ a m ) 数据为:\begin{pmatrix} a_1 &a_2 &\cdots & a_m \end{pmatrix} (a1a2am)
数 据 在 该 基 上 的 表 达 : ( p 1 a 1 p 1 a 2 ⋯ p 1 a m p 2 a 1 p 2 a 2 ⋯ p 2 a m ⋮ ⋮ ⋱ ⋮ p r a 1 p r a 2 ⋯ p r a m ) 数据在该基上的表达:\begin{pmatrix} p_1a_1 &p_1a_2 &\cdots &p_1a_m \\ p_2a_1 & p_2a_2 & \cdots & p_2a_m\\ \vdots & \vdots &\ddots &\vdots \\ p_ra_1 & p_ra_2 &\cdots & p_ra_m \end{pmatrix} p1a1p2a1pra1p1a2p2a2pra2p1amp2ampram
因此PCA的目的就是找到合适的基。
此时需要引入协方差矩阵,
方向:如何选择这个方向(或者说基)才能尽量保留最多的原始信息?
一种直观的看法:希望投影后的投影值尽可能的分散(回到了文章开头的想法)
越分散,方差就越大。
如果单纯只选择方差最大的方向,那么后续所有的方向会和方差最大的方向接近重合。
为了让两个维度尽可能表示更多的原始信息,我们是不希望它们存在线性相关。
因此我们可以用协方差表示其相关性,即当协方差为0时,表示两个维度完全独立。
为了让协方差为0,我们只能选择第二个基时只能在与第一个基正交的方向上选择。最终选择的两个方向一定是正交的。正如下图所示。

在这里插入图片描述
以上都是PCA的思想,即如何找到那个合适的基。

对于一组N维向量降到k维(k>0且k<N),目标就是选择k个单位正交基,使原始数据变换到这组基上后,各维度间协方差为0,维度上的方差尽可能大。
协方差矩阵:
在这里插入图片描述
对角线为维度间的方差,其他元素为协方差。
因为协方差矩阵是实对称矩阵,因此可以进行协方差矩阵对角化,即除了对角线以外的其他元素化为0,并在对角线上将元素按大小从上到下进行排列。
因为要降维到k维,进行对角化后的特征向量从上到下排列组成的矩阵,取其前k行组成新的矩阵乘以原始数据矩阵X,就可以得到我们需要的降维后的数据矩阵Y。

summary

从高层次的角度来看,PCA 有三个主要步骤:
(1) 计算数据的协方差矩阵
(2) 计算这个协方差矩阵的特征值和向量
(3) 使用特征值和向量仅选择最重要的特征向量,然后将数据转换为这些向量以降低维度

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值