主成分分析系列(一)概览及为什么数据要中心化

一、概览

主成分分析(Principle Component Analysis,PCA)算法属于数据降维算法里面的一种。数据降维算法的主要想法是从高维度数据中找到一种结构,这种结构蕴含了数据中的大部分信息,从而将高维数据降维到低维数据,方便观察、可视化与后续处理。准确地说,PCA算法是在较低维空间中寻求原始数据最准确的数据表示。

二、PCA算法在2维上的一个例子

图一展示将数据 x\mathbf{x}x 投影到一维子空间(一条直线,但其实这里说一维子空间有些不严谨,但是不影响理解,后文有说明),以最小化投影误差。投影误差是点到直线的距离(左图是红色虚线,右图是绿色虚线)。
请注意,从图一上观察到,用于投影的直线,右图中的比左图中的好,因为数据 x\mathbf{x}x 在后者上投影误差更小。
直观上看,用于投影的最小化数据 x\mathbf{x}x投影误差的方向同时就是使得数据 x\mathbf{x}x方差最大的方向。这个在后面的文章会有数学推导证明。

在这里插入图片描述

图 1:

选取图一右侧的直线作为投影直线。数据投影到投影线上后的结果如图2右侧所示。

  • 请注意,投影得到的新数据 y\mathbf{y}y 与旧数据 x\mathbf{x}x投影方向(绿色直线)方向上具有相同的方差
  • PCA 保留数据中最大的方差。 我们将证明这个结论,目前这只是 PCA 将做什么的直觉。

在这里插入图片描述

图 2:

为推导PCA算法需要的线性代数知识准备

V\mathbf{V}Vd{d}d线性空间W\mathbf{W}WV\mathbf{V}Vkkk线性子空间
我们总能找到一组 ddd 维向量 { e1,e2,…,ek}\{\mathbf {e_1,e_2,…,e_k}\}{ e1,e2,,ek},它形成 W\mathbf {W}W的一组正交基 。

### 使用R语言进行主成分分析(PCA)时的数据化 在R语言中,执行主成分分析(PCA)通常会涉及数据的标准化或归化处理。这是因为在PCA过程中,不同量纲和尺度的变量可能会对结果产生不均衡的影响。为了消除这种影响,可以通过`scale.`参数来实现数据的自动标准化。 #### 自动标准化 当使用`prcomp()`函数执行PCA时,设置`scale. = TRUE`即可完成数据的标准化处理[^1]。这步骤会对每数据减去其均值并除以其标准差,从而使得每列数据具有零均值和单位方差。以下是具体的代码示例: ```r # 加载所需库 library(ggplot2) # 假设 data 是数据框 data <- iris[, 1:4] # 执行主成分分析,并启用数据标准化 pca_result <- prcomp(data, scale. = TRUE) summary(pca_result) ``` 通过上述代码,`prcomp()`会在内部自动完成数据的标准化过程,无需手动干预。 #### 手动标准化 如果希望更灵活地控制数据的预处理方式,则可以选择先对手动进行归化后再传递给PCA函数。种常见的做法是利用基础统计学方法计算Z分数: ```r # 计算 Z 分数 (即手动标准化) scaled_data <- as.data.frame(scale(data)) # 查看前几行标准化后的数据 head(scaled_data) # 将标准化后的数据传入 PCA 函数 manual_pca_result <- prcomp(scaled_data) summary(manual_pca_result) ``` 这里使用的 `scale()` 函数同样实现了数据中心化和缩放操作[^3]。 #### FactoMineR包中的PCA功能 除了内置的`prcomp()`外,还可以借助第三方包如`FactoMineR`来进行更加复杂的PCA分析。该包允许用户指定是否需要对数据进行标准化以及保留多少个主成分等选项[^2]。下面是个简单的例子展示如何配置这些参数: ```r # 安装并加载 FactoMineR 包 install.packages("FactoMineR") library(FactoMineR) # 调用 PCA 函数,开启标准化模式 factominer_pca_result <- PCA(data, scale.unit = TRUE, ncp = 5, graph = FALSE) # 输出结果概览 print(factominer_pca_result$eig) # 特征根信息 ``` 在这个案例里,我们设置了`scale.unit = TRUE`以确保输入矩阵被适当调整;同时定义了最多提取五个主成分(`ncp=5`)供后续研究使用。 --- ### 总结 无论是采用默认工具还是扩展插件,在实际应用R语言开展PCA项目期间都应重视数据规范化的重要性。它不仅有助于提升模型性能,还能让最终得出结论更具解释性和可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

培之

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值