主成分分析(PCA)的数学原理与应用

【数据处理方法】主成分分析(PCA)原理分析 本文主要以尽量少的公式,用多图示的方式来帮助从原理上理解PCA 阅读详情

PCA(主成分分析)主要用于数据降维。

问题:样本 x i ∈R m   以列向量表示,现将 n  个样本构成的样本集 X∈R m×n   降维到 X ^ ∈R k×n  (k≤m ),以达到数据压缩的目的。

不难发现,上述问题的核心是:将 X  中的每个样本点由原来的 m  维坐标系投影到新的 k  维坐标系中。

考虑最简单的二维数据:

import numpy as np
import matplotlib.pyplot as plt

# 绘制数据点
k = 0.3   # 斜率
b = 0.1   # 截距
x1 = np.random.random(30)
x2 = k * x1 + b + np.random.randint(-5, 5, 30) / 100

ax = plt.gca()
ax.set_aspect(1)
plt.scatter(x1, x2, marker='x')

# 中心点
cx = np.mean(x1)
cy = np.mean(x2)

# 绘制第一个维度u1
u1_x = 0.9
u1_y = k * u1_x + b
plt.annotate('', xytext=(cx, cy), xy=(u1_x, u1_y), arrowprops=dict(arrowstyle="->"))
plt.text(u1_x - 0.1, u1_y + 0.01, '$u_1$', fontsize=16)

# 绘制第二个维度u2
u2_x = cx - 0.02
u2_y = (-1 / k) * u2_x + (cy + cx / k)
plt.annotate('', xytext=(cx, cy), xy=(u2_x, u2_y), arrowprops=dict(arrowstyle="->"))
plt.text(u2_x - 0.1, u2_y - 0.01, '$u_2$', fontsize=16)

plt.show()

这里写图片描述

人能够很直观地看出上述二维数据的2个维度的大致方向,其中最主要的那个方向是 u 1   ,因为数据在该方向上的分布最为分散(投影绝对值或方差之和最大)。也可以换个角度看,如果要用1维数据来最大限度地“拟合”二维数据,显然这些二维数据投影在 u 1   这个方向上要比投影在 u 2   上好。因此,u 1   是该数据集的【第1主要成分】,而 u 2   则是【第2主要成分】,这个思想同样适用于更高维的数据。

通过上面的分析可知,当所有的数据点在 u 1   方向上的投影绝对值(或方差)之和最大时,此时的 u 1   就是第1主成分。找 u 1   的问题则可以表示为:

argmax u 1  (∑ i=1 n ∣proj(x i ,u 1 )∣)x i ,u 1 ∈R m  

其中,proj(x i ,u 1 )  为 x i   在 u 1   上的投影长度。容易求得:

proj(x i ,u 1 )=x i ⋅u 1 ∥u 1 ∥ 2  =x T i u 1 ∥u 1 ∥ 2   

因为我们只考虑 u 1   的方向,故设 u 1   具有单位长度,即 u 1   的 L 2   范数为1,则:

== argmax u 1  (∑ i=1 n ∣proj(x i ,u 1 )∣)=argmax u 1  (∑ i=1 n ∣x T i u 1 ∣)s.t.∥u 1 ∥ 2 =1argmax u 1  (∑ i=1 n (x T i u 1 ) 2 )=argmax u 1  (∑ i=1 n (x T i u 1 ) T x T i u 1 )argmax u 1  (∑ i=1 n u T 1 x i x T i u 1 )=argmax u 1  (u T 1 (∑ i=1 n x i x T i )u 1 )  

因为,X=[x 1 x 2 ⋯x n  ],X T =⎡ ⎣ ⎢ ⎢ ⎢ ⎢ x T 1 x T 2 ⋮x T n  ⎤ ⎦ ⎥ ⎥ ⎥ ⎥  ,所以:

argmax u 1  (u T 1 (∑ i=1 m x i x T i )u 1 )=argmax u 1  (u T 1 XX T u 1 ) 

上式即为我们要最大化的目标函数。若能证明矩阵 XX T ∈R m×m   是(半)正定的,则说明 u T 1 XX T u 1   是(半)正定二次型,也就存在最大值。设 λ  是对称矩阵 XX T   的任一特征值,其对应的特征向量是 v∈R m  ,则有:

⇒⇒⇒⇒⇒ XX T v=λv(XX T v) T v=(λv) T vv T XX T v=v T λv(X T v) T X T v=λv T v∥X T v∥ 2 2 =λ∥v∥ 2 2 λ≥0  

证毕。

下面使用拉格朗日乘子法求 u T 1 XX T u 1   在约束 u T 1 u 1 =1  下的极值,令:

f(u 1 )=u T 1 XX T u 1 −α(1−u T 1 u 1 ) 

对 u 1   求导,并令其为 0 :

⇒ ∂f∂u 1  =2XX T u 1 −2αu 1 =0XX T u 1 =αu 1   

可见,当 u 1   取矩阵 XX T   的某个特征值 α  对应的特征向量时,前述目标函数取得最大值。注意,若选取的特征值 α  不同,其对应的特征向量 u 1   也不同,则前述目标函数的最大值也不同。将上式代入目标函数,可得:

argmax u 1  (u T 1 XX T u 1 )=αu T 1 u 1 =α 

可见,当 u 1   取最大特征值对应的特征向量时,前述目标函数将取得所有最大值中的最大值,此时的 u 1   即为【第1主成分】。若取前 k  大特征值对应的特征向量 u 1 ,u 2 ,⋯,u k  ,则样本 x i   在这 k  个主成分(维度)上的投影则为:

x i  ^ =[x T i u 1 x T i u 2 ⋯x T i u k  ]k≤n 

主成分矩阵:

U=[u 1 u 2 ⋯u k  ]∈R m×k k≤n 

降维后的数据集:

X ^ =U T X∈R k×n  

将降维后的 k  维数据集还原到原始的 m  维坐标系:

X restore =UX ^ =UU T X∈R m×n  

下面通过一个图像压缩的例子来验证PCA。

import math
import numpy as np
from PIL import Image
import matplotlib.pyplot as plt

# 读取图片
X = np.array(Image.open(".\_data\son.jpg").convert('L'), 'f') # M*N
M = X.shape[0]
N = X.shape[1]

XXT = X.dot(X.T) # shape: M*M

e, V = np.linalg.eig(XXT) #特征值、特征向量 
U = V[np.argsort(-e)] # M*M,按特征值从大到小,对特征向量排序

plt.subplots(figsize=(20,10))
r, c, i = (5, 6, 1)

for k in range(M, 0, -math.ceil(M/(r*c))):
    Uk = U[:, 0:k] # M*k
    X_ = Uk.dot(Uk.T).dot(X) # X_restore: M*N
    ratio = 1.0*k*(M+N)/(M*N)
    plt.subplot(r, c, i, title='↓k=%d, ratio=%.1f' % (k, ratio)).axis('off')
    plt.imshow(Image.fromarray(X_))
    i+=1

plt.axis('off')
plt.show()

这里写图片描述

主成分分析(PCA)原理 主成分分析(PCA)原理学习记录 阅读详情

相关推荐

PCA主成分分析:从数学原理到实战应用的全流程指南

在数据科学和机器学习领域,高维数据处理常面临维度灾难和特征冗余的挑战。主成分分析(PCA)作为一种经典的线性降维技术,其核心原理是通过正交变换将原始特征转换为一组线性无关的主成分,这些主成分按方差大小排序,能够最大程度保留数据信息。PCA的技术价值在于有效去除噪声、降低计算复杂度并缓解过拟合,为后续建模提供更精炼的特征表示。在应用场景上,PCA广泛应用于特征工程、数据可视化、图像压缩与去噪等领域。本文以鸢尾花数据集为例,详细演示了数据标准化、协方差矩阵分解、主成分选择及结果可视化的完整流程,并深入探讨了PC

weixin_33924312的博客 325

主成分分析 (PCA) 原理详解

在许多领域的研究与应用中,通常需要对含有多个变量的数据进行观测,收集大量数据后进行分析寻找规律。多变量大数据集无疑会为研究和应用提供丰富的信息,但是也在一定程度上增加了数据采集的工作量。更重要的是在很多情形下,许多变量之间可能存在相关性,从而增加了问题分析的复杂性。如果分别对每个指标进行分析,分析往往是孤立的,不能完全利用数据中的信息,因此盲目减少指标会损失很多有用的信息,从而产生错误的结论。 因此需要找到一种合理的方法,在减少需要分析的指标同时,尽量减少原指标包含信息的损失,以达到对所收集数据进行全面

人无远虑,必有近忧 9779

MATLAB主成分分析(PCA)实战:从数学原理到数据降维应用

在数据分析与机器学习领域,处理高维数据时常常面临维度灾难和多重共线性问题。主成分分析(PCA)作为一种经典的线性降维技术,其核心原理是通过正交变换,将一组可能存在相关性的变量转换为少数几个线性不相关的综合变量(主成分),同时尽可能保留原始数据集中的变异信息。从技术价值看,PCA不仅能简化数据结构、提升后续建模效率,还能消除噪声、方便数据可视化,是特征提取和探索性数据分析的关键工具。其应用场景广泛,包括综合评价、图像处理、信号去噪以及作为回归、聚类等模型的前置降维步骤。本文以MATLAB为实践平台,结合协方差

weixin_34199764的博客 226

PCA主成分分析基于sparkml采用Java语言开发

PCA主成分分析基于sparkml采用Java语言开发 什么是PCA? 以下解释来源于知乎回答(10 封私信 / 76 条消息) 论智 - 知乎 (zhihu.com) PCA主元分析,主要用于数据降维 寻找所有产品中很不相同的属性(特征),也就是寻找尽可能体现产品差异的属性,并且可以通过这些属性预测或者重建原本产品的特征(feature) x轴为feature1,Y轴为feature2,根据产品的feature1和feature2值得到产品(蓝点)在坐标中的散列图(假设他们是相关的) 在蓝点中画一条直线

LvJinYang的博客 904

主成分分析(PCA)算法以及PCA在人脸识别上的应用及代码

        PCA(Principal Component Analysis)是一种常用的数据分析方法,PCA通过线性变换将原始数据变换为一组各维度线性无关的表示,可用于提取数据的主要特征分量,可用于高维数据的降维。        一般情况下,在数据挖掘和机器学习中,数据被表示为向量。例如某个淘宝店2012年全年的流量及交易情况可以看成一组记录的集合,其中每一天的数据是一条记录,格式如下: ...

qq_32865355的博客 2万+

pca_transform:Java PCA转换数据矩阵

介绍 这是一个实现主成分分析(PCA)数据转换的Java库。 它对数据矩阵进行操作,其中每一行对应一个实矢量,每一列对应一个维。 特征 该库的主要用例是根据训练数据创建PCA转换,然后将其应用于测试数据。 该库可以对测试数据执行两次转换: 旋转-转换数据矩阵以获得对角协方差矩阵。 有时将这种转换简称为PCA。 白化-转换数据矩阵以获得单位协方差矩阵。 该方法处理以下情况:数据矩阵中的某些列与线性相关,或者数据矩阵中的行数多于行,即数据集中的维数多于样本。 在这种情况下,该方法将丢弃某些输出空间尺寸,换句话说,将生成一个转换,其中输出矢量的尺寸小于输入矢量的尺寸。 为了处理列几乎与线性相关的情况,我们使用阈值参数丢弃标准偏差几乎为零的尺寸; 它设置为R统计环境在prcomp函数的帮助页面中引入的默认值( tol = sqrt(.Machine$double.eps) )(请参阅帮助页

PCA(主成分分析)的数学原理(之前一门课程写的报告,现在发上来...)

1.背景介绍 一般情况下,在数据挖掘和机器学习等数据分析领域中,数据都被表示为向量。众所周知,很多机器学习算法的复杂度和数据的维数有着密切关系,甚至与数据维数呈指数级别关联。然而实际机器学习中处理的数据可达成千上万甚至几十万维,在这种情况下,算法的资源消耗是不可接受的,因此我们必须对数据进行降维。PCA(Principal Component Analysis),即所谓的主成分分析,...

lovemylife1234的博客 2430

java实现的PCA

基于java实现的PCA代码,注释比较详细,初学者或者数学专业的人看懂没问题

PCA主成分分析实战指南:从数学原理到Python实现与建模应用

主成分分析是一种经典的数据降维与特征提取技术,其核心原理是通过正交变换将一组可能存在相关性的变量转换为少数几个线性不相关的综合变量,即主成分。从技术价值看,PCA能有效消除数据冗余、降低计算复杂度、缓解维度灾难与过拟合问题,同时提升后续模型的稳定性与可解释性。在应用场景上,它广泛应用于数据预处理、特征工程、可视化、综合评价及解决多重共线性等领域。本文聚焦于PCA的实战解析,深入探讨其数学直觉、标准化处理、特征值分解等关键步骤,并结合Python的sklearn库,详细演示了如何通过碎石图选择主成分、解读载荷

weixin_29038345的博客 207

PCA用java实现

我用java实现了PCA算法,其中调用了matlab的函数。

STM32F103四位数码管动态显示实战:从硬件连接到代码调试(附Proteus仿真)

本文详细介绍了STM32F103驱动四位数码管的动态显示技术,从硬件连接到代码调试的全过程。内容包括共阴/共阳数码管的区别、GPIO配置、动态显示原理及优化方法,并附有Proteus仿真验证。通过实战案例,帮助开发者快速掌握STM32数码管动态显示的核心技术。

weixin_29168393的博客 470

主成分分析(PCA)实战:从数学原理到评价决策应用

在数据分析与机器学习领域,降维是处理高维数据、提取核心特征的关键技术。其核心原理是通过线性变换将原始相关变量重构为一组互不相关的新变量,旨在最大化数据投影方差,从而在减少数据复杂度的同时保留绝大部分信息。这项技术的核心价值在于能够有效解决维度灾难、去除冗余信息,并揭示数据内在结构。在工程实践中,它广泛应用于图像处理、推荐系统、金融风控及综合评价等多个场景。特别是在综合评价与决策分析中,主成分分析(PCA)能帮助我们从众多相关性强的指标中提炼出少数几个核心综合因子,例如政务支撑力、市场环境等,从而实现客观、清

weixin_33946605的博客 444

48V电动车电池包拆解:硬核入门BMS硬件设计与故障排查

BMS(电池管理系统)是锂电应用的核心安全与性能保障模块,其本质是融合电化学、模拟电路、嵌入式控制与热管理的交叉系统。理解BMS不能止步于SOC算法或通信协议,而需回归硬件本体——从电压采样精度、MOSFET驱动时序、被动均衡散热设计到NTC热耦合布局,每一处物理实现都直接决定系统可靠性。48V平台因兼具安全性(<60V ELV)、复杂度(13–14串)与产业普及性,成为BMS工程实践的理想标本。本文聚焦真实电池包中的PCB级设计缺陷识别、关键参数现场验证(如±5mV采样误差、5mΩ导通内阻)、UART协议

weixin_29191081的博客 237

【AI深究】主成分分析(PCA)全网最详细全流程详解与案例(附大量Python代码演示)|数学原理、案例流程、代码演示及结果解读|几何意义与主成分选择、与LDA的对比、实际应用场景、工程建议与优缺点

大家好,我是爱酱。本篇将系统讲解主成分分析(PCA, Principal Component Analysis)的原理、数学推导、案例流程、代码实现和工程建议。内容适合初学者和进阶读者,分步解释,配合公式和具体例子。 注:本文章含大量数学算式、详细例子说明及大量代码演示,大量干货,建议先收藏再慢慢观看理解。新频道发展不易,你们的每个赞、收藏跟转发都是我继续分享的动力!

AI人工智能爱酱~你的AI学习好帮手~ 8062

医疗大模型实战——从零构建MedicalGPT全流程解析

本文详细解析了从零构建医疗大模型MedicalGPT的全流程实战。基于Qwen-7B模型与约195万条中文医疗数据,完整复现了增量预训练、监督微调与偏好对齐三大核心环节,并分享了如何在有限硬件资源下实现高效训练与部署,为开发者提供了可复现的医疗AI项目实战指南。

weixin_29193259的博客 553

基于Python的农业市场价格抓取与供需分析:现代爬虫技术与实战应用

在正式开始爬虫开发之前,我们首先了解爬虫的基本概念和工作原理。爬虫(Web Scraping)是通过编程的方式,自动从互联网上获取信息的技术。它可以帮助我们提取HTML页面中的特定数据,通常用于收集并处理大量信息。发送HTTP请求:爬虫需要向目标网站发送请求,获取网站的HTML页面内容。解析HTML页面:通过HTML解析器对获取的页面内容进行解析,提取其中需要的数据。数据清洗与存储:将提取的数据进行清洗,去除多余的字符或无关内容,然后存储到合适的格式(如CSV文件、数据库等)中。数据分析与可视化。

2201_76125261的博客 1117

主成分分析(PCA)实战指南:从数学原理到Python实现与建模应用

主成分分析(PCA)是一种核心的降维技术,旨在解决高维数据分析中的‘维数灾难’问题。其基本原理是通过正交变换,将一组可能存在相关性的变量转换为少数几个线性无关的主成分,这些主成分能够最大程度地保留原始数据的方差信息。这项技术的核心价值在于数据压缩、去除冗余以及揭示数据结构,是特征工程和探索性数据分析的关键环节。在工程实践中,PCA广泛应用于图像处理、生物信息学、金融建模和综合评价等多个场景,能够有效提升模型效率与可解释性。本文深入探讨了PCA的数学内核、标准化预处理的重要性、主成分个数的选择策略,并结合Py

weixin_28221501的博客 314

MoveIt 运动学、运动规划、混合规划、move_group

混合规划是运动规划方法的一个术语,它将异构运动规划器结合起来,以产生更稳健或反应更快的解决方案。这种通用方法在导航领域已经非常成熟,并在导航2等流行项目中成功实施。MoveIt 的混合规划架构结合了一对全局规划器和局部规划器,它们以不同的规划速度和问题范围并行、并发运行。全局规划器的任务是解决全局运动规划问题,这与 “感知-规划-行动 ”应用中使用的规划器非常相似。所使用的规划器算法应该是完整的,因此假定其计算时间相对较慢。此外,全局规划器不要求实时安全,这意味着无法保证规划器在特定期限内找到解决方案。

机器人控制与仿真应用 2132

数据降维利器:主成分分析 (PCA) 的数学原理与 MATLAB 实现

主成分分析作为数据降维的经典方法,在数据分析、机器学习、信号处理等领域有着广泛应用。通过特征分解,PCA 帮助我们从高维数据中提取关键信息,发现数据背后的潜在结构。无论是探索性数据分析,还是作为机器学习的预处理步骤,PCA 都是值得信赖的工具。下次面对高维数据时,不妨试试 PCA,让数据的主要特征 “一目了然”~ 🌟互动话题:你在实际项目中是如何应用 PCA 的?遇到过哪些挑战?欢迎在评论区分享你的经验!👇。

分享科研过程中编写的原创代码~ 1394

78.在 Vue3 中使用 OpenLayers 实现地图地点搜索定位功能

本文详细介绍了如何在 Vue3 中集成 OpenLayers,实现地图地点搜索和定位功能。Vue3 项目环境的搭建与依赖安装。使用语法实现地图初始化和控件集成。通过 OpenLayers 的 Popup 和 Geocoder 插件,实现地址搜索和定位。希望这篇博文能帮助你快速掌握 Vue3 与 OpenLayers 的集成技术。如果在使用过程中遇到问题,欢迎在评论区留言讨论,或者参考 OpenLayers 官方文档获得更多帮助。注意。

小彭的博客 1853

Jetson Thor平台JP7.0版本96712 GMSL相机驱动调试记录

摘要:本文档记录了在Thor Custom Board (JP7.0GA)上配置GMSL摄像头时遇到的视频流问题及调试过程。问题表现为视频设备(/dev/video11)能正常创建,但获取视频时出现"Internal data stream error",而相同配置在AGX Orin JP6.0上运行正常。通过梳理硬件拓扑、v4l2-ctl测试、提升时钟频率及分析内核日志,发现VI引擎未接收到帧数据包。调试步骤包括检查设备树冲突、调整I2C总线配置、修正通道名称,最终通过屏蔽传感器启动时

jzwjzw19900922的博客 1110

主成分分析(PCA)实战:从数学原理到水质评价建模应用

主成分分析(PCA)是一种核心的降维技术,其基本原理是通过正交变换将一组可能存在相关性的变量转换为少数几个线性不相关的综合变量,即主成分。这些主成分按照方差大小排序,能够最大程度保留原始数据的信息。PCA的技术价值在于解决高维数据中的信息冗余和多重共线性问题,提升后续模型的稳定性和可解释性。在工程实践中,PCA广泛应用于数据压缩、特征提取、数据可视化以及噪声过滤等场景。例如,在环境监测领域,面对多维度的水质指标数据,PCA能够有效提取核心污染因子,构建综合评价指数。本文以经典数学建模赛题为例,深入解析PCA

weixin_34396902的博客 386

《QEMU/KVM源码分析与应用》读书笔记1 —— 第1章 QEMU与KVM概述

《QEMU/KVM源码分析与应用》学习笔记1 —— 第一章 QEMU与KVM概述

phmatthaus的专栏 1984

主成分分析(PCA)实战指南:从数学原理到数据降维应用

在数据科学和机器学习领域,高维数据处理常面临维数灾难挑战,即特征过多导致计算复杂、模型过拟合及信息冗余。主成分分析(PCA)作为一种经典线性降维技术,其核心原理是通过正交变换将原始相关变量重组为少数彼此独立的主成分,最大化保留数据方差。PCA的技术价值在于能有效压缩数据维度、去除噪声、提升模型训练效率与泛化能力,并助力数据可视化。在工业设备故障预测等场景中,PCA通过过滤传感器噪声和冗余信息,显著提升模型性能。本文深入解析PCA的数学内核与实战流程,涵盖数据标准化、特征值分解及主成分解读等关键步骤,并探讨其

weixin_32285357的博客 266

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

PCA主成分分析实战:从数学原理到降维应用全解析

在数据科学和机器学习领域,特征降维是处理高维数据、提升模型效率的关键技术。其核心原理是通过线性变换将原始相关变量转化为少数几个不相关的主成分,从而在保留大部分数据变异信息的同时实现数据压缩。这一技术能有效解决维度灾难和多重共线性问题,具有显著的计算效率和模型简化价值。主成分分析作为最经典的线性降维方法,广泛应用于数据可视化、特征工程、噪声过滤和综合评价等场景。本文结合sklearn实战,深入探讨PCA的数学本质、标准化预处理、主成分数量抉择以及载荷矩阵解读,并针对数学建模竞赛提供了完整的流程策略与避坑指南,

weixin_31100517的博客 268

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

主成分分析(PCA)

PCA是一种强大且广泛使用的。

m0_54570435的博客 1291

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

上一篇: 让Eclipse/MyEclipse的控制台和log4j日志支持多种颜色
下一篇: 特征分解和奇异值分解(SVD)
danielxxxxx
博客等级 码龄19年 3粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值