PCA

01 PCA简介

PCA是一种无监督的降维算法,把高维、相关的变量旋转压缩成少数几个互不相关的综合指标(主成分),且尽可能保留原始方差。每个主成分是新的空间坐标系的样本的点的坐标。

几何直觉:

  1. 把样本点看成高维空间的一团云;
  2. 先找“云”伸展最长的方向 → 第 1 主成分(PC1);
  3. 再在与 PC1 垂直的(超)平面里找次长方向 → PC2;
  4. 依此类推,直到把云的全部“体积”解释完。

PCA代码实现(R base 函数prcomp)

# 1. 读取数据框
# 该数据:行是样本列是不同的环境变量
solar <- read.table("solar.txt", header=TRUE, sep="\t")
# 2. 做 PCA(中心化 + 标准化)
solar_pca <- prcomp(solar, center = TRUE, scale. = TRUE)

# 下面是我想验证:一个样本的主成分= 样本的标准化后的数据*loadings(特征向量)
# 3. 取第 1 行标准化数据
z1 <- scale(solar)[1, ]            # 均值0方差1
load1 <- solar_pca$rotation[, 1]   # 第1主成分载荷,即特征向量
# 4. 手工算 PC1 得分
pc1_manual <- sum(z1 * load1) # 点乘
# 5. 与 prcomp 输出对比
pc1_prcomp <- solar_pca$x[1, 1] # 函数计算的主成分
# 6. 比较
all.equal(pc1_manual, pc1_prcomp) 
all.equal(pc1_manual, unname(pc1_prcomp)) # TRUE
posted @ 2026-02-06 11:12  less_is_more_0904  阅读(4)  评论(0)    收藏  举报