PCA介绍以及简单实例

目录

  • 数学基础

  • 基变换

  • 特征值,特征向量

  • 线性变换

  • 协方差

  • 矩阵对角化

  • PCA简单实例

简介

PCA全称Principal Component Analysis,即主成分分析,是一种常用的数据降维方法。它可以通过线性变换将原始数据变换为一组各维度线性无关的表示,以此来提取数据的主要线性分量。

数学基础
向量的表示
  • 内积

a 1 , a 2 , ⋯   , a n ) T ⋅ ( b 1 , b 2 , ⋯   , b n ) T = a 1 b 1 + a 2 b 2 + ⋯ + a n b n a_{1},a_{2},\cdots ,a_{n})^T\cdot (b_1,b_2,\cdots,b_n)^T = a_1b_1+a_2b_2+\cdots+a_nb_n a1,a2,,an)T(b1,b2,,bn)T=a1b1+a2b2++anbn

几何解释

A ⋅ B = ∣ A ∣ ∣ B ∣ c o s ( a ) A\cdot B = \left | A \right |\left | B \right |cos(a) AB=ABcos(a)

设向量B的模维1 , 则A与B的内积值等于A向B所在的直线投影的矢量长度
af19c30e-a602-44d2-9bc4-edb27d5a7ac4.jpg

向量表示为(3,2)

实际上表示线性组合

x ( 1 , 0 ) T + y ( 0 , 1 ) T x(1,0)^T + y(0,1)^T x(1,0)T+y(0,1)T (1,0)就是X轴,(0,1)就是y轴

基变换

基是正交的(即内积为0 , 或者直观的说相互垂直)

要求: 线性无关

线性无关.jpg

将(3,2)映射到新的基上 xy

变换 : 数据与一个基做内积运算,结果作为第一个新的坐标分量,然后与第二个基做内积运算,结果作为第二个新坐标的分量

将数据(3,2)映射到基中的坐标

3-2.jpg

基表换 :

基变换.jpg

特征值,特征向量

若A为n阶方阵 , 如果存在一个非零向量X使得 $ Ax = \lambda x $ 则标量 $ \lambda $ 为特征值(eigenvuale) , x为特征向量(eigenvector)

线性变换
一个矩阵与一个列向量A相乘,得到一个新的列向量B,则称该矩阵未列向量A到列向量B的线性变化

我们希望投影后的尽可能分散,而这种分散程度,用方差来表述

V a r ( a ) = 1 m ∑ i = 1 m ( a i − u ) 2 Var(a)=\frac{1}{m}\sum_{i=1}^{m}\left ( a_{i} -u \right )^{2} Var(a)=m1i=1m(aiu)2

寻找一个一维基,使得所有数据变化大这个基上的坐标表示后,方差值最大

解释: 方差越大,说明数据越分散,通常认为,数据的某个特征维度上数据越分散,该特征就越重要

对于更高的维度,比如3维降到2维,在第1维得到最大的方差值后,我们希望第2维也是有最大方差,很明显,直接得到的第2维于第1维"几乎重合" , 所以它们应该有其他约束条件————正交

解释:从直观上说,让2个坐标尽可能表示更多的原始信息,我们是不希望它们之间存在有(线性)相关性的,因为相关性说明2个字段不是完全独立的,必然存在重复表示的信息

数学上用2个向量的协方差来表示其相关性

C o v ( a , b ) = 1 m ∑ i = 1 m ( a i − μ a ) ( b i − μ b ) Cov(a,b) = \frac{1}{m}\sum_{i=1}^{m}\left (a_{i} - \mu _{a} \right )\left ( b_{i} - \mu _{b}\right ) Cov(a,b)=m1i=1m(aiμa)(biμb)

当协方差为0时,表示2个向量线性不相关

所以优化的目标是:

将一组N维向量降为K维(0<K<N),其目标是选择K个单位正交基,使得原始数据变换到这组基上后,各向量间的协方差未0 ,而向量的方差尽可能大

协方差

协方差用于表示变量间的相互关系,变量间的相互关系一般有三种:正相关,负相关和不相关。

** 正相关:**假设有两个变量x和y,若x越大y越大;x越小y越小则x和y为正相关。

** 负相关:**假设有两个变量x和y,若x越大y越小;x越小y越大则x和y为负相关。

** 不相关:**假设有两个变量x和y,若x和y变化无关联则x和y为负相关。

假设有2个变量a和b 构成矩阵X(通常都是sample作为行向量,特征作为列向量)

X = ( a 1 b 1 a 2 b 2 ⋮ ⋮ a m b m ) X = \begin{pmatrix}a_{1} & b_{1}\\ a_{2} & b_{2}\\ \vdots & \vdots\\ a_{m} & b_{m}\end{pmatrix} X=a1a2amb1b2bm

将其转置为sample作为列向量,特征作为行向量:

X = ( a 1 a 2 ⋯ a m b 1 b 2 ⋯ b m ) X = \begin{pmatrix}a_{1} &a_{2} & \cdots &a_{m} \\ b_{1} & b_{2} & \cdots & b_{m}\end{pmatrix} X=(a1b1a2b2ambm)

1 m X X T \frac{1}{m}XX^{T} m1XXT 可以得到(不是推导得到的,而是恰好这个公式很好用):

1 m X X T = ( 1 m ∑ i = 1 m a i 2 1 m ∑ i = 1 m a i b i 1 m ∑ i = 1 m a i b i 1 m ∑ i = 1 m b i 2 ) \frac{1}{m}XX^{T} = \begin{pmatrix}\frac{1}{m} \sum_{i=1}^{m} a_{i}^{2} & \frac{1}{m} \sum_{i=1}^{m} a_{i} b_{i}\\ \frac{1}{m} \sum_{i=1}^{m} a_{i} b_{i} & \frac{1}{m} \sum_{i=1}^{m} b_{i}^{2} \end{pmatrix} m1XXT=(m1i=1mai2m1i=1maibim1i=1maibim1i=1mbi2)

同理m个n维数据,将其转置称n*m个矩阵X ,设 C = 1 m X X T C = \frac{1}{m}XX^T C=m1XXT ,则C是一个对称矩阵,其对角线为各个字段的方差,其中第i行j列和第j行i列元素相同

矩阵对角化

实对称矩阵: 一个n*n的实对称矩阵一定可以找到n个单位正交特征向量

E = ( e 1 , e 2 ⋯ e n ) E = (e_{1} , e_{2} \cdots e_{n}) E=(e1,e2en)

实对称阵可进行对角化:

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

根据特征值的从大到小,将特征向量从上到下排列,则用前K行组成的矩阵乘以原数据矩阵X,就得到了我们需要的降维后的数据矩阵Y

PCA简单实例

图

对角化.png

参考

https://blog.csdn.net/hustqb/article/details/78394058

[图片上传失败…(image-2df3d7-1545210203861)]

协方差矩阵 https://www.youtube.com/watch?v=locZabK4Als

腾讯视频 PCA

https://www.bilibili.com/video/av29441413/?p=2

http://blog.codinglabs.org/articles/pca-tutorial.html

https://blog.csdn.net/hustqb/article/details/78394058

特征值,特征向量

https://www.bilibili.com/video/av6540378?from=search&seid=11885232428903943428

线性代数之六:特征值与特征向量

https://blog.csdn.net/zzulp/article/details/78511711

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值