深入理解主成分分析(PCA):原理、算法与应用

内容摘要

本文深入剖析主成分分析(PCA)技术。介绍其通过正交变换简化数据维度的核心原理,详细推导基于最小投影距离和最大投影方差的算法过程,总结算法流程步骤。全面分析PCA的优缺点,并对比其与KPCA的差异。同时阐述降维的必要性和目的,助力读者系统掌握PCA技术及其在数据处理中的应用。

关键词:主成分分析;降维;协方差矩阵;特征值分解

一、引言

在机器学习和数据处理领域,数据的高维度常常带来诸多挑战,如计算复杂度增加、数据稀疏性问题以及过拟合风险提高等。主成分分析(Principal Component Analysis,PCA)作为一种强大的降维技术,能够有效地将高维数据转换为低维数据,同时最大程度保留数据的关键信息。本文将深入探讨PCA的原理、算法、优缺点以及其在实际应用中的价值。

二、PCA核心思想

2.1 解决数据特征问题

在处理训练数据时,经常会面临数据特征过多或特征累赘的问题。PCA的核心思想是将m维特征映射到n维(n<m),这n维形成的主元是重构出来最能代表原始数据的正交特征。通过这种方式,PCA可以去除数据中的冗余信息,简化数据结构,使得后续的数据分析和处理更加高效。

2.2 核心思想图解

假设数据集中包含m个n维数据,现在需要将其降维到n’维。以n=2,n’=1为例,我们要在众多维度方向中找到一个最能代表原始数据集的方向。
在这里插入图片描述

如图1所示,有 u 1 u_{1} u1 u 2 u_{2} u2两个向量方向,从图中可以直观地看出, u 1 u_{1} u1 u 2 u_{2} u2更适合代表原始数据集。这是基于两个主要评价指标:

  1. 样本点到这个直线的距离足够近。
  2. 样本点在这个直线上的投影能尽可能分开。

如果需要降维的目标维数是其他任意维,则评价指标相应变为:

  1. 样本点到这个超平面的距离足够近。
  2. 样本点在这个超平面上的投影能尽可能分开。

三、PCA算法推理

3.1 基于最小投影距离的推理

假设数据集中包含m个n维数据,且数据进行了中心化。经过投影变换得到的新坐标为 z ( i ) = w T x ( i ) z^{(i)} = w^{T}x^{(i)} z(i)=wTx(i),其中w是标准正交基。如果我们将数据从n维降到n’维,经过降维后,新坐标为 Z = [ z ( 1 ) , z ( 2 ) , ⋯ , z ( m ) ] T Z = [z^{(1)}, z^{(2)}, \cdots, z^{(m)}]^{T} Z=[z(1),z(2),,z(m)]T。样本点 x ( i ) x^{(i)} x(i)在新坐标系下的投影为 x ~ ( i ) = W z ( i ) \tilde{x}^{(i)} = Wz^{(i)} x~(i)=Wz(i)

要想使样本点到超平面的距离足够近,目标是最小化 ∑ i = 1 m ∥ x ~ ( i ) − x ( i ) ∥ 2 2 \sum_{i = 1}^{m}\left\|\tilde{x}^{(i)} - x^{(i)}\right\|_{2}^{2} i=1m x~(i)x(i) 22。对此式进行推理,可得:
∑ i = 1 m ∥ x ~ ( i ) − x ( i ) ∥ 2 2 = ∑ i = 1 m ∥ W z ( i ) − x ( i ) ∥ 2 2 = ∑ i = 1 m ( W z ( i ) ) T ( W z ( i ) ) − 2 ∑ i = 1 m ( W z ( i ) ) T x ( i ) + ∑ i = 1 m ( x ( i ) ) T x ( i ) = ∑ i = 1 m ( z ( i ) ) T ( z ( i ) ) − 2 ∑ i = 1 m ( z ( i ) ) T x ( i ) + ∑ i = 1 m ( x ( i ) ) T x ( i ) = − t r ( W T ( ∑ i = 1 m x ( i ) ) T ( z ( i ) ) + ∑ i = 1 m ( x ( i ) ) T x ( i ) ) = − t r ( W T ( ∑ i = 1 m x ( i ) ( x ( i ) ) T ) W ) \begin{align*} \sum_{i = 1}^{m}\left\|\tilde{x}^{(i)} - x^{(i)}\right\|_{2}^{2} &=\sum_{i = 1}^{m}\left\|Wz^{(i)} - x^{(i)}\right\|_{2}^{2}\\ &=\sum_{i = 1}^{m}\left(Wz^{(i)}\right)^{T}\left(Wz^{(i)}\right)-2\sum_{i = 1}^{m}\left(Wz^{(i)}\right)^{T}x^{(i)}+\sum_{i = 1}^{m}\left(x^{(i)}\right)^{T}x^{(i)}\\ &=\sum_{i = 1}^{m}\left(z^{(i)}\right)^{T}\left(z^{(i)}\right)-2\sum_{i = 1}^{m}\left(z^{(i)}\right)^{T}x^{(i)}+\sum_{i = 1}^{m}\left(x^{(i)}\right)^{T}x^{(i)}\\ &=-tr\left(W^{T}\left(\sum_{i = 1}^{m}x^{(i)}\right)^{T}\left(z^{(i)}\right)+\sum_{i = 1}^{m}\left(x^{(i)}\right)^{T}x^{(i)}\right)\\ &=-tr\left(W^{T}\left(\sum_{i = 1}^{m}x^{(i)}\left(x^{(i)}\right)^{T}\right)W\right) \end{align*} i=1m x~(i)x(i) 22=i=1m Wz(i)x(i) 22=i=1m(Wz(i))T(Wz(i))2i=1m(Wz(i))Tx(i)+i=1m(x(i))Tx(i)=i=1m(z(i))T(z(i))2i=1m(z(i))Tx(i)+i=1m(x(i))Tx(i)=tr WT(i=1mx(i))T(z(i))+i=1m(x(i))Tx(i) =tr(WT(i=1mx(i)(x(i))T)W)
在推导过程中,分别用到了矩阵转置公式以及矩阵的迹,最后两步是将代数和转为矩阵形式。

由于W的每一个向量 w j w_{j} wj是标准正交基, S = 1 m ∑ i = 1 m x ( i ) ( x ( i ) ) T S = \frac{1}{m}\sum_{i = 1}^{m}x^{(i)}\left(x^{(i)}\right)^{T} S=m1i=1mx(i)(x(i))T是数据集的协方差矩阵, ∑ i = 1 m ( x ( i ) ) T x ( i ) \sum_{i = 1}^{m}\left(x^{(i)}\right)^{T}x^{(i)} i=1m(x(i))Tx(i)是一个常量。最小化 ∑ i = 1 m ∥ x ~ ( i ) − x ( i ) ∥ 2 2 \sum_{i = 1}^{m}\left\|\tilde{x}^{(i)} - x^{(i)}\right\|_{2}^{2} i=1m x~(i)x(i) 22又可等价于:
a r g m i n ⏟ W − t r ( W T X X T W ) \underbrace{arg min}_{W}-tr\left(W^{T}XX^{T}W\right) W argmintr(WTXXTW) s . t . W T W = I s.t. W^{T}W = I s.t.WTW=I
利用拉格朗日函数可得到:
J ( W ) = − t r ( W T X X T W ) + λ ( W T W − I ) J(W)=-tr\left(W^{T}XX^{T}W\right)+\lambda\left(W^{T}W - I\right) J(W)=tr(WTXXTW)+λ(WTWI)
对w求导,可得 − X X T W + λ W = 0 -XX^{T}W+\lambda W = 0 XXTW+λW=0,即 X X T W = λ W XX^{T}W=\lambda W XXTW=λW X X T XX^{T} XXT是由n’个特征向量组成的矩阵,λ为 X X T XX^{T} XXT的特征值。w即为我们想要的矩阵。

3.2 基于最大投影方差的推导

基于最大投影方差的推导过程较为复杂,本文不再赘述,感兴趣的读者可自行查阅资料。

四、PCA算法流程总结

PCA算法的输入为n维样本集 X = [ x ( 1 ) , x ( 2 ) , ⋯ , x ( m ) ] X = [x^{(1)}, x^{(2)}, \cdots, x^{(m)}] X=[x(1),x(2),,x(m)],目标降维维数为n’;输出为降维后的新样本集 Y Y Y。主要步骤如下:

  1. 对所有的样本进行中心化,使得数据的均值为0。
  2. 计算样本的协方差矩阵 X X T XX^{T} XXT,协方差矩阵能同时表现不同维度间的相关性及各个维度上的方差。
  3. 对协方差矩阵 X X T XX^{T} XXT进行特征值分解,得到特征值和特征向量。
  4. 取出最大的n’个特征值对应的特征向量,这些特征向量将构成新的低维空间的基。
  5. 标准化特征向量,得到特征向量矩阵w,确保其具有良好的数学性质。
  6. 转化样本集中的每个样本,将原始样本投影到新的低维空间中。
  7. 得到输出新样本集,完成降维操作。

在降维时,有时不明确目标维数,而要指定降维后的主成分比重阈值 k ( k ∈ ( 0 , 1 ] ) k(k \in(0,1]) k(k(0,1])。假设n个特征值为 λ 1 , λ 2 , ⋯ , λ n \lambda_{1}, \lambda_{2}, \cdots, \lambda_{n} λ1,λ2,,λn,则n*可从 ∑ i = 1 n ∗ λ i ∑ i = 1 n λ i ≥ k \frac{\sum_{i = 1}^{n^{*}}\lambda_{i}}{\sum_{i = 1}^{n}\lambda_{i}} \geq k i=1nλii=1nλik得到。

五、PCA思想总结

PCA本质上是将高维数据通过线性变换投影到低维空间的过程。在这个过程中,它去除了可以被其他向量代表的线性相关向量,以及较小特征值对应的特征向量,从而找出最能代表原始数据的投影方法。

完成PCA的关键是求解协方差矩阵。对角化后的协方差矩阵,对角线上较小的新方差对应的就是那些该去掉的维度,所以取那些含有较大能量(特征值)的维度即可,其余的就舍掉,实现去冗余的目的。

六、PCA算法的优缺点

6.1 优点

  1. 仅仅需要以方差衡量信息量,不受数据集以外的因素影响,计算相对简单直接。
  2. 各主成分之间正交,可消除原始数据成分间相互影响的因素,使得数据结构更加清晰。
  3. 计算方法主要运算是特征值分解,易于实现,在许多编程语言和机器学习库中都有现成的实现方法。

6.2 缺点

  1. 主成分各个特征维度的含义具有一定的模糊性,不如原始样本特征的解释性强,这给后续的数据分析和理解带来一定困难。
  2. 方差小的非主成分也可能含有样本的重要信息,因降维去冗余可能对后续数据处理有影响,导致部分有用信息丢失。

七、降维的必要性及目的

7.1 必要性

  1. 避免多重共线性和预测变量之间相互关联。多重共线性会导致解空间的不稳定,从而可能导致结果的不连贯,影响模型的准确性和可靠性。
  2. 高维空间本身具有稀疏性。例如,一维正态分布有68%的值落于正负标准差之间,而在十维空间上只有2%,数据的稀疏性使得在高维空间中进行数据分析和建模变得更加困难。
  3. 避免过多的变量对查找规律造成冗余麻烦,增加计算复杂度和分析难度。
  4. 仅在变量层面上分析可能会忽略变量之间的潜在联系,而降维可以帮助发现这些潜在联系。

7.2 目的

  1. 减少预测变量的个数,简化数据结构,提高模型的训练效率和泛化能力。
  2. 确保这些变量是相互独立的,降低变量之间的相关性,提高模型的稳定性。
  3. 提供一个框架来解释结果,相关特征,特别是重要特征更能在数据中明确显示出来;如果只有二维或者三维的话,就更便于可视化展示,帮助用户更好地理解数据。
  4. 数据在低维下更容易处理、使用,降低计算成本和存储需求。
  5. 去除数据噪声,提高数据的质量和可靠性。
  6. 降低算法运算开销,使得模型能够在更短的时间内完成训练和预测任务。

八、KPCA与PCA的区别

KPCA(Kernelized PCA)用到了核函数思想,使用了核函数的主成分分析一般称为核主成分分析。应用PCA算法的前提是假设存在一个线性超平面,进而投影。如果数据不是线性的,这时就需要用到KPCA。

KPCA将数据集从n维映射到线性可分的高维N(N>n),然后再从N维降维到一个低维度n’(n’<n<N)。假设高维空间数据由n维空间的数据通过映射ϕ产生,n维空间的特征分解为:
∑ i = 1 m x ( i ) ( x ( i ) ) T W = λ W \sum_{i = 1}^{m}x^{(i)}\left(x^{(i)}\right)^{T}W=\lambda W i=1mx(i)(x(i))TW=λW
其映射为:
∑ i = 1 m ϕ ( x ( i ) ) ϕ ( x ( i ) ) T W = λ W \sum_{i = 1}^{m}\phi\left(x^{(i)}\right)\phi\left(x^{(i)}\right)^{T}W=\lambda W i=1mϕ(x(i))ϕ(x(i))TW=λW
KPCA通过在高维空间进行协方差矩阵的特征值分解,然后用和PCA一样的方法进行降维。由于KPCA需要核函数的运算,因此它的计算量要比PCA大很多。

九、总结

主成分分析(PCA)是一种重要的降维技术,在数据处理、机器学习等领域有着广泛的应用。本文详细介绍了PCA的核心思想、算法推理、流程总结、思想总结、优缺点以及与KPCA的区别,同时阐述了降维的必要性和目的。希望读者通过本文的学习,能够对PCA有更深入的理解和掌握,在实际工作中灵活运用这一技术解决数据处理和分析的相关问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/77214.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uniapp-商城-25-顶部模块高度计算

计算高度&#xff1a; 使用computed进行顶部模块的计算。 总高度&#xff1a;bartotalHeight log 介绍--收款码这一条目 也就是上一章节的title的高度计算 bodybarheight。 在该组件中&#xff1a; js部分的代码&#xff1a; 包含了导出的名字&#xff1a; shop-head…

【MCP】第一篇:MCP协议深度解析——大模型时代的“神经连接层“架构揭秘

【MCP】第一篇&#xff1a;MCP协议深度解析——大模型时代的"神经连接层"架构揭秘 一、什么是MCP&#xff1f;二、为什么需要MCP&#xff1f;三、MCP的架构四、MCP与AI交互的原理4.1 ReAct&#xff08;Reasoning Acting&#xff09;模式4.2 Function Calling 模式 五…

李飞飞团队新作WorldScore:“世界生成”能力迎来统一评测,3D/4D/视频模型同台PK

从古老神话中对世界起源的幻想&#xff0c;到如今科学家们在实验室里对虚拟世界的构建&#xff0c;人类探索世界生成奥秘的脚步从未停歇。如今&#xff0c;随着人工智能和计算机图形学的深度融合&#xff0c;我们已站在一个全新的起点&#xff0c;能够以前所未有的精度和效率去…

[react]Next.js之自适应布局和高清屏幕适配解决方案

序言 阅读前首先了解即将要用到的两个包的作用 1.postcss-pxtorem 自动将 CSS 中的 px 单位转换为 rem 单位按照设计稿尺寸直接写 px 值&#xff0c;由插件自动计算 rem 值 2.amfe-flexible 动态设置根元素的 font-size&#xff08;即 1rem 的值&#xff09;根据设备屏幕宽度和…

C# 如何比较两个List是否相等?

简介 在 C# 里&#xff0c;比较两个 List 是否相等&#xff0c;需要考虑多个方面&#xff0c;例如列表中的元素顺序、元素本身是否相等。下面介绍几种常见的比较方法&#xff1a; 基本类型比较&#xff08;元素顺序必须一致&#xff09; var list1 new List<int> { 1…

【技术派后端篇】Redis分布式锁:原理、实践与应用

在当今的高并发系统中&#xff0c;分布式锁是保障数据一致性和系统稳定性的重要手段。今天&#xff0c;我们就来深入探讨一下Redis分布式锁&#xff0c;揭开它神秘的面纱。 1 本地锁与分布式锁的区别 在Java开发的早期阶段&#xff0c;我们接触过synchronized和Lock锁&#x…

奥比中光tof相机开发学习笔记

针对奥比中光 tof相机&#xff0c;官方提供的资料如下ProcessOn Mindmap|思维导图 Orbbec SDK Python Wrapper基于Orbbec SDK进行设计封装&#xff0c;主要实现数据流接收&#xff0c;设备指令控制。下面就其开发适配进行如下总结&#xff1a; &#xff08;1&#xff09;系统配…

如何学习嵌入式

写这个文章是用来学习的,记录一下我的学习过程。希望我能一直坚持下去,我只是一个小白,只是想好好学习,我知道这会很难&#xff0c;但我还是想去做&#xff01; 本文写于&#xff1a;2025.04.16 请各位前辈能否给我提点建议&#xff0c;或者学习路线指导一下 STM32单片机学习总…

2025 年蓝桥杯 Java B 组真题解析分享

今年是我第二次参加蓝桥杯软件类Java B组的比赛&#xff0c;虽然赛前做了不少准备&#xff0c;但真正坐在考场上时&#xff0c;还是有种熟悉又紧张的感觉。蓝桥杯的题目一向以“基础创新”著称&#xff0c;今年也不例外&#xff0c;每道题都考验着我们对算法的理解、代码实现能…

Vue3服务器端渲染深度实践:架构、性能与全栈集成

一、SSR架构设计模式 1.1 架构模式选择矩阵 维度CSRSSR混合渲染首次内容渲染(FCP)慢(依赖JS执行)快(HTML直出)按路由动态选择SEO支持需预渲染原生支持关键页预渲染服务端压力低(静态托管)高(实时渲染)使用缓存中间层TTI(可交互时间)受限于JS体积需等待Hydration渐进式激活适用…

2025年泰迪杯数据挖掘竞赛B题论文首发+问题一二三四代码分享

料 基于穿戴装备的身体活动监测 摘要 随着科技的进步&#xff0c;加速度计&#xff0c;能够实时、准确地捕捉人体的动态变化&#xff0c;成为医学应用中的一个重要工具。本文将基于题目收集数据进行相关研究。 针对题目给出的数据集&#xff0c;我们首先进行数据清洗工作。首…

国内AI搜索平台与ChatGPT横向对比分析

一、核心技术差异 1、‌百度文小言‌ 基于文心大模型4.0升级&#xff0c;主打“新搜索”能力&#xff0c;支持多模态输入&#xff08;语音、图片、视频&#xff09;和富媒体搜索结果‌。 独有的“记忆个性化”功能可结合用户历史行为优化回答&#xff0c;并在医疗、教育等垂直…

安卓环境搭建开发工具下载Gradle下载

1.安装jdk(使用java语言开发安卓app) 核心库 java.lang java.util java.sq; java.io 2.安装开发工具(IDE)android studio https://r3---sn-2x3elnel.gvt1-cn.com/edgedl/android/studio/install/2023.3.1.18/android-studio-2023.3.1.18-windows.exe下载完成后一步一步安装即…

Python 趣味学习 -数据类型脱口秀速记公式 [特殊字符]

&#x1f3a4; Python数据类型脱口秀速记公式 &#x1f40d; 1️⃣ 四大金刚登场 "Set叔(无序洁癖)、Tuple爷(顽固老头)、List姐(百变女王)、Dict哥(万能钥匙)"2️⃣ 特性对比RAP &#x1f3b6; 内存/作用域&#xff1a; 全局变量 → 函数内修改 → 可变(mutable)会…

单片机 | 基于51单片机的倾角测量系统设计

以下是一个基于51单片机的倾角测量系统设计详解,包含原理、公式和完整代码: 一、系统原理 核心器件:MPU6050(集成3轴加速度计+陀螺仪) 主控芯片:STC89C52RC(51单片机) 显示模块:LCD1602液晶 工作原理: 通过MPU6050采集XYZ三轴加速度数据,利用重力加速度分量计算俯仰…

2025年4月16日华为留学生笔试第二题200分

📌 点击直达笔试专栏 👉《大厂笔试突围》 💻 春秋招笔试突围在线OJ 👉 笔试突围OJ 02. 图书馆借阅管理系统 问题描述 卢小姐是一家大学图书馆的管理员,她需要开发一个简单的图书借阅管理系统来处理日常的图书流通操作。系统需要支持以下四种操作: in s:表示一本…

Linux通用一键换源脚本.sh - ubuntu、centos全自动更换国内源 - LinuxMirrors神器

效果 脚本 bash <(curl -sSL https://linuxmirrors.cn/main.sh) 来自 https://linuxmirrors.cn/ 截图 ending...

【Unity】JSON数据的存取

这段代码的结构是为了实现 数据的封装和管理&#xff0c;特别是在 Unity 中保存和加载玩家数据时。以下是对代码设计的逐步解释&#xff1a; 1. PlayerCoin 类 PlayerCoin 是一个简单的数据类&#xff0c;用于表示单个玩家的硬币信息。它包含以下字段&#xff1a; count&…

python实现音视频下载器

一、环境准备 确保当前系统已安装了wxPython 、 yt-dlp 和FFmpeg。当前主要支持下载youtube音视频 1、安装wxPython pip install wxPython2、安装yt-dp pip install wxPython yt-dlp3、安装FFmpeg 在Windows 10上通过命令行安装FFmpeg&#xff0c;最简便的方式是使用包管理…

使用 vxe-table 来格式化任意的金额格式,支持导出与复制单元格格式到 excel

使用 vxe-table 来格式化任意的金额格式&#xff0c;支持导出与复制单元格格式到 excel 查看官网&#xff1a;https://vxetable.cn gitbub&#xff1a;https://github.com/x-extends/vxe-table gitee&#xff1a;https://gitee.com/x-extends/vxe-table 安装 npm install vx…