PCA算法详解

本文介绍PCA算法,它是常用数据分析方法,可用于高维数据降维。先阐述内积、基、方差、协方差等数学概念,接着说明用向量和矩阵进行转换与降维的方法,以及如何选择合适基向量。还提及用奇异值分解实现PCA算法,最后总结了PCA算法的步骤。

摘要

本文将介绍PCA算法,包括PCA算法的数学理解以及如何用代码逻辑

一、简介

PCA(Principal Component Analysis,主成分分析)是一种常用的数据分析方法。PCA通过线性变换将原始数据变换为一组各维度线性无关的表示,可用于提取数据的主要特征分量,常用于高维数据的降维。

参考文章

二、数学相关概念

内积与投影

在线性代数中,基(basis)(也称为基底)是描述、刻画向量空间的基本工具。向量空间的基是它的一个特殊的子集,基的元素称为基向量。向量空间中任意一个元素,都可以唯一地表示成基向量的线性组合。如果基中元素个数有限,就称向量空间为有限维向量空间,将元素的个数称作向量空间的维数。

使用基底可以便利地描述向量空间。比如说,考察从一个向量空间 V V {\displaystyle \mathrm {V} }{\mathrm {V}} VV射出的线性变换 f f {\displaystyle f}f ff,可以查看这个变换作用在向量空间的一组基 B B {\displaystyle {\mathfrak {B}}}{\mathfrak {B}} BB上的效果。掌握了 f ( B ) f ( B ) {\displaystyle f({\mathfrak {B}})}f({\mathfrak {B}}) f(B)f(B),就等于掌握了 f f 对 V V {\displaystyle f}f对{\displaystyle \mathrm {V} }{\mathrm {V}} ffVV中任意元素的效果。

不是所有空间都拥有由有限个元素构成的基底。这样的空间称为无限维空间。某些无限维空间上可以定义由无限个元素构成的基。如果承认选择公理,那么可以证明任何向量空间都拥有一组基。一个向量空间的基不止一组,但同一个空间的两组不同的基,它们的元素个数或势(当元素个数是无限的时候)是相等的。一组基里面的任意一部分向量都是线性无关的;反之,如果向量空间拥有一组基,那么在向量空间中取一组线性无关的向量,一定能将它扩充为一组基。在内积向量空间中,可以定义正交的概念。通过特别的方法,可以将任意的一组基变换成正交基乃至标准正交基。

方差的概念

方差是在概率论和统计方差衡量随机变量或一组数据时离散程度的度量。概率论中方差用来度量随机变量和其数学期望(即均值)之间的偏离程度。统计中的方差(样本方差)是每个样本值与全体样本值的平均数之差的平方值的平均数。在许多实际问题中,研究方差即偏离程度有着重要意义。

协方差的概念

在概率论和统计学中,协方差(Covariance)用于衡量两个随机变量的联合变化程度。而方差是协方差的一种特殊情况,即变量与自身的协方差。

期望值分别为 E ( X ) = μ E ( X ) = μ 与 E ( Y ) = ν E ( Y ) = ν {\displaystyle E(X)=\mu }E(X)=\mu与{\displaystyle E(Y)=\nu }E(Y)=\nu E(X)=μE(X)=μE(Y)=νE(Y)=ν的两个具有有限二阶矩的实数随机变量X 与Y 之间的协方差定义为:

cov ⁡ ( X , Y ) = E ⁡ ( ( X − μ ) ( Y − ν ) ) = E ⁡ ( X ⋅ Y ) − μ ν . cov ⁡ ( X , Y ) = E ⁡ ( ( X − μ ) ( Y − ν ) ) = E ⁡ ( X ⋅ Y ) − μ ν . {\displaystyle \operatorname {cov} (X,Y)=\operatorname {E} ((X-\mu )(Y-\nu ))=\operatorname {E} (X\cdot Y)-\mu \nu .}{\displaystyle \operatorname {cov} (X,Y)=\operatorname {E} ((X-\mu )(Y-\nu ))=\operatorname {E} (X\cdot Y)-\mu \nu .} cov(X,Y)=E((Xμ)(Yν))=E(XY)μν.cov(X,Y)=E((Xμ)(Yν))=E(XY)μν.
协方差表示的是两个变量的总体的误差,这与只表示一个变量误差的方差不同。 如果两个变量的变化趋势一致,也就是说如果其中一个大于自身的期望值,另外一个也大于自身的期望值,那么两个变量之间的协方差就是正值。 如果两个变量的变化趋势相反,即其中一个大于自身的期望值,另外一个却小于自身的期望值,那么两个变量之间的协方差就是负值。

如果X 与Y 是统计独立的,那么二者之间的协方差就是0,这是因为

E ( X ⋅ Y ) = E ( X ) ⋅ E ( Y ) = μ ν , E ( X ⋅ Y ) = E ( X ) ⋅ E ( Y ) = μ ν {\displaystyle E(X\cdot Y)=E(X)\cdot E(Y)=\mu \nu ,}E(X \cdot Y)=E(X) \cdot E(Y)=\mu\nu E(XY)=E(X)E(Y)=μν,E(XY)=E(X)E(Y)=μν,
但是反过来并不成立,即如果X 与Y 的协方差为0,二者并不一定是统计独立的。

协方差矩阵

在统计学与概率论中,协方差矩阵(也称离差矩阵、方差-协方差矩阵)是一个矩阵,其 i, j 位置的元素是第 i 个与第 j 个随机变量之间的协方差。这是从标量随机变量到高维度随机向量的自然推广。

实对称矩阵

实对称矩阵有一系列非常好的性质:

  • 实对称矩阵不同特征值对应的特征向量必然正交。
  • 特征向量λ重数为r,则必然存在r个线性无关的特征向量对应于λ,因此可以将这r个特征向量单位正交化。
特征值特征向量

A为n阶矩阵,若数λ和n维非0列向量x满足Ax=λx,那么数λ称为A的特征值,x称为A的对应于特征值λ的特征向量。式Ax=λx也可写成( A-λE)x=0,并且|λE-A|叫做A 的特征多项式。当特征多项式等于0的时候,称为A的特征方程,特征方程是一个齐次线性方程组,求解特征值的过程其实就是求解特征方程的解。

三、数学理论

在数学上,向量的表示是基于基向量的,如三维坐标中x轴,y轴,z轴就是一组三维基向量分别为: ( 1 , 0 , 0 ) T (1,0,0)^T (1,0,0)T, ( 0 , 1 , 0 ) T (0,1,0)^T (0,1,0)T, ( 0 , 0 , 1 ) T (0,0,1)^T (0,0,1)T,此时在三维坐标中的一个坐标,如: ( 3 , 4 , 6 ) T (3,4,6)^T (3,4,6)T,就是该向量分别在x轴,y轴,z轴上的投影的长度 $ (3,4,6)^T = 3 * (1,0,0)^T +4 * (0,1,0)^T +6 * (0,0,1)^T $

此时要是重新选择一组基向量,如何将向量转换到新的基向量所对应的坐标,这里就涉及到向量的变化。

这里可以直接得出结论:将向量与基向量进行内积所得到的向量就是该向量在基向量下的坐标。
(这里对基向量有要求,基向量的模需要为1,如果不唯一需要转换成模为1的基向量,或者在向量与基向量内积的时候除以基向量的模。)

3.1用向量解决转换

新向量B,向量 A T A^T AT,基向量 α 、 β 、 γ \alpha、\beta、\gamma αβγ。B、A和基向量都是n维
当基向量的模为1时:

B = ( α . A T , β . A T , γ . A T ) B = (\alpha.A^T,\beta.A^T,\gamma.A^T) B=(α.AT,β.AT,γ.AT)

当基向量的模不为1时:

B = ( α . A T ∣ ∣ α ∣ ∣ , β . A T ∣ ∣ β ∣ ∣ , γ . A T ∣ ∣ γ ∣ ∣ ) B = (\frac{\alpha.A^T}{||\alpha||},\frac{\beta.A^T}{||\beta||},\frac{\gamma.A^T}{||\gamma||}) B=(αα.AT,ββ.AT,γγ.AT)

3.2用矩阵解决转换

此时我们得到了向量转换的方法,再扩大问题,如果对于m个n维向量,新基向量为: α 1 , α 2 . . . . . . α n \alpha_1,\alpha_2......\alpha_n α1,α2......αn,基向量也为n维,此时如何将这m个n维向量转换为新基向量下的新坐标。

可以看出,问题只是稍微的变复杂了,并没有太过于复杂,看到m个n维向量,第一时间就应该想到矩阵,上面的问题我们可以用矩阵的方式来表达,如下:

m个n维向量矩阵表示:(每一列代表一个向量)
A = [ a 1 a 2 ⋯ a m ] = [ a 11 a 12 ⋯ a 1 m a 21 a 22 ⋯ a 2 m ⋮ ⋮ ⋱ ⋮ a n 1 a n 2 ⋯ a n m ] A = \begin{bmatrix} a_{1} & a_{2} & \cdots & a_{m} \end{bmatrix} = \begin{bmatrix} a_{11} & a_{12} & \cdots & a_{1m}\\\\ a_{21} & a_{22} & \cdots & a_{2m}\\\\ \vdots & \vdots & \ddots & \vdots\\\\ a_{n1} & a_{n2} & \cdots & a_{nm} \end{bmatrix} A=[a1a2am]=a11a21an1a12a

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fadeGR

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值