主成分分析(Principal Components Analysis)的数学原理

博客围绕PCA展开,已知由m个点组成的集合,目标是寻找编码函数使目标函数最小。文中提出多个命题,如证明了f(x)=D⊺x、D*=argmaxDTr(D⊺X⊺XD)等,并对各命题进行了详细的推导与证明,还涉及PCA约束及相关定义。

已知:

  1. mm 个点组成的集合 S={x(1),,x(m)}Rn
  2. n>ln>l

目标:

寻找一个编码函数

f:nlf:Rn→Rl

和一个解码函数
g:lng:Rl→Rn

使得目标函数:

i=1mx(i)g(f(x(i)))2(1)(1)∑i=1m‖x(i)−g(f(x(i)))‖2

最小。

PCA 约束:

cl,g(c)=Dc(2)(2)∀c∈Rl,g(c)=Dc

其中 D=(d1,,dl)D=(d1,⋯,dl)n×ln×l 维矩阵,且
DD=Il(3)(3)D⊺D=Il

分析

本质上是要求解两个问题:
1. D∀D,求函数 ff 使得目标函数最小。即 xS,D, 若存在一个 c*l,c*∈Rl, 使得 xg(c*)‖x−g(c*)‖ 最小,则 f(x)=c*f(x)=c* 。因此

f(x)=argmincxg(c)(4)(4)f(x)=argminc‖x−g(c)‖

2. 矩阵 D*D* 使得目标函数最小 。

命题 1

xS,D,f(x)=Dx∀x∈S,∀D,f(x)=D⊺x

证明

xS,cl,∀x∈S,∀c∈Rl,
xg(c)2‖x−g(c)‖2
=[xg(c)][xg(c)]=[x−g(c)]⊺[x−g(c)]
=[xg(c)][xg(c)]=[x⊺−g(c)⊺][x−g(c)]
=xxg(c)xxg(c)+g(c)g(c)=x⊺x−g(c)⊺x−x⊺g(c)+g(c)⊺g(c)
由于xg(c),x⊺g(c)∈R, 因此 g(c)x=xg(c),g(c)⊺x=x⊺g(c), 因此
上式 =xx2xg(c)+g(c)g(c)=x⊺x−2x⊺g(c)+g(c)⊺g(c)
由于第一项 xxx⊺x 不依赖于 cc ,且由 (4),
f(x)=argminc2xg(c)+g(c)g(c)f(x)=argminc−2x⊺g(c)+g(c)⊺g(c)
将 (2) 代入,得
f(x)=argminc2xDc+(Dc)(Dc)f(x)=argminc−2x⊺Dc+(Dc)⊺(Dc)
=argminc2xDc+cDDc=argminc−2x⊺Dc+c⊺D⊺Dc
将 (3)代入,得
f(x)=argminc2xDc+cIlcf(x)=argminc−2x⊺Dc+c⊺Ilc
=argminc2xDc+cc=argminc−2x⊺Dc+c⊺c
令梯度为 0⃗ 0→ ,则
c(2xDc+cc)=2Dx+2c=0⃗ ∇c(−2x⊺Dc+c⊺c)=−2D⊺x+2c=0→
c=Dxc=D⊺x
于是 f(x)=Dxf(x)=D⊺x

命题 2

xS,D,g(f(x))=DDx∀x∈S,∀D,g(f(x))=DD⊺x

命题 3

X=(x(1),,x(m)),X=(x(1),⋯,x(m))⊺,
D*=argmaxDTr(DXXD)D*=argmaxDTr⁡(D⊺X⊺XD)

证明

xS,D,∀x∈S,∀D,
xg(f(x))2‖x−g(f(x))‖2
=xDDx2=‖x−DD⊺x‖2
=(InDD)x2=‖(In−DD⊺)x‖2
=[(InDD)x][(InDD)x]=[(In−DD⊺)x]⊺[(In−DD⊺)x]
=x(InDD)(InDD)x=x⊺(In−DD⊺)⊺(In−DD⊺)x
=x(InDD)(InDD)x=x⊺(In−DD⊺)(In−DD⊺)x
=x(In2DD+DDDD)x=x⊺(In−2DD⊺+DD⊺DD⊺)x
=x(In2DD+DD)x=x⊺(In−2DD⊺+DD⊺)x
=x(InDD)x=x⊺(In−DD⊺)x
=xxxDDx=x⊺x−x⊺DD⊺x
因此目标函数
mi=1x(i)g(f(x(i)))2∑i=1m‖x(i)−g(f(x(i)))‖2
=mi=1[(x(i))x(i)(x(i))DDx(i)]=∑i=1m[(x(i))⊺x(i)−(x(i))⊺DD⊺x(i)]
=mi=1(x(i))x(i)mi=1(x(i))DDx(i)=∑i=1m(x(i))⊺x(i)−∑i=1m(x(i))⊺DD⊺x(i)
由于第一项 mi=1(x(i))x(i)∑i=1m(x(i))⊺x(i) 不依赖于 DD ,因此
D*=argmaxDmi=1(x(i))DDx(i)D*=argmaxD∑i=1m(x(i))⊺DD⊺x(i)
由于
mi=1(x(i))DDx(i)∑i=1m(x(i))⊺DD⊺x(i)
=Tr(XDDX)=Tr⁡(XDD⊺X⊺)
=Tr(XXDD)=Tr⁡(X⊺XDD⊺)
=Tr(DXXD)=Tr⁡(D⊺X⊺XD)
因此
D*=argmaxDTr(DXXD)D*=argmaxDTr⁡(D⊺X⊺XD)

命题 4

设半正定矩阵 XXX⊺X 的前 ll 个最大的特征向量(从大到小排列)为 λ1,,λl ,则
1. Tr(DXXD)li=1λiTr⁡(D⊺X⊺XD)≤∑i=1lλi
2. didi 为属于 λiλi 的特征向量时等号成立。

证明

由于 XXX⊺X 是半正定的实对称矩阵,因此存在对角线矩阵
Λ=λ1,λn,Λ=(λ1,⋱λn), 其中 {λi}{λi} 单调不增,即 λiλj,1ijnλi≥λj,1≤i≤j≤n
存在正交矩阵 Pn×nPn×n, 使得
XX=PΛPX⊺X=PΛP⊺
于是
DXXD=DPΛPD=QΛQD⊺X⊺XD=D⊺PΛP⊺D=Q⊺ΛQ
其中 Q=(qij)n×l=PDQ=(qij)n×l=P⊺D
于是 QQ=(PD)PD=DPPD=IlQ⊺Q=(P⊺D)⊺P⊺D=D⊺PP⊺D=Il
Tr(DXXD)=Tr(QΛQ)Tr⁡(D⊺X⊺XD)=Tr⁡(Q⊺ΛQ)
=ni=1lj=1λiqij2=∑i=1n∑j=1lλiqij2
=ni=1λi(lj=1qij2)=∑i=1nλi(∑j=1lqij2)
由于 QQ=IlQ⊺Q=Il ,因此
ni=1qij2=1,1jn∑i=1nqij2=1,1≤j≤n
因此 ni=1(lj=1qij2)=lj=1ni=1λiqij2=l∑i=1n(∑j=1lqij2)=∑j=1l∑i=1nλiqij2=l
由于 QQll 个列向量可以扩展成 nnn 维的标准正交基,因此 Q 的行向量长度小于等于 11 ,即 j=1lqij21,1in
又由于 {λi}{λi} 单调不增,
因此 ni=1λi(lj=1qij2)li=1λi∑i=1nλi(∑j=1lqij2)≤∑i=1lλi
因此 Tr(DXXD)li=1λiTr⁡(D⊺X⊺XD)≤∑i=1lλi
特别的,当 qij=δijqij=δij ,即 Q=(Il0)Q=(Il0) 时,
ni=1λi(lj=1qij2)=li=1λi∑i=1nλi(∑j=1lqij2)=∑i=1lλi
此时 D=PQ=(p1,,pl)D=PQ=(p1,⋯,pl) 即为 PP 的前 ll 列组成的矩阵,即 di 为属于 λiλi 的特征向量。

定义

添加约束:

xn,g(x)=Dx(5)(5)∀x∈Rn,g(x)=D⊺x

Y=(y1,,yl)=XD=f(x(1))f(x(m)),Y=(y1,⋯,yl)=XD=(f(x(1))⊺⋮f(x(m))⊺),
yiyiYY 的第 ii主成分
称:
Percentage of total variation retained = VarYVarX

命题 5

D*=argmaxDVarYD*=argmaxDVar⁡Y

证明

VarY=Tr(YY)=Tr(DXXD)Var⁡Y=Tr⁡(Y⊺Y)=Tr⁡(D⊺X⊺XD)
因此 argmaxDVarY=argmaxDTr(DXXD)argmaxDVar⁡Y=argmaxDTr⁡(D⊺X⊺XD)
由命题3, D*=argmaxDVarYD*=argmaxDVar⁡Y

命题 6

VarYVarXi=1lλii=1nλiVar⁡YVar⁡X≤∑i=1lλi∑i=1nλi

命题 7

didi 为属于 λiλi 的特征向量时, yiyj=λjδijyi⊺yj=λjδij

证明

yi=Xdi,1ilyi=Xdi,1≤i≤l
于是 yiyj=(Xdi)Xdj=diXXdjyi⊺yj=(Xdi)⊺Xdj=di⊺X⊺Xdj
didi 为属于 λiλi 的特征向量时,
diXXdj=λjdidj=λjδijdi⊺X⊺Xdj=λjdi⊺dj=λjδij
因此 yiyj=λjδijyi⊺yj=λjδij

<think>好的,我现在需要回答用户关于主成分分析PCA)的概念、实现方法和应用场景的问题。首先,我得回顾一下自己了解的PCA知识,同时结合用户提供的引用内容,确保回答准确且符合要求。 用户提供的引用中有几个关键点需要注意。引用[1]提到PCA是数据降维的方法之一,引用[3]和[4]详细解释了PCA的原理,包括其作为非监督学习的方法,通过特征值分解进行数据压缩和去噪,以及主成分是原始数据的线性组合。引用[5]给出了一个使用scikit-learn实现PCA的代码示例。此外,引用[3]还提到了PCA的变种,如KPCA、增量PCA和稀疏PCA,这些可能在回答优化或应用部分有用。 首先,我需要明确用户的问题分为三个部分:概念、实现方法和应用场景。结构上应该分点回答,每个部分清晰。同时,根据系统级指令,行内数学公式需要用$...$,独立公式用$$...$$,并且正确使用LaTeX语法。还要生成相关问题,并在引用处添加标识。 概念部分,需要解释PCA的基本原理。根据引用[4],PCA是一种线性变换技术,用于降维并保留大部分信息。主成分是正交变换后的新坐标轴,是原始变量的线性组合。这里可能需要提到方差最大化,即PCA找到数据方差最大的方向作为第一主成分,后续成分与前面的正交且方差次大。需要数学表达式,比如协方差矩阵、特征值分解等。例如,协方差矩阵的计算公式,特征值和特征向量的作用。 实现方法部分,引用[5]中的代码示例是一个很好的起点。需要分步骤说明PCA的实现过程,包括数据标准化、计算协方差矩阵、特征分解、选择主成分、投影数据等步骤。同时,可以提到使用scikit-learn的PCA类简化流程。这里需要确保代码块正确,并解释关键参数如n_components。 应用场景部分,根据引用[1]、[3]、[4],PCA常用于数据压缩、可视化、去噪、特征提取等。比如在图像处理、金融数据分析、生物信息学等领域。需要具体例子,如人脸识别中的降维,或基因组数据中的特征提取。同时,引用[3]提到的变种应用场景,如KPCA处理非线性数据,可以补充说明。 在写作过程中,要检查数学公式的正确性。例如,协方差矩阵的公式是否正确,特征值分解的表示是否准确。例如,协方差矩阵的计算应该是$\frac{1}{n-1}X^TX$,其中$X$是标准化后的数据矩阵。特征分解部分,协方差矩阵分解为$W\Lambda W^T$,其中$W$是特征向量矩阵,$\Lambda$是特征值对角矩阵。 此外,需要确保每个引用标识正确对应到用户提供的引用内容。例如,提到PCA作为非监督学习的方法时引用[3],提到主成分是线性组合时引用[4],代码示例引用[5]。 生成相关问题部分,需要考虑用户可能进一步想知道的内容,比如PCA的优缺点、与其他降维方法的比较、参数选择的影响、数学推导细节等。例如,如何选择主成分的数量,PCA与LDA的区别,PCA的假设是否限制其应用等。 最后,要确保回答结构清晰,分点明确,语言通顺,符合中文习惯。同时,行内公式正确使用$符号,独立公式单独成段,并正确使用LaTeX语法,例如协方差矩阵、投影公式等。</think>### 主成分分析PCA)详解 #### 一、概念与数学原理 主成分分析PCA)是一种**非监督学习的线性降维方法**,核心是通过正交变换将高维数据映射到低维空间,同时保留最大方差信息[^3]。其数学原理包含以下关键步骤: 1. **数据标准化**:将原始数据去中心化(均值为0),公式为: $$X_{\text{norm}} = X - \mu \quad (\mu \text{为均值向量})$$ 2. **协方差矩阵计算**:标准化后的数据计算协方差矩阵: $$C = \frac{1}{n-1}X_{\text{norm}}^T X_{\text{norm}}$$ 3. **特征值分解**:对协方差矩阵$C$进行特征分解,得到特征值$\lambda_i$和对应特征向量$W$: $$C = W \Lambda W^T \quad (\Lambda \text{为特征值对角矩阵})$$ 4. **主成分选择**:按特征值从大到小排序,选取前$k$个特征向量构成投影矩阵$W_k$,将原始数据投影到低维空间: $$Z = X_{\text{norm}} W_k$$ 每个主成分对应一个特征向量,其重要性由特征值$\lambda_i$衡量,方差贡献率为$\lambda_i / \sum \lambda_i$[^4]。 --- #### 二、实现方法(Python示例) 使用`scikit-learn`实现PCA的完整流程: ```python from sklearn.decomposition import PCA from sklearn.preprocessing import StandardScaler # 数据标准化(PCA前必须) scaler = StandardScaler() X_scaled = scaler.fit_transform(X) # 初始化PCA并降维 pca = PCA(n_components=2) # 指定保留2个主成分 X_pca = pca.fit_transform(X_scaled) # 查看方差贡献率 print("方差贡献率:", pca.explained_variance_ratio_) ``` **关键参数说明**: - `n_components`:可设为整数(目标维度)或小数(保留方差的百分比,如0.95) - `svd_solver`:优化算法选择(如`auto`, `full`, `randomized`) --- #### 三、应用场景 1. **数据可视化**:将高维数据降至2D/3D,便于绘制散点图观察分布。 2. **特征压缩**:减少图像、语音等数据的存储和计算成本[^4]。 3. **去噪与预处理**:通过保留主成分过滤噪声,提升模型鲁棒性。 4. **多变量分析**:在金融领域分析股票收益率的关联性,或在生物信息学中处理基因表达数据[^1][^4]。 **案例**: 在人脸识别中,PCA可将数万像素的图片降至几十个主成分(特征脸),显著提升分类效率。 --- #### 四、优化与限制 - **优化方法**: - **核PCA(KPCA)**:通过核函数处理非线性数据。 - **增量PCA**:适用于内存不足的大数据集[^3]。 - **局限性**: - 主成分的可解释性较弱(线性组合可能缺乏物理意义)。 - 对异常值敏感,需提前标准化处理。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值