文章目录知识结构总览一、数据降维的原因为什么需要降维问题为什么需要对数据进行降维二、算法原理寻找方差最大的投影方向2.1 基、内积与正交线性空间的基础2.2 零均值化数据预处理的第一步2.3 方差最大化寻找样本区分度最大的方向2.4 协方差矩阵对角化确保维度之间正交三、PCA算法步骤从数据到降维结果问题如何实现PCA算法四、PCA的优缺点与适用场景问题PCA适用于什么场景有什么局限性总结核心要点回顾方法选择指南实践建议知识结构总览主成分分析PCA数据降维原因算法原理算法步骤应用场景降低资源需求去除噪声增加可解释性基与内积空间零均值化方差最大化协方差矩阵对角化基的定义内积的定义正交基投影方差最大样本区分度最大协方差为0特征值分解实对称矩阵对角化数据矩阵构建零均值化协方差矩阵计算特征值特征向量降维变换核心要点PCA本质无监督的线性特征抽取方法通过寻找方差最大的投影方向实现数据降维核心思想寻找一个基坐标轴使得样本映射到该基上后样本区分度最大方差最大且各维度之间正交协方差为0数学原理通过协方差矩阵的特征值分解找到方差最大的k个主成分方向应用场景数据降维、去除噪声、数据可视化、特征提取主成分分析Principal Component Analysis, PCA是一种无监督的线性特征抽取方法主要应用于数据降维。PCA通过寻找方差最大的投影方向将高维数据映射到低维空间在保持数据主要信息的同时降低数据维度。本教程将系统讲解PCA的算法原理、实现步骤和应用场景。本教程内容概览数据降维的原因理解为什么需要降维降维带来的好处算法原理理解基、内积、正交、方差、协方差等核心概念PCA算法步骤掌握PCA的完整实现流程应用场景与总结了解PCA的优缺点和适用场景学习目标理解PCA的核心思想和数学原理掌握PCA算法的完整实现步骤能够根据数据特点选择合适的降维维度理解PCA的优缺点和适用场景一、数据降维的原因为什么需要降维[!NOTE] 关键点总结数据降维的核心原因是原始数据的维度之间存在相关性数据的内在维度小于自然维度降维可以降低资源需求、去除噪声、增加可解释性。降维原因数据相关性原始数据的维度之间通常存在明显的相关性一旦确定了这种相关性维度之间就可以相互替代数据的内在维度就会比自然维度小降低资源需求维度降低后存储空间和CPU周期都减少内存、硬盘空间减少计算速度提升去除噪声降维过程可以恢复数据之间的线性关系噪声很可能被移除提高数据精度增加可解释性降维后的低维表示有助于解释数据的生成方式二维或三维可视化可以提供数据集特性的线索决策标准数据维度高且存在相关性 → 考虑降维需要可视化分析 → 降维到2-3维需要去除噪声 → 降维计算资源有限 → 降维。问题为什么需要对数据进行降维为什么引入在实际应用中我们经常遇到高维数据如1000维的特征向量但数据的内在维度可能远小于自然维度。例如如果两个特征高度相关其中一个特征的信息可以通过另一个特征表示那么这两个特征就可以合并成一个特征。解决什么问题高维数据带来三个主要问题资源消耗大存储空间和计算时间噪声干扰高维空间中噪声更容易影响数据难以理解无法直观可视化高维数据。降维可以解决这些问题。怎么解决通过PCA等方法找到数据的主要变化方向主成分将高维数据投影到低维空间。例如如果数据的内在维度是1所有点基本在一条直线上即使原始数据是2维的也可以降维到1维而不丢失主要信息。带来什么效果降低资源需求维度降低后存储数据所需的空间变少所需的CPU周期也更少。去除噪声降维过程可以恢复数据之间的线性关系噪声很可能被移除包含较少噪声的数据通常会带来更高的精度。增加可解释性如果降维的输出与生成原始数据的潜在因素一致新的低维表示将有助于解释数据的生成方式将数据降低到二维或三维进行可视化可以提供数据集特性的线索。实际应用示例图像处理1000×1000像素的图像100万维可能只需要几百个主成分就能表示主要信息大幅减少存储空间基因表达分析数万个基因的表达数据数万维可能只需要几十个主成分就能捕获主要变化模式二、算法原理寻找方差最大的投影方向[!NOTE] 关键点总结PCA的核心思想是寻找一个基坐标轴使得样本映射到该基上后样本区分度最大方差最大且各维度之间正交协方差为0通过协方差矩阵的特征值分解实现。核心概念基与内积空间基是线性空间的坐标轴内积空间定义了向量的长度和夹角正交基是相互垂直的基向量零均值化各特征减去均值平移后数据中心为(0,0)方便计算方差和协方差不改变方差方差最大化方差越大表示样本分布越稀疏、区分度越大PCA寻找使投影方差最大的方向协方差矩阵对角化协方差为0表示维度独立通过特征值分解将协方差矩阵对角化特征值对应方差特征向量对应主成分方向决策标准数据已零均值化 → 计算协方差矩阵协方差矩阵是实对称矩阵 → 一定可以对角化选择前k个最大特征值对应的特征向量 → 得到k个主成分。2.1 基、内积与正交线性空间的基础问题什么是基为什么需要正交基为什么引入PCA的核心是寻找一个新的坐标系基使得数据在新坐标系下的表示更简洁。就像在地图上我们可以选择不同的坐标系经纬度坐标系或自定义坐标系PCA选择的是使数据区分度最大的坐标系。解决什么问题原始数据的坐标系可能不是最优的如果选择一个新的坐标系数据在新坐标系下的表示可能更简洁、信息更集中。怎么解决基的定义基是线性空间的坐标轴任何向量都可以表示为基向量的线性组合。例如二维空间中的向量x (x₁, x₂)ᵀ x₁e₁ x₂e₂其中e₁(1,0)ᵀ和e₂(0,1)ᵀ是标准基。内积的定义内积定义了向量的长度和夹角对于n维空间中的向量x₁和x₂内积定义为⟨x₁,x₂⟩ Σx₁ᵢx₂ᵢ。正交的定义当两个向量的内积为0时称它们正交垂直。正交基是相互垂直的基向量正交基的好处是各维度之间完全独立没有冗余信息。带来什么效果优点正交基使得各维度之间完全独立没有冗余信息便于分析和理解。缺点需要理解线性代数的基本概念。适用场景适合所有需要降维的场景。2.2 零均值化数据预处理的第一步问题为什么需要零均值化为什么引入在计算方差和协方差时如果数据不是零均值的公式会更复杂。零均值化可以简化计算使方差和协方差的公式更简洁。解决什么问题原始数据的均值可能不为0这会使方差和协方差的计算公式复杂化。零均值化后方差可以直接用样本的平方和除以样本个数表示。怎么解决零均值化是指各特征减去它们的均值即x’ x - x̄。这是一个数据平移的过程平移后所有数据的中心是(0,0)。重要性质零均值化只是平移坐标轴并不改变每个维度方向上的方差。例如如果原始数据x₁的方差是1.2零均值化后x₁’的方差仍然是1.2。带来什么效果优点简化方差和协方差的计算公式方便后续的统计运算。缺点需要额外的预处理步骤。适用场景PCA算法必须进行零均值化。2.3 方差最大化寻找样本区分度最大的方向问题如何衡量投影方向的优劣为什么引入PCA的目标是找到使数据区分度最大的投影方向。如果投影后样本重叠在一起信息丢失严重如果投影后样本分散信息保留更多。解决什么问题需要找到一个衡量投影方向优劣的指标。方差可以衡量样本分布的稀疏程度方差越大表示样本分布越稀疏、区分度越大。怎么解决方差的定义一个维度方向上的方差是每个样本与该维度上样本均值的差的平方和的均值即Var(x₁) (1/n)Σ(x₁ᵢ - x̄₁)²。零均值化后的方差由于已经零均值化x̄₁ 0方差可以直接用每个样本的平方和除以样本个数表示即Var(x₁) (1/n)Σx₁ᵢ² (1/n)x₁·x₁。优化目标寻找一个一维基使得所有数据变换为这个基上的坐标表示后方差值最大。带来什么效果优点方差最大化可以找到使样本区分度最大的投影方向保留更多信息。缺点只考虑了第一个方向对于高维数据还需要考虑其他方向。适用场景适合寻找第一个主成分方向。2.4 协方差矩阵对角化确保维度之间正交问题如何选择多个投影方向为什么引入对于高维数据我们需要选择多个投影方向。如果只是单纯选择方差最大的方向第二个方向可能与第一个方向几乎重合这样的维度没有用。解决什么问题需要确保多个投影方向之间不存在线性相关性因为相关性意味着两个维度不是完全独立必然存在重复表示的信息。怎么解决协方差的定义两个维度的协方差表示它们的相关性由于已经零均值化协方差为Cov(x₁,x₂) (1/n)Σx₁ᵢx₂ᵢ (1/n)x₁·x₂。协方差矩阵对于m个特征协方差矩阵C (1/n)XXᵀ其中X是m×n的数据矩阵每行是一个特征每列是一个样本。协方差矩阵的对角线元素是各特征的方差非对角线元素是特征之间的协方差。对角化当协方差为0时表示两个维度完全独立。为了让协方差为0选择第二个维度时只能在与第一个维度正交的方向上选择。因此最终选择的两个方向一定是正交的。特征值分解协方差矩阵是实对称矩阵一定可以对角化。通过特征值分解C PΛPᵀ特征值λᵢ对应第i个主成分方向的方差特征向量pᵢ对应第i个主成分方向。带来什么效果优点协方差矩阵对角化可以确保各主成分之间正交独立没有冗余信息特征值的大小直接对应主成分的重要性。缺点需要计算特征值分解计算复杂度较高。适用场景适合所有需要多个主成分的场景。三、PCA算法步骤从数据到降维结果[!NOTE] 关键点总结PCA算法包括6个步骤构建数据矩阵、零均值化、计算协方差矩阵、特征值分解、选择主成分、降维变换最终得到降维后的数据。算法步骤步骤1将原始数据按列组成m行n列矩阵Xm个特征n个样本步骤2将X的每一行进行零均值化减去该行的均值步骤3计算协方差矩阵C (1/n)XXᵀ步骤4对协方差矩阵进行特征值分解得到特征值和对应的标准特征向量标准正交基步骤5将特征向量按对应特征值大小从上到下按行排列成矩阵取前k行组成矩阵P步骤6Y PX即为降维到k维后的数据决策标准数据已准备好 → 构建矩阵X需要降维到k维 → 选择前k个最大特征值对应的特征向量km时矩阵P是正交矩阵对应正交变换。问题如何实现PCA算法为什么引入理解了PCA的原理后需要掌握具体的实现步骤才能在实际应用中使用PCA进行数据降维。解决什么问题提供PCA算法的完整实现流程从原始数据到降维后的数据。怎么解决步骤1构建数据矩阵设有n条m维数据将原始数据按列组成m行n列矩阵X其中每行代表一个特征字段每列代表一个样本。步骤2零均值化将X的每一行代表一个特征字段进行零均值化即减去这一行的均值。步骤3计算协方差矩阵C (1/n)XXᵀ其中Xᵀ是X的转置。步骤4特征值分解求出协方差矩阵C的特征值及对应的标准特征向量标准正交基。由于C是实对称矩阵一定可以对角化特征值都是实数不同特征值对应的特征向量互相正交。步骤5选择主成分将标准特征向量按对应特征值大小从上到下按行排列成矩阵取前k行组成矩阵Pk是降维后的维度。步骤6降维变换Y PX即为降维到k维后的数据其中Y是k×n矩阵每列是一个降维后的样本。带来什么效果优点算法步骤清晰易于实现可以灵活选择降维维度k。缺点需要计算特征值分解对于大规模数据计算复杂度较高。适用场景适合中小规模数据的降维对于大规模数据可以考虑增量PCA或其他方法。实际应用示例Iris数据集降维150个样本4个特征花萼长度、花萼宽度、花瓣长度、花瓣宽度可以降维到2维进行可视化人脸识别1000个人脸图像每个图像10000维可以降维到100维保留主要特征四、PCA的优缺点与适用场景[!NOTE] 关键点总结PCA是无监督的线性降维方法优点包括无参数限制、降维效果好、主成分正交、计算简单缺点包括无法个性化干预、可能丢失重要信息、只适用于线性关系、内存需求大。优点无监督学习不受参数限制计算结果只与数据本身相关无需人为设定参数降维效果好有损压缩可以较大程度地保持原有数据的信息主成分正交各主成分之间正交可消除原始数据成分间的相互影响计算简单易于实现降低训练模型的成本缺点无法个性化干预如果用户有先验知识无法通过参数化等方法对处理过程进行个性化干预可能丢失重要信息被剔除的贡献率小的主成分也有可能含有样本差异的重要信息只适用于线性关系在非高斯分布的情况下主成分可能不是最优解对于高阶相关性需要考虑Kernel PCA内存需求大需要将所有数据集放入内存大数据集时内存处理效率较低决策标准数据线性相关 → PCA数据非线性相关 → Kernel PCA有先验知识 → 考虑其他方法大数据集 → 考虑增量PCA或SVD需要可视化 → 降维到2-3维。问题PCA适用于什么场景有什么局限性为什么引入了解PCA的优缺点和适用场景可以帮助我们在实际应用中判断是否应该使用PCA以及如何更好地使用PCA。解决什么问题明确PCA的适用场景和局限性避免在不合适的场景中使用PCA或者在使用PCA时注意其局限性。怎么解决优点分析PCA是无监督学习算法不受参数限制计算结果只与数据本身相关可以对数据进行降维处理有损压缩可以较大程度地保持原有数据的信息各主成分之间正交可消除原始数据成分间的相互影响计算方法简单易于实现。缺点分析如果用户对观测对象有一定的先验知识PCA无法通过参数化等方法对处理过程进行个性化干预被剔除的贡献率小的主成分也有可能含有样本差异的重要信息在非高斯分布的情况下PCA得出的主成分可能并不是最优解PCA可以很好的解除线性相关但对于高阶相关性就没有办法了需要考虑Kernel PCAPCA需要将所有数据集放入内存大数据集时内存处理效率较低。带来什么效果适用场景数据维度高且存在线性相关性需要数据可视化降维到2-3维需要去除噪声计算资源有限需要降维。不适用场景数据存在高阶非线性相关性考虑Kernel PCA用户有先验知识需要个性化干预大数据集内存不足考虑增量PCA或SVD非高斯分布数据考虑其他降维方法。实际应用示例适用场景图像压缩图像像素之间存在线性相关性、基因表达分析基因之间存在相关性、数据可视化降维到2-3维不适用场景非线性数据如螺旋数据需要考虑Kernel PCA、有标签的监督学习可以考虑LDA等有监督降维方法总结核心要点回顾通过本教程的学习我们掌握了主成分分析的核心知识数据降维的原因原始数据的维度之间存在相关性数据的内在维度小于自然维度降维可以降低资源需求、去除噪声、增加可解释性。算法原理PCA通过寻找方差最大的投影方向主成分实现降维各主成分之间正交协方差为0通过协方差矩阵的特征值分解实现。核心步骤包括零均值化、计算协方差矩阵、特征值分解、选择主成分。算法步骤构建数据矩阵 → 零均值化 → 计算协方差矩阵 → 特征值分解 → 选择主成分 → 降维变换。优缺点优点包括无参数限制、降维效果好、主成分正交、计算简单缺点包括无法个性化干预、可能丢失重要信息、只适用于线性关系、内存需求大。方法选择指南根据数据特点选择降维方法数据线性相关→ PCA标准PCA数据非线性相关→ Kernel PCA通过核函数将非线性转为线性有标签数据→ LDA等有监督降维方法大数据集→ 增量PCA或SVD避免内存问题需要可视化→ 降维到2-3维根据应用需求选择降维维度可视化→ 降维到2-3维特征提取→ 根据累积贡献率选择维度如保留95%的信息数据压缩→ 根据压缩比需求选择维度实践建议数据预处理必须进行零均值化确保数据质量维度选择根据累积贡献率选择降维维度通常保留85%-95%的信息结果验证降维后验证数据的主要信息是否保留可以通过重构误差评估方法对比对于非线性数据尝试Kernel PCA对于有标签数据考虑LDA计算优化对于大规模数据考虑增量PCA或SVD避免内存问题正如Theobald Smith所说决定结果的正是我们在处理表面上微不足道、枯燥乏味、而且不胜麻烦的细枝末节时所采用的谨慎小心的态度。PCA的实现虽然步骤简单但每个步骤都需要仔细处理零均值化、特征值分解、主成分选择等细节都会影响最终结果。参考文献Karl Pearson. On lines and planes of closest fit to systems of points in space. Philosophical Magazine, 1901.Harold Hotelling. Analysis of a complex of statistical variables into principal components. Journal of Educational Psychology, 1933.Schölkopf B., Smola A., Müller K.R. Kernel principal component analysis. In: Gerstner W., Germond A., Hasler M., Nicoud J.D. (eds) Artificial Neural Networks — ICANN’97Tipping M.E., Bishop C.M. Probabilistic Principal Component Analysis. Journal of The Royal Statistical Society Series B-statistical Methodology, 1999, 61(3): 611-622
企业数字化 ERP 产品动态
相关推荐
【模式识别与机器学习(14)】惰性学习kNN(聚类分析)【3】K-means算法中K值确定的五种方式 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 9:44:30
模型说“我不能“,是哪一层在开口?dsh-purge 免费破甲完整指南 模型说"我不能",是哪一层在开口?dsh-purge 免费破甲完整指南 【免费下载链接】dsh-purge DeepSeek Harness 破甲:让所有模型都能破甲,不同模型可换不同提示词;默认提示词面向国模「小码酱」。Jailbreak for … · 2026/11/3 9:44:30
python中str函数怎么用?使用方法与注意事项详解 当中, 函数str是用来把那种其他类型的数据转变成字符串类型的。在这篇文章中, 作者对str这个函数的使用方法进行了非常仔细的介绍, 这其中具体包含了关于怎么进行转换的相关规则, 还有那些经常会被用到的参数设置, 以及可以拿来看的示例代码, 并且在最后还特别地提了一些需要大… · 2026/11/3 10:24:38
一图变多图:FLUX.2-klein-4B-GGUF 多参考图编辑能力深度体验 一图变多图:FLUX.2-klein-4B-GGUF 多参考图编辑能力深度体验
FLUX.2-klein-4B-GGUF 是 Black Forest Labs 开源图像模型 FLUX.2-klein-4B 的 GGUF 量化版本,由 unsloth 团队制作。它把文生图、图像编辑和多参考图编辑整合进同一个 4B 参数模型ÿ… · 2026/11/3 10:24:38
写好AI提示词,普通创作者也能很快写好内容 当前这个阶段, 有非常多的人正在通过人工智能手段来处理撰写文案、构思选题以及制作内容这些具体的工作。不过也是用AI这回事, 有些人用它写出来的文章, 观点让人觉得挺新的, 表达起来也显得特别活跃有生气;可是另一些人呢, 通过这种方式得到的东西,却全… · 2026/11/3 10:24:38
assert.istrue用法 .用法其中的那种语句是用来测试条件的真假情况的, 要是得出的结果不是真的话, 那个语句就会引发异常, 然后程序就停止运行了, 这种语句在测试以及调试代码的时候会特别有用, 它能够帮助程序员非常快地发现一些潜在的问题。这个句子的基本的语法结构, 其实它是这样的:,这个内容实… · 2026/11/3 10:24:38
ScopeWeaver 入门实战:如何创建并追踪你的第一个自主渗透测试任务 【免费下载链接】scopeweaver ScopeWeaver: English and Korean localization of ARTEX, with preserved AGPL-3.0 attribution. 项目地址: https://gitcode.com/gh_mirrors/sc/scopeweaver 点击查看 免费下载 ScopeWeaver 是一款基于 LLM 多智能体(Mul… · 2026/11/3 10:23:38
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 6:04:24
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 5:52:46
STM32F411RE与MAX14431实现SPI隔离:工业现场抗共模干扰实战 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59
ESP32+大模型AI硬件开发:从Demo到产品的8个工程问题 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59
基于MAX14431BAEE+与PIC18F85J10的SPI隔离方案设计与实践 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 6:04:24
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 5:52:46