机器学习实操 第一部分 机器学习基础 第8章 降维技术
内容概要
第8章探讨了降维技术,这些技术在处理高维数据时至关重要。高维数据不仅会使训练过程变得极其缓慢,还会增加找到良好解决方案的难度,这就是所谓的维度灾难问题。幸运的是,在实际问题中,通常可以通过降维技术显著减少特征数量,将难以处理的问题转化为可处理的问题。本章详细介绍了降维的主要方法(投影和流形学习),并深入探讨了三种流行的降维技术:PCA(主成分分析)、随机投影和局部线性嵌入(LLE)。通过这些技术,读者将了解如何应对维度灾难,并提升模型的训练效率和性能。
主要内容
-
维度灾难
- 定义:高维空间中数据的行为与低维空间截然不同,导致训练实例稀疏分布,增加过拟合风险。
- 影响:高维数据需要指数级增长的训练实例来保持相同的密度,这在实际中是不可行的。
-
降维的主要方法
- 投影:通过将数据投影到低维子空间来减少维度。适用于数据在低维子空间中分布的情况。
- 流形学习:通过建模数据所在的低维流形结构来减少维度。适用于数据在高维空间中形成低维流形的情况。
-
PCA(主成分分析)
- 原理:识别数据方差最大的方向(主成分),并将数据投影到这些方向上。
- 步骤:计算主成分,选择保留方差最大的方向,投影数据。
- 应用:用于数据压缩、可视化和预处理。
-
随机投影
- 原理:通过随机线性投影将数据映射到低维空间,同时保持数据间的距离关系。
- 优点:简单、快速、内存高效,适用于高维数据。
-
局部线性嵌入(LLE)
- 原理:通过保留数据局部线性关系来展开扭曲的流形结构。
- 步骤:识别每个实例的最近邻,构建权重矩阵,找到低维表示以保留局部关系。
- 应用:适用于非线性数据的降维。
-
其他降维技术
- 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()
精彩语录
-
中文:降维技术不仅加快了训练速度,降低了过拟合风险,还使得数据可视化成为可能。
英文原文:Dimensionality reduction not only speeds up training and reduces the risk of overfitting but also makes data visualization possible.
解释:强调了降维技术的三大优势。 -
中文:PCA通过识别数据方差最大的方向来选择主成分。
英文原文:PCA identifies the directions of maximum variance in the data to select principal components.
解释:介绍了PCA的核心思想。 -
中文:随机投影利用随机线性投影来保持数据间的距离关系。
英文原文:Random projection uses random linear projections to preserve the distance relationships between data points.
解释:描述了随机投影的工作原理。 -
中文:LLE通过保留数据的局部线性关系来展开流形。
英文原文:LLE preserves local linear relationships to unroll the manifold.
解释:介绍了LLE的基本原理。 -
中文: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等具体技术。降维技术不仅能够提升模型的训练效率,还能帮助发现数据中的隐藏模式,提高模型的性能和可解释性。这些技术在处理高维数据时尤为重要,是机器学习中的关键工具。