当前位置: 首页 > article >正文

从0开始学习R语言--Day11--主成分分析

主成分分析(PCA)

PCA是一种降维技术,它把一堆相关的变量(比如身高、体重、年龄)转换成少数几个不相关的新变量(叫“主成分”),这些新变量能最大程度保留原始数据的信息。

核心理念
  1. 降维:假设我们有10个指标,PCA可以帮我们压缩成2~3个关键指标,方便进一步可视化或分析。

  2. 去相关性:新生成的主成分之间互不相关,避免重复信息。

  3. 保留最大方差:第一个主成分(PC1)方向是数据变化最大的方向,第二个(PC2)是剩余变化最大的方向,依此类推。

其中,数据变化最大的方向意思是,PC1能解释原始数据中最大比例的差异(方差)。

一般来说,我们会通过PCA实现可视化高维数据(把4维数据压缩成2维图),去除噪声和冗余变量(删除重复的测量指标)和简化机器学习模型(减少特征数量,加快计算速度)。

下面我们照例生成一组数据来理解PCA:

set.seed(123)
height <- rnorm(100, mean = 170, sd = 10)                     # 身高
weight <- height * 0.6 + rnorm(100, mean = 0, sd = 5)         # 体重 = 0.6*身高 + 噪声
age <- rnorm(100, mean = 30, sd = 5)                          # 年龄
data <- data.frame(height, weight, age)                       # 执行PCA(默认中心化和标准化)
pca_result <- prcomp(data, scale = TRUE)  # 查看主成分
summary(pca_result)  # 显示各主成分的方差贡献率plot(pca_result, type = "l", main = "PCA方差贡献率")# 绘制前两个主成分的散点图
library(ggplot2)
pca_data <- as.data.frame(pca_result$x)
ggplot(pca_data, aes(PC1, PC2)) + geom_point() + labs(title = "PCA降维结果(PC1 vs PC2)")

输出:

Importance of components:PC1    PC2     PC3
Standard deviation     1.3280 0.9867 0.51287
Proportion of Variance 0.5878 0.3245 0.08768
Cumulative Proportion  0.5878 0.9123 1.00000

首先,Standard deviation中的PC1的数值最大,代表其携带信息最多,从这个身高的例子来讲,就是PC1的数据(可能是体型大小)其实就反映了身高与体重之间的变化,要注意PCA所生成的变量,不再是原始数据集的变量,他只是蕴含了其中的信息;从Proportion of Variance可以看出PC1和PC2就共同解释了模型中90%左右的信息,这就代表可以尝试舍去PC3去建模了,也就把数据从三维降为了二维,从而能画出二维图。

http://www.lryc.cn/news/2387549.html

相关文章:

  • 通用前端框架项目静态部署到Hugging Face Space的实践指南
  • AI辅助写作 从提笔难到高效创作的智能升级
  • 十一、Samba文件共享服务
  • 医疗影像检测系统设计与实现
  • 11.13 LangGraph记忆机制解析:构建生产级AI Agent的关键技术
  • C++23中std::span和std::basic_string_view可平凡复制提案解析
  • [yolov11改进系列]基于yolov11引入感受野注意力卷积RFAConv的python源码+训练源码
  • Springboot引入Spring Cloud for AWS的配置中心(Parameter Store和Secrets)
  • 打破云平台壁垒支持多层级JSON生成的MQTT网关技术解析
  • Modbus通信中的延迟和时间间隔详解
  • maven 最短路径依赖优先
  • SAAS架构设计2-流程图-用户与租户之间对应关系图
  • TypeScript入门到精通
  • 三、Docker目录挂载、卷映射、网络
  • 迪米特法则 (Law of Demeter, LoD)
  • 【R语言编程绘图-函数篇】
  • 训练自己的yolo模型,并部署到rk3588上
  • Leetcode 3556. Sum of Largest Prime Substrings
  • 以少学习:通过无标签数据从大型语言模型进行知识蒸馏
  • 鸿蒙OSUniApp 实现带有滑动删除的列表#三方框架 #Uniapp
  • Qt qml Network error问题
  • Prompt工程:解锁大语言模型的终极密钥
  • Spring Boot微服务架构(六):伪装的微服务有哪些问题?
  • 恶意npm与VS Code包窃取数据及加密货币资产
  • Matlab快速上手五十六:详解符号运算里假设的用法,通过假设可以设置符号变量的取值范围,也可以通过假设设置变量属于集合:整数、正数和实数等
  • 机器学习笔记【Week1】
  • 什么是3D全景视角?3D全景有什么魅力?
  • 【Mini-F5265-OB开发板试用测评】按键控制测试
  • Debian重装系统后
  • 每日Prompt:古花卷