当前位置: 首页 > news >正文

数据挖掘5.3 PCA主成分分析降维

PCA降维

Principal Component Analysis (PCA) 主成分分析

降维 Dimensionality Reduction

矩阵 XXX 的维度为:

X∈RN×dX \in \mathbb{R}^{N \times d} XRN×d

NNN :样本数量 (number of samples)
ddd :特征维度 (number of features)

降维后,ddd会变小。

比如,[10,1]降维后变成[10],直接删除一个维度,是最简单直接的降维方式(当然会有很多问题)。

PCA

PCA 是投影,本质是降维。PCA是实现这一点的方法,一种数据变换的方法 (A method for transforming the data)

将数据投影到一组正交向量上,使得投影后数据的方差最大。

在这里插入图片描述

在方向 www 上的投影公式:
z=wTxz = w^T x z=wTx

目标是找到使投影方差最大的方向www
max⁡wVar(z)\max_w Var(z) wmaxVar(z)

PCA降维,投影到一个单位向量方向,各个数据点方差最大,这是第一主成分与第一主成分的正交(垂直)的方向单位向量,是第二主成分
在这里插入图片描述

投影值怎么计算

举个栗子
a1=[23]a_1 = \begin{bmatrix} 2 \\ 3 \end{bmatrix} a1=[23]
我们想要把它投影到 xxx 轴,于是点乘 w=[10]w = \begin{bmatrix} 1 \\ 0 \end{bmatrix}w=[10]
wTa1=[10][23]=[2]w^T a_1 = \begin{bmatrix} 1 & 0 \end{bmatrix} \begin{bmatrix} 2 \\ 3 \end{bmatrix} =[ 2 ] wTa1=[10][23]=[2]
如果我们想要把它投影到 yyy 轴,于是点乘 w=[01]w = \begin{bmatrix} 0 \\ 1 \end{bmatrix}w=[01]
wTa1=[01][23]=[3]w^T a_1 = \begin{bmatrix} 0 & 1 \end{bmatrix} \begin{bmatrix} 2 \\ 3 \end{bmatrix} =[ 3 ] wTa1=[01][23]=[3]

由此可见,如果想要把一个点投影到别的轴上,点乘这个轴的单位方向向量就可以了。

如何实现:朴素方法 (Naïve Implementation)

设置 p=0p = 0p=0
ppp000π\piπ 进行迭代(分步):
在这里插入图片描述

  • 计算投影向量 (projection vector):
    wp=[cos⁡(p)sin⁡(p)]w_p = \begin{bmatrix} \cos(p) \\ \sin(p) \end{bmatrix} wp=[cos(p)sin(p)]

  • 将数据投影到该方向:
    zi=wpTxiz_i = w_p^T x_i zi=wpTxi

  • 计算投影后数据的方差 (variance)。

  • 绘制方差随 ppp 变化的曲线。
    在这里插入图片描述

  • 找到使方差最大的 ppp

主成分分析 (PCA) 的直观实现:
通过不同角度 $p$ 的方向向量 $w_p$ 投影数据;
计算投影后的方差;
找到方差最大的方向,这个方向就是 **第一主成分**。

具体计算推导

1 PCA投影方差计算——max wTCww^T C wwTCw,C协方差矩阵

投影方差最大——> max wTCww^T C wwTCw,C是协方差矩阵,以下是推导过程,

主成分分析 (PCA):投影方差与协方差矩阵的关系
定义数据在方向 www 上的投影:
z=wTxz = w^T x z=wTx

投影的方差:
Var(z)=Var(wTx)=E[(wTx−wTμ)2]Var(z) = Var(w^T x) = E\big[(w^T x - w^T \mu)^2\big] Var(z)=Var(wTx)=E[(wTxwTμ)2]

展开:
=E[(wT(x−μ))(wT(x−μ))]=E[wT(x−μ)(x−μ)Tw]= E\big[(w^T(x - \mu))(w^T(x - \mu))\big]\\ = E\big[w^T(x - \mu)(x - \mu)^T w\big] =E[(wT(xμ))(wT(xμ))]=E[wT(xμ)(xμ)Tw]
提取常数 www
=wTE[(x−μ)(x−μ)T]w= w^T E\big[(x - \mu)(x - \mu)^T\big] w =wTE[(xμ)(xμ)T]w

协方差矩阵公式:
Cov(x)=E[(x−μ)(x−μ)T]=CCov(x) = E[(x - \mu)(x - \mu)^T] = C Cov(x)=E[(xμ)(xμ)T]=C

最终推出:
Var(z)=wTCwVar(z) = w^T C w Var(z)=wTCw

数据在方向 www上的投影方差 =wTCw= w^T C w=wTCw,而 PCA 就是寻找让这个这个投影方差最大的方向 www

2 max wTCww^T C wwTCw——求解主成分方向 www

目标,希望找到一个单位向量 www,使得投影后的方差最大:
max⁡wVar(z1)=wTCw\max_w Var(z_1) = w^T C w wmaxVar(z1)=wTCw
约束条件是 wTw=1w^T w = 1wTw=1

其中 CCC 是协方差矩阵。

拉格朗日乘子法 (Lagrange Multipliers)

将带约束的优化问题转化为拉格朗日函数(把带约束的优化问题转成无约束问题):

L(w,α)=wTCw−α(wTw−1)L(w, \alpha) = w^T C w - \alpha (w^T w - 1) L(w,α)=wTCwα(wTw1)
所求为 maxwTCwmax \quad w^T C wmaxwTCw,也就是 maxL(w,α)max\quad L(w, \alpha)maxL(w,α)

www 求导

∂L∂w=2Cw−2αw=0\frac{\partial L}{\partial w} = 2 C w - 2 \alpha w = 0 wL=2Cw2αw=0

Cw=αwC w = \alpha w Cw=αw

  • www 是协方差矩阵 CCC特征向量
  • α\alphaα 是对应的 特征值
  • 使方差最大的方向,就是 **最大特征值对应的特征向量**

最终,我们所要求最大化投影方差,只要求协方差矩阵的特征向量就行了。

PCA 在降维中的应用

协方差矩阵中较小的特征值对应的方向对总方差贡献很小,可以舍弃而不会丢失太多信息。
我们通常保留累计贡献率达到 90% 的前 kkk 个特征值和特征向量。

方差贡献率 (Proportion of Variance, PoV)

Proportion of Variance Explained (累计方差贡献率曲线)
在这里插入图片描述

横轴 (Eigenvectors):主成分个数 kkk
纵轴 (Prop of Var):累计方差贡献率(PoV)
曲线随 kkk 增大而上升,并逐渐接近 1。

在图中,当 k≈20 时,累计方差贡献率已经接近 90%,说明只需保留前 20 个主成分,就能保留大部分信息。

PoV(k)=λ1+λ2+⋯+λkλ1+λ2+⋯+λdPoV(k) = \frac{\lambda_1 + \lambda_2 + \cdots + \lambda_k}{\lambda_1 + \lambda_2 + \cdots + \lambda_d} PoV(k)=λ1+λ2++λdλ1+λ2++λk

其中:

  • λi\lambda_iλi 为特征值,且按从大到小排序
  • ddd 为原始数据的维度
  • k<dk < dk<d 为选择保留的主成分数

如何选择 kkk

一般当 PoV>0.9PoV > 0.9PoV>0.9 时可以停止。
也可以通过 碎石图 (Scree Plot) 找“肘点 (elbow)”来确定 kkk
在这里插入图片描述

Scree Graph (碎石图)
横轴 (Eigenvectors):特征向量的索引(对应主成分的序号)。
纵轴 (Eigenvalues):对应的特征值大小(代表方差贡献)。

数据投影:将 ddd 维数据 xxx (均值向量为 μ\muμ)投影到 kkk 维子空间,使用 k×dk \times dk×d 的投影矩阵 WWW

z=WT(x−μ)z = W^T (x - \mu) z=WT(xμ)

其中:

  • WWW 包含前 kkk 个特征向量
  • zzz 是新的 kkk 维数据表示

PCA:重建与重建误差 (Reconstruction & Error)

1. PCA 投影

在 PCA 中,数据 xxx 被投影到低维空间:

z=WT(x−μ)z = W^T (x - \mu) z=WT(xμ)

其中:

  • xxx :原始 ddd 维数据向量
  • μ\muμ :均值向量
  • WWWd×kd \times kd×k 的投影矩阵(由前 kkk 个特征向量组成)
  • zzz :新的 kkk 维数据表示

在这里插入图片描述

2. PCA 重建

从低维表示 zzz 还原回高维近似数据:

x^=Wz+μ\hat{x} = W z + \mu x^=Wz+μ

因为 WWW 的列向量是正交的,有 WWT=IWW^T = IWWT=I

3. 重建误差

定义为原始数据 xxx 与重建数据 x^\hat{x}x^ 的差异:

Erec=∑t=1N∥x^t−xt∥E_{rec} = \sum_{t=1}^N \| \hat{x}^t - x^t \| Erec=t=1Nx^txt

其中:

  • NNN :样本总数
  • x^t\hat{x}^tx^t :第 ttt 个样本的重建结果
  • xtx^txt :第 ttt 个原始样本

4. 含义

  • 重建误差越小,说明保留的主成分越能代表原始数据。
  • k=dk=dk=d 时(即不降维),重建误差为 0。
  • k<dk<dk<d 时,误差取决于被舍弃的特征值大小。

PCA的缺陷

在图像中的应用

在不影响预测准确率的情况下,第一个主成分可能并不总是最佳主成分。

PCA的愚蠢

在这里插入图片描述
PCA是一种愚蠢的算法,它在代码中实现,你给它数据,它就会输出主成分。尽管有些数据被我们解释为最大方差的方向,但事实可能并不是,比如右图。这取决于数据集的选择。如果数据集类似左边,它可以给出一些最大方差的方向。但如果像右边这样,那就完全没有意义。

http://www.dtcms.com/a/349732.html

相关文章:

  • AI模型接入Web搜索功能实践与最佳API服务选型
  • 扭蛋机小程序系统开发:连接线上线下娱乐的新桥梁
  • 习题库小程序的设计与实现 计算机毕业设计源码27057
  • RAG检索增强生成
  • SuiHub 台北站正式发布,助力亚洲科技生态创新
  • [读论文]Hunyuan 3D 系列
  • 【Linux系统】1.Linux基础指令与权限
  • 8月25号打卡
  • 数据采集怎么做?质量、效率与合规该怎么平衡?
  • LLM学习:langchain架构——chain
  • 2025年03月 Python(二级)真题解析#中国电子学会#全国青少年软件编程等级考试
  • 【AGI使用教程】GPT-OSS 本地部署(2)
  • 【广告系列】流量优选
  • 第二章 设计模式故事会之策略模式:魔王城里的勇者传说
  • AcrelEMS-EDU在实践中的应用系列—“综合能源管理”
  • 2025年8月25日-8月31日(qtopengl+ue独立游戏)
  • 23种设计模式:模板方法模式与策略模式
  • vue 一键打包上传
  • 【车载开发系列】汽车零部件DV与PV试验的差异
  • 【QT/C++】实例理解类间的六大关系之组合关系(Composition)
  • 农业气象监测站:像敏锐的精灵,捕捉农业气象的每一丝变化
  • 18 继续学习
  • 【图像处理基石】基于Real-ESRGAN的实时图像超分辨率技术实现
  • 【GPT-5 与 GPT-4 的主要区别?】
  • 零基础也能写博客:cpolar简化Docsify远程发布流程
  • 基于波前编码成像系统模拟及图像复原的MATLAB实现
  • GPT5的Test-time compute(测试时计算)是什么?
  • 《C++ Primer 第五版》 initializer_list
  • 记一次 element-plus el-table-v2 表格滚动卡顿问题优化
  • Vue SFC Playground 如何正确引入 naive-ui