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

机器学习实操 第一部分 机器学习基础 第8章 降维技术

机器学习实操 第一部分 机器学习基础 第8章 降维技术

内容概要

第8章探讨了降维技术,这些技术在处理高维数据时至关重要。高维数据不仅会使训练过程变得极其缓慢,还会增加找到良好解决方案的难度,这就是所谓的维度灾难问题。幸运的是,在实际问题中,通常可以通过降维技术显著减少特征数量,将难以处理的问题转化为可处理的问题。本章详细介绍了降维的主要方法(投影和流形学习),并深入探讨了三种流行的降维技术:PCA(主成分分析)、随机投影和局部线性嵌入(LLE)。通过这些技术,读者将了解如何应对维度灾难,并提升模型的训练效率和性能。
在这里插入图片描述

主要内容

  1. 维度灾难

    • 定义:高维空间中数据的行为与低维空间截然不同,导致训练实例稀疏分布,增加过拟合风险。
    • 影响:高维数据需要指数级增长的训练实例来保持相同的密度,这在实际中是不可行的。
  2. 降维的主要方法

    • 投影:通过将数据投影到低维子空间来减少维度。适用于数据在低维子空间中分布的情况。
    • 流形学习:通过建模数据所在的低维流形结构来减少维度。适用于数据在高维空间中形成低维流形的情况。
  3. PCA(主成分分析)

    • 原理:识别数据方差最大的方向(主成分),并将数据投影到这些方向上。
    • 步骤:计算主成分,选择保留方差最大的方向,投影数据。
    • 应用:用于数据压缩、可视化和预处理。
  4. 随机投影

    • 原理:通过随机线性投影将数据映射到低维空间,同时保持数据间的距离关系。
    • 优点:简单、快速、内存高效,适用于高维数据。
  5. 局部线性嵌入(LLE)

    • 原理:通过保留数据局部线性关系来展开扭曲的流形结构。
    • 步骤:识别每个实例的最近邻,构建权重矩阵,找到低维表示以保留局部关系。
    • 应用:适用于非线性数据的降维。
  6. 其他降维技术

    • MDS(多维缩放):保留实例间的距离。
    • Isomap:保留测地线距离。
    • t-SNE:用于可视化,强调相似实例的聚集。
    • LDA(线性判别分析):用于分类任务的降维。

关键代码和算法

8.1 PCA降维

from sklearn.decomposition import PCA
from sklearn.datasets import load_iris# 加载数据
iris = load_iris()
X = iris.data
y = iris.target# 应用PCA降维到2维
pca = PCA(n_components=2)
X_reduced = pca.fit_transform(X)# 输出方差解释比例
print("Explained variance ratio:", pca.explained_variance_ratio_)# 可视化降维后的数据
import matplotlib.pyplot as plt
plt.scatter(X_reduced[:, 0], X_reduced[:, 1], c=y)
plt.xlabel('PC1')
plt.ylabel('PC2')
plt.show()

8.2 随机投影降维

from sklearn.random_projection import GaussianRandomProjection
from sklearn.datasets import fetch_openml# 加载MNIST数据
mnist = fetch_openml('mnist_784', as_frame=False)
X_train, y_train = mnist.data[:60_000], mnist.target[:60_000]# 应用随机投影降维
gaussian_rnd_proj = GaussianRandomProjection(eps=0.1, random_state=42)
X_reduced = gaussian_rnd_proj.fit_transform(X_train)# 输出降维后的形状
print("Reduced shape:", X_reduced.shape)

8.3 LLE降维

from sklearn.manifold import LocallyLinearEmbedding
from sklearn.datasets import make_swiss_roll# 生成Swiss roll数据
X_swiss, t = make_swiss_roll(n_samples=1000, noise=0.2, random_state=42)# 应用LLE降维
lle = LocallyLinearEmbedding(n_components=2, n_neighbors=10, random_state=42)
X_unrolled = lle.fit_transform(X_swiss)# 可视化降维后的数据
plt.scatter(X_unrolled[:, 0], X_unrolled[:, 1], c=t)
plt.xlabel('LLE1')
plt.ylabel('LLE2')
plt.show()

精彩语录

  1. 中文:降维技术不仅加快了训练速度,降低了过拟合风险,还使得数据可视化成为可能。
    英文原文:Dimensionality reduction not only speeds up training and reduces the risk of overfitting but also makes data visualization possible.
    解释:强调了降维技术的三大优势。

  2. 中文:PCA通过识别数据方差最大的方向来选择主成分。
    英文原文:PCA identifies the directions of maximum variance in the data to select principal components.
    解释:介绍了PCA的核心思想。

  3. 中文:随机投影利用随机线性投影来保持数据间的距离关系。
    英文原文:Random projection uses random linear projections to preserve the distance relationships between data points.
    解释:描述了随机投影的工作原理。

  4. 中文:LLE通过保留数据的局部线性关系来展开流形。
    英文原文:LLE preserves local linear relationships to unroll the manifold.
    解释:介绍了LLE的基本原理。

  5. 中文:t-SNE是一种强大的可视化工具,能够将高维数据映射到二维或三维空间。
    英文原文:t-SNE is a powerful tool for visualizing high-dimensional data by reducing it to two or three dimensions.
    解释:指出了t-SNE的适用场景。

总结

通过本章的学习,读者将掌握降维技术的核心概念和应用方法。这些内容包括维度灾难的原理、降维的主要方法(投影和流形学习),以及PCA、随机投影和LLE等具体技术。降维技术不仅能够提升模型的训练效率,还能帮助发现数据中的隐藏模式,提高模型的性能和可解释性。这些技术在处理高维数据时尤为重要,是机器学习中的关键工具。

http://www.xdnf.cn/news/247195.html

相关文章:

  • 深度学习中卷积的计算复杂度与内存访问复杂度
  • 数字基带信号和频带信号的区别解析
  • ES6异步编程中Promise与Proxy对象
  • 小牛电动:荣登央视舞台,引领智能出行新潮流
  • c++26新功能——std::execution
  • 加密算法(一)-对称加密(DES、AES、3DES、Blowfish、Twofish)一篇了解所有主流对称加密,轻松上手使用。
  • mysql-窗口函数一
  • 链表系列一>合并 k 个升序链表
  • 【CV数据集】DIOR遥感目标检测数据集(含处理好的YOLO、COCO、VOC格式和相关配置文件下载链接)
  • 响应式布局,在飞帆平台中如此简单
  • 文件包含漏洞学习
  • PostgreSQL:pgAdmin 4 使用教程
  • 手撕哈希表
  • Android 移动开发:ProgressBar (水平进度条)
  • 【LeetCode Hot100】回溯篇
  • cua: 为 AI 智能体提供高性能虚拟环境
  • GTA5(传承/增强) 13980+真车 超跑 大型载具MOD整合包+最新GTA6大型地图MOD 5月最新更新
  • PyTorch 2.0编译器技术深度解析:如何自动生成高性能CUDA代码
  • 【Bootstrap V4系列】学习入门教程之 页面内容排版
  • 图像加密算法概述
  • Elsevier latex报错Paragraph ended before \@citex was complete.<to be read again>
  • Vue3 + OpenLayers 企业级应用进阶
  • Linux 第六讲 --- 工具篇(一)yum/apt与vim
  • 哈希表笔记(四)Redis对比Java总结
  • YOLOv8模型训练过程
  • Python与MySQL高效集成指南:从基础到高级实践
  • Hibernate与MybatisPlus的混用问题(Invalid bound statement (not found))
  • (C题|社交媒体平台用户分析问题)2025年第二十二届五一数学建模竞赛(五一杯/五一赛)解题思路|完整代码论文集合
  • 恒流源电路
  • RAG工程-基于LangChain 实现 Advanced RAG(预检索-查询优化)(下)