清风数学建模学习笔记——主成分分析(PCA)原理详解及案例分析

article/2025/6/8 13:46:12

主成分分析

  本文将介绍主成分分析(PCA),主成分分析是一种降维算法,它能将多个指标转换为少数几个主成分,这些主成分是原始变量的线性组合,且彼此之间互不相关,其能反映出原始数据的大部分信息。 一般来说,当研究的问题涉及到多变量且变量之间存在很强的相关性时,我们可考虑使用主成分分析的方法来对数据进行简化。


文章目录

    • 主成分分析
    • 一、主成分分析简介
    • 二、主成分分析的思想
    • 三、主成分分析的计算步骤
    • 四、案例分析
    • 五、模型扩展(★)


一、主成分分析简介

  主成分分析可以用较少的新变量替换原来较多的新变量,而且是这些较少的新变量尽可能多地保留原来所反映的信息。
  主成分分析是数据降维算法的一种,降维是将高维度的数据(指标太多)保留下最重要的一些特征,去除噪声和不重要的特征,从而实现提升数据处理速度的目的。


二、主成分分析的思想

 假设有 n n n 个样本, p p p 个指标,则可构成大小为 n × p n\times p n×p 的样本矩阵 x x x

X = [ x 11 x 12 ⋯ x 1 p x 21 x 22 ⋯ x 2 p ⋮ ⋮ ⋱ ⋮ x n 1 x n 2 ⋯ x n p ] = ( x 1 , x 2 , ⋯ , x p ) X= \begin{bmatrix} x_{11} & x_{12} & \cdots &x_{1p} \\ x_{21}& x_{22} & \cdots &x_{2p} \\ \vdots & \vdots & \ddots & \vdots \\ x_{n1}& x_{n2} & \cdots &x_{np} \end{bmatrix}=(x_1,x_2,\cdots,x_p) X=x11x21xn1x12x22xn2x1px2pxnp=(x1,x2,,xp)

 假设我们想找到新的一组变量 z 1 , z 2 , … , z m ( m ≤ p ) z_1,z_2,…,z_m( m ≤ p) z1,z2,,zm(mp),且它们满足:
{ z 1 = l 11 x 1 + l 12 x 2 + ⋯ + l 1 p x p z 2 = l 21 x 1 + l 22 x 2 + ⋯ + l 2 p x p ⋯ z m = l m 1 x 1 + l m 2 x 2 + ⋯ + l m p x p \begin{cases} z_1=l_{11}x_1+l_{12}x_2+\cdots+l_{1p}x_p\\ z_2=l_{21}x_1+l_{22}x_2+\cdots+l_{2p}x_p\\ \cdots\\ z_m=l_{m1}x_1+l_{m2}x_2+\cdots+l_{mp}x_p \end{cases} z1=l11x1+l12x2++l1pxpz2=l21x1+l22x2++l2pxpzm=lm1x1+lm2x2++lmpxp

 系数 l i j l_{ij} lij 的确定原则:

  1. z i z_i zi z j z_j zj (i≠j; i,j=1,2,…,m) 相互无关;
  2. z 1 z_1 z1 x 1 , x 2 , . . . , x p x_1,x_2,...,x_p x1,x2,...,xp 的一切线性组合中方差最大者;
  3. z 2 z_2 z2 是与 z 1 z_1 z1 不相关的 x 1 , x 2 , . . . , x p x_1,x_2,...,x_p x1,x2,...,xp 的所有线性组合中方差最大者;
  4. 以此类推, z m z_m zm是与 z 1 , z 2 , … , z m − 1 z_1,z_2,…,z_{m-1} z1,z2,,zm1 不相关的 x 1 , x 2 , . . . , x p x_1,x_2,...,x_p x1,x2,...,xp 的所有线性组合中方差最大者;
  5. 新变量指标 z 1 , z 2 , … , z m z_1,z_2,…,z_m z1,z2,,zm 分别称为原变量指标 x 1 , x 2 , . . . , x p x_1,x_2,...,x_p x1,x2,...,xp 的第一,第二,…,第 m m m 主成分。

三、主成分分析的计算步骤

 假设有 n n n 个样本, p p p 个指标,则可构成大小为 n × p n×p n×p 的样本矩阵 x x x
x = [ x 11 x 12 ⋯ x 1 p x 21 x 22 ⋯ x 2 p ⋮ ⋮ ⋱ ⋮ x n 1 x n 2 ⋯ x n p ] = ( x 1 , x 2 , ⋯ , x p ) x= \begin{bmatrix} x_{11} & x_{12} & \cdots &x_{1p} \\ x_{21}& x_{22} & \cdots &x_{2p} \\ \vdots & \vdots & \ddots & \vdots \\ x_{n1}& x_{n2} & \cdots &x_{np} \end{bmatrix}=(x_1,x_2,\cdots,x_p) x=x11x21xn1x12x22xn2x1px2pxnp=(x1,x2,,xp)

1. 首先对其进行标准化处理:
按 列 计 算 均 值 : x ˉ j = 1 n ∑ i = 1 n x i j , 标 准 差 : S j = ∑ i = 1 n ( x i j − x ˉ j ) 2 n − 1 , 标 准 化 数 据 : X i j = x i j − x ˉ j S j 原 始 样 本 矩 阵 经 过 标 准 化 变 化 : X = [ X 11 X 12 ⋯ X 1 p X 21 X 22 ⋯ X 2 p ⋮ ⋮ ⋱ ⋮ X n 1 X n 2 ⋯ X n p ] = ( X 1 , X 2 , ⋯ , X p ) 按列计算均值:\bar x_j=\frac{1}{n} \sum_{i=1}^{n}x_{ij},\quad 标准差:S_j=\sqrt{\frac{\displaystyle\sum_{i=1}^{n}(x_{ij}-\bar x_j)^2}{n-1}},\quad 标准化数据:X_{ij}=\frac{x_{ij}-\bar x_j}{S_j}\\ 原始样本矩阵经过标准化变化: X= \begin{bmatrix} X_{11} & X_{12} & \cdots &X_{1p} \\ X_{21}& X_{22} & \cdots &X_{2p} \\ \vdots & \vdots & \ddots & \vdots \\ X_{n1}& X_{n2} & \cdots &X_{np} \end{bmatrix}=(X_1,X_2,\cdots,X_p) xˉj=n1i=1nxij,Sj=n1i=1n(xijxˉj)2 ,Xij=SjxijxˉjX=X11X21Xn1X12X22Xn2X1pX2pXnp=(X1,X2,,Xp)


2. 计算标准化样本查的协方差矩阵:
R = [ r 11 r 12 ⋯ r 1 p r 21 r 22 ⋯ r 2 p ⋮ ⋮ ⋱ ⋮ r p 1 r p 2 ⋯ r p p ] R= \begin{bmatrix} r_{11} & r_{12} & \cdots &r_{1p} \\ r_{21}& r_{22} & \cdots &r_{2p} \\ \vdots & \vdots & \ddots & \vdots \\ r_{p1}& r_{p2} & \cdots &r_{pp} \end{bmatrix} R=r11r21rp1r12r22rp2r1pr2prpp r i j = 1 n − 1 ∑ k = 1 n ( X k i − X ‾ i ) ( X k i − X ‾ j ) = 1 n − 1 ∑ k = 1 n X k i X k j r_{ij}=\frac{1}{n-1}\sum_{k=1}^{n}{(X_{ki}-\overline X_i)(X_{ki}-\overline X_j)}=\frac{1}{n-1}\sum_{k=1}^{n}{X_{ki}X_{kj}} rij=n11k=1n(XkiXi)(XkiXj)=n11k=1nXkiXkj


 1、2步骤可以合成一步:
R = ∑ k = 1 n ( x k i − x ‾ i ) ( x k i − x ‾ j ) ∑ k = 1 n ( x k i − x ‾ i ) 2 ∑ k = 1 n ( x k j − x ‾ j ) 2 R=\frac{\displaystyle\sum_{k=1}^{n}{(x_{ki}-\overline x_i)(x_{ki}-\overline x_j)}}{\sqrt{\displaystyle\sum_{k=1}^{n}{(x_{ki}-\overline x_i)^2}\sum_{k=1}^{n}{(x_{kj}-\overline x_j)^2}}} R=k=1n(xkixi)2k=1n(xkjxj)2 k=1n(xkixi)(xkixj)


3. 计算 R 的特征值和特征值向量:
特 征 值 λ 1 ≥ λ 2 ≥ ⋯ ≥ λ p ≥ 0 , ( R 是 半 正 定 矩 阵 , 且 t r ( R ) = ∑ k = 1 p λ k = p ) 特 征 向 量 : a 1 = [ a 11 a 21 ⋮ a p 1 ] , a 2 = [ a 12 a 22 ⋮ a p 2 ] , ⋯ , a p = [ a 1 p a 2 p ⋮ a p p ] 特征值 \lambda_1≥\lambda_2≥\cdots≥\lambda_p≥0,\quad(R是半正定矩阵,且tr(R)=\sum_{k=1}^{p}\lambda_k=p)\\ 特征向量:a_1=\left[ \begin{array}{c} a_{11}\\a_{21}\\ \vdots\\a_{p1} \end{array} \right],a_2=\left[ \begin{array}{c} a_{12}\\a_{22}\\ \vdots\\a_{p2} \end{array} \right],\cdots,a_p=\left[ \begin{array}{c} a_{1p}\\a_{2p}\\ \vdots\\a_{pp} \end{array} \right] λ1λ2λp0,(Rtr(R)=k=1pλk=p)a1=a11a21ap1,a2=a12a22ap2,,ap=a1pa2papp


4. 计算主成分共享率以及累计贡献率:
贡 献 率 = λ i ∑ k = 1 p λ k , 累 加 贡 献 率 = ∑ k = 1 i λ k ∑ k = 1 p λ k , ( i = 1 , 2 , ⋯ , p ) 贡献率=\frac{\lambda_i}{\displaystyle\sum_{k=1}^{p}{\lambda_k}},\quad累加贡献率=\frac{\displaystyle\sum_{k=1}^{i}{\lambda_k}}{\displaystyle\sum_{k=1}^{p}{\lambda_k}},\quad(i=1,2,\cdots,p) =k=1pλkλi,=k=1pλkk=1iλk,(i=1,2,,p)


5. 写出主成分:

 一般取累计贡献率超过 80% 的特征值所对应的第一、第二、…、第 m m m m ≤ p m≤p mp)个主成分。
第 i 个 主 成 分 : F i = a 1 i X 1 + a 2 i X 2 + ⋯ + a p i X p 第i个主成分:F_i = a_{1i}X_1+a_{2i}X_2+\cdots+a_{pi}X_p iFi=a1iX1+a2iX2++apiXp


6. 根据系数分析主成分代表的意义:

 对于某个主成分而言,指标前面的系数越大,代表该指标对于该主成分的影响越大。


四、案例分析

题目来源于:《应用多元统计分析》王学民

  在制定服装标准的过程中,对128名成年男子的身材进行了测量,每人测得的指标中含有这样六项:身高( x 1 x_1 x1)、坐高( x 2 x_2 x2) 、胸围( x 3 x_3 x3) 、手臂长( x 4 x_4 x4) 、肋围( x 5 x_5 x5)和腰围( x 6 x_6 x6) 。所得样本相关系数矩阵(对称矩阵哦)列于下表。
在这里插入图片描述

注意:本题相当于直接把 第一二步骤计算好,但是我们在建模的时候得到的是最原始的数据(每一列是指标,每一行是样本)。


经过计算,相关系数矩阵的特征值、相应的特征向量以及贡献率列于下表:

在这里插入图片描述
注意:matlab 求得的特征值向量,默认进行了归一化,验证方法:每一列平方和之后开根号。

  从表中可以看到前三个主成分的累计贡献率达85.9%,因此可以考虑只取前面三个主成分,它们能够很好地概括原始变量。
在这里插入图片描述

   X i X_i Xi 均是标准化后的指标, x i x_i xi:身高、坐高、胸围、手臂长、肋围和腰围

  • 第一主成分 F 1 F_1 F1 对所有(标准化)原始变量都有近似相等的正载荷,故称第一主成分为(身材)大小成分。
  • 第二主成分 F 2 F_2 F2 X 3 X_3 X3 X 5 X_5 X5 X 6 X_6 X6。上有中等程度的正载荷,而在 X 1 X_1 X1 X 2 X_2 X2 X 4 X_4 X4 上有中等程度的负载荷,称第二主成分为形状成分(或胖瘦成分)。
  • 第三主成分 F 3 F_3 F3 X 2 X_2 X2 上有大的正载荷,在 X 4 X_4 X4 上有大的负载荷,而在其余变量上的载荷都较小,可称第三主成分为臂长成分。

 注:由于第三主成分的贡献率不高( 7.65%)且实际意义也不太重要,因此我们也可以考虑只取前两个主成分进行分析。


五、模型扩展(★)

  1. 主成分的解释其含义一般多少带有点模糊性,不像原始变量的含义那么清楚、确切,这是变量降维过程中不得不付出的代价。
  2. 主成分分析的困难之处主要在于要 能够给出主成分的较好解释,所提取的主成分中如有一个主成分解释不了,整个主成分分析也就失败了。
  3. 主成分分析不可用于评价类模型。
  4. 主成分分析可用于聚类分析,将自变量进行降维方便画图。
  5. 主成分分析也可用于回归分析解决多重共线性的问题。
  6. 主成分分析实际上是因子分析的特例,但是由于因子分析便于解释,所以建议大家多用因子分析。

  本文借鉴了数学建模清风老师的课件与思路,如果大家发现文章中有不正确的地方,欢迎大家在评论区留言,也可以点击查看下方链接查看清风老师的视频讲解~

原文链接:https://www.bilibili.com/video/BV1DW411s7wi


http://chatgpt.dhexx.cn/article/gp44k4va.shtml

相关文章

多元统计及R语言案例分析 (主成分和因子分析对学生成绩神秘联系分析)

嗨喽! 大家好,我是“流水不争先,争得滔滔不绝”的翀,18双非本科生一枚,正在努力!欢迎大家来交流学习,一起学习数据分析,希望我们一起好好学习,天天向上,目前是小社畜一枚…

超详细SPSS主成分分析计算指标权重(一)

一、指标权重计算确定的困惑 相信很多写过或者正在写指标处理类论文的朋友都曾对如何计算指标权重充满困惑,到底是用熵值法,还是主成分分析法?或者其他各种看起来奥妙无穷却难以上手操作的神奇方法?好不容易确定要选用主成分分析…

一文读懂 主成分分析 与 因子分析

2023-2-20更新:  修改了一些文字错误,优化了排版,增加了一些拓展内容,祝大家学业有成!(期待三连😁😁) 目录 一、 主成分分析二、因子分析三、多元共线性问题简介3.1 多…

主成分之综合竞争力案例分析

一、案例背景 1.案例说明 研究调查100家公司2010-2013年关于财务方面的具体数据,这些财务指标维度分别为盈利能力、偿债能力、运营能力、发展能力以及公司治理。其中每个维度分别有几个分析项,但是有些指标是越大越好,有些指标是越小越好。…

数据分析,主成分分析例题

已知协方差矩阵求X的各主成分以及主成分的贡献率 主成分分析 原理:找出几个综合变量来代替原来众多的变量,使这些综合变量能尽可能地代表原来变量的信息量,且彼此之间互不相关 统计方法:主成分分析(主分量分析&…

主成分分析PCA案例及原理

1. 主成分分析PCA案例 https://blog.csdn.net/goodshot/article/details/78080220 http://www.cnblogs.com/zhangchaoyang/articles/2222048.html 附: 使用上方链接的解释: 2. 主成分分析(PCA)原理总结http://www.cnblogs.com/pinard/p/623…

主成分分析简单例子

一、数据降维 对于现在维数比较多的数据,我们首先需要做的就是对其进行降维操作。降维,简单来说就是说在尽量保证数据本质的前提下将数据中的维数降低。降维的操作可以理解为一种映射关系,例如函数,即由原来的二维转换成了一维。处…

spss分析方法-主成分分析

spss分析方法-主成分分析(转载) 主成分分析利用的是“降维”的思想,利用原始变量的线性组合组成主成分。在信息损失较小的前提下,把多个指标转化为几个互补相关的综合指标。下面我们主要从下面四个方面来解说: 实际…

主成分分析案例

去百度文库上一搜,是很老的题目了。这里所做的只是准备工作,为后面更多的数据处理做准备。 例题 1.对原始资料矩阵进行标准化处理 zef_data xlsread(chengshi.xls); z zscore(zef_data) z 1.1977 0.7149 0.6674 1.1390 0.9189 3.111…

快速搞定PCA(主成分分析)(原理 代码 案例)

目录 一、基本介绍 1.1原理 1.2主成分分析的几何解释 1.3主要步骤 1.4主成分个数的选取原则 二、主成分分析代码 2.1MATLAB代码 2.2Python代码 三、实用案例 一、基本介绍 1.1原理 主成分分析是最常用的线性降维方法,通过某种线性投影,将高维的数…

【机器学习】主成分分析实现案例 (PCA)

一、说明 这篇文章的目的是提供主成分分析(PCA)的完整和简化的解释。我们将逐步介绍它是如何工作的,这样每个人都可以理解并使用它,即使是那些没有强大数学背景的人。 PCA是网络上广泛覆盖的机器学习方法,并且有一些关…

什么是主成分分析?经典案例解析变量降维

1、作用 主成分分析将多个有一定相关性的指标进行线性组合,以最少的维度解释原数据中尽可能多的信息为目标进行降维,降维后的各变量间彼此线性无关,最终确定的新变量是原始变量的线性组合,且越往后主成分在方差中的比重也小&…

比较两篇文章的相似性方法

对于这个题目,开始毫无头绪,后来经过查阅资料现在讲方法总结如下: 1、利用余弦定理 我们知道向量 a,b之间的夹角可用余弦定理求得: 如果夹角的余弦值越小,那么夹角也越大。如果2个向量相等,那么其值为1。利…

Python案例分析|文本相似度比较分析

本案例通过设计和实现有关文本相似度比较的类Vector和Sketch,帮助大家进一步掌握设计Python类来解决实际问题的能力。 01、文本相似度比较概述 通过计算并比较文档的摘要可实现文本的相似度比较。 文档摘要的最简单形式可以使用文档中的k-grams(k个连…

计算机如何判断两篇文章相似性

这个仍然是极客时间上,关于《索引技术核心20讲》的一篇笔记同时结合自己的理解加了点料,这个专栏虽然只有20讲,但是真不错,老师解答问题还是很积极,回答字数经常比问题字数多。有兴趣的朋友可以到我星球(在…

ai写文章检测原理(文章相似度检测)

小编来了!今天要和大家聊一聊关于ai写文章检测原理的评测对比。究竟哪种方法更加高效准确呢?让我们一起来看看吧! 概括:本文将从多个角度对ai写文章检测原理进行评测对比,包括算法准确性、速度、自动化程度、用户体验…

【跨语言剽窃检测】文本相似度分析之一

对比文件1: 2010年的跨语言剽窃检测新方法 作者RaFael Corezola Pereira instituion : UFRGS 摘要: 作者提出一个跨语言剽窃检测新方法,分为5个主要阶段: languange normalization、retrieval of candidate documents、classfier …

文本相似度综述

本文目录 文本相似度的定义文本相似度计算方法基于字符串的方法基于语料库的方法基于词袋VSMLSA、PLSALDA(需要进一步了解) 基于神经网络基于搜索引擎 基于世界知识基于本体基于网络知识 其他方法句法分析混合方法 文本相似度的定义 其中, common&#x…

JAVA-计算两篇文章的相似度

1.场景: 在很多公司的文件管理系统中,都有类似于对比多篇文章的相似度,例如在写公众号推文时,如果标记了原创,就会对比当前文章和库里已存在文章的相似程度,如果相似度过于高,则标记为原创的文章…

免费好用的文章相似度检测软件推荐

相信很多人在写作的时候都会遇到这样的问题,就是怕自己写出的文章被抄袭。为了保证自己的原创性,我们需要使用一些文章相似度检测软件来帮助我们检测文章是否被抄袭。那么,有哪些免费好用的文章相似度检测软件呢?下面就为大家介绍…