R语言讲座篇1降维分析

什么是降维分析?

降维分析(Dimensionality Reduction)是一种数据分析技术,目的是将高维的数据集转换到低维空间,同时尽可能保留原数据中的重要信息。降维分析在机器学习和数据挖掘中有着广泛的应用。

降维分析的主要目的有:

  1. 数据压缩 - 减少数据存储和传输量
  2. 减少随机误差 - 去除冗余 noise
  3. 可视化 - 降到2D或3D以便点阵显示
  4. 模型简化 - 简化模型,减少过拟合

常见的降维分析方法有:

  • 主成分分析(PCA)
  • 线性判别分析(LDA)
  • 局部线性嵌入(LLE)
  • t-分布随机邻域嵌入(t-SNE)

降维过程可以是线性的也可以是非线性的。线性降维方法比较简单,但对复杂数据效果较差。非线性方法虽然复杂,但可以提取数据的非线性特征。

选择合适的降维方法对分析质量至关重要。还需要根据不同任务目的进行方法评估和选择。降维是一个提升分析效果的关键预处理步骤。

PCA降维

PCA(主成分分析)降维是一种常用的线性降维方法,主要思想是通过正交变换,将高维数据集的特征投影到低维空间的几个正交轴上,这些轴被称为主成分。

无监督学习之线性降维 - 知乎

PCA降维的主要步骤包括:

  1. 对原始数据集进行中心化,使每个特征的均值 becoming 0。
  2. 对协方差矩阵进行特征值分解,得到特征值和特征向量。
  3. 按特征值K大小排序,选择最大的k个特征值对应的特征向量。

简单来说就是通过碎石图确定K值然后将原本数据n列转化成K列,其中K<n。
在这里插入图片描述

PCA降维的目标是保留原数据中最大的变化,这些变化体现在最主要的特征向量上,如果降维可以得到如下结果:
在这里插入图片描述

PCA的主要优点有:

  • 简单,易于实现
  • 通过正交变换,消除不同特征的相关性
  • 提取主要变化,压缩数据
    缺点是PCA是线性降维,对非线性数据效果较差。下图为线性数据的示例图**(该图涉及到引用,原作者在水印右下角)**

线性降维——PCA - 知乎
PCA广泛用于数据压缩、可视化、noise过滤等目的。是最常用的线性降维方法之一。

其代码如下

# 加载包
rm(list = ls())
library(stats)
library(readxl)
box <- read_excel("box.xlsx")
# 数据中心化
box_scale <- scale(box)
# PCA分析
pca <- prcomp(box_scale, scale = FALSE)
# 绘制碎石图
plot(pca$sdev^2, xlab = "Principal Component",
     
     ylab = "Eigenvalue", type = "o")
# 根据碎石图选取肘点,确定k
k <- 2
# 生成类别标签
cl <- sample(1:3, nrow(box), replace=T)
# 进行PCA降维
box_pca <- predict(pca, box_scale)[,1:3]
# 可视化
plot(box_pca[,1], box_pca[,2], col=cl)

t-SNE降维

t-SNE(t-分布随机邻域嵌入)是一种非线性降维算法,专门用于可视化和探索高维数据。

t-SNE主要有三个关键步骤:

  • 用条件概率表示高维空间样本距离
  • 低维空间也用概率距离表示样本关系
  • 迭代优化低维坐标,使得低维与高维概率距离接近

这种保持概率距离关系的思想使t-SNE能够保留数据的全局和局部结构,下面是非线性降维的数据样式。
在这里插入图片描述
通过上述步骤可以得到如下的结果
在这里插入图片描述

代码如下

# 清空工作区
rm(list = ls())
#install.packages("Rtsne")
library(Rtsne) 
# 读取并预处理数据 
library(readxl)
box <- read_excel("box.xlsx")
box_scale <- scale(box)
# 进行t-SNE降维
set.seed(123)
tsne <- Rtsne(box_scale, dims = 2, perplexity = 30)
# 可视化 
plot(tsne$Y, col=sample(1:3, nrow(box), replace=T), 
     main="t-SNE on Box data")

综合来说,t-SNE可视化效果强大,算法内在逻辑简洁合理,是解决高维数据表达和可视化问题的重要技术之一。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值