问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

最强总结机器学习模型,UMAP !!

创作时间:
作者:
@小白创作中心

最强总结机器学习模型,UMAP !!

引用
CSDN
1.
https://m.blog.csdn.net/2201_75910862/article/details/145705705

UMAP(Uniform Manifold Approximation and Projection)是一种用于降维和数据可视化的非线性方法。它通过建立高维空间中的最近邻图,并使用优化算法将高维数据投影到低维空间,同时尽量保留数据的局部拓扑结构。

UMAP 理论

UMAP(Uniform Manifold Approximation and Projection)是一种用于降维和数据可视化的非线性方法。它通过建立高维空间中的最近邻图,并使用优化算法将高维数据投影到低维空间,同时尽量保留数据的局部拓扑结构。UMAP 提供了比 t-SNE 更快的计算速度和更清晰的全局结构表现。

完整案例

咱们通过 Python 展示 UMAP 在降维与数据分析中的应用。以下代码包括数据生成、降维、绘图和分析。

import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_blobs, make_swiss_roll
import umap

# 设置随机种子
np.random.seed(42)

# 生成数据:高维分类数据 + 瑞士卷数据
n_samples = 3000
X_blob, y_blob = make_blobs(n_samples=n_samples, centers=4, n_features=6, cluster_std=5.0)
X_swiss, y_swiss = make_swiss_roll(n_samples=n_samples, noise=0.1)

# 初始化 UMAP
umap_blob = umap.UMAP(n_neighbors=15, min_dist=0.1, n_components=2, random_state=42)
umap_swiss = umap.UMAP(n_neighbors=10, min_dist=0.05, n_components=2, random_state=42)

# 执行降维
X_blob_2d = umap_blob.fit_transform(X_blob)
X_swiss_2d = umap_swiss.fit_transform(X_swiss)

# 创建绘图函数
def plot_umap(title, X_2d, labels, cmap, xlabel='UMAP1', ylabel='UMAP2'):
    plt.figure(figsize=(10, 8))
    scatter = plt.scatter(X_2d[:, 0], X_2d[:, 1], c=labels, cmap=cmap, s=10, alpha=0.8)
    plt.colorbar(scatter, label='Labels')
    plt.title(title, fontsize=16)
    plt.xlabel(xlabel, fontsize=14)
    plt.ylabel(ylabel, fontsize=14)
    plt.grid(True, linestyle='--', alpha=0.5)
    plt.show()

# 分类数据降维
plot_umap("UMAP Projection of Blob Data", X_blob_2d, y_blob, cmap="viridis")

# 瑞士卷数据降维
plot_umap("UMAP Projection of Swiss Roll Data", X_swiss_2d, y_swiss, cmap="Spectral")

Blob 数据的 UMAP 降维图

每个颜色代表一个类别。图中可以观察到,UMAP 有效地将高维空间的类群划分映射到二维空间,显示了良好的类间分离。

瑞士卷数据的 UMAP 降维图

每个颜色表示样本的距离顺序。降维结果显示,UMAP 成功地将瑞士卷从三维展开到二维,同时保持了样本的连续性。

案例扩展

Blob 数据的分析

Blob 数据是一个高维分类数据集,UMAP 的降维过程帮助我们:

  1. 发现不同类别在二维空间中的分布结构。
  2. 为聚类算法提供可视化验证。

通过调整 n_neighborsmin_dist 参数,可以进一步优化类间分离度。

瑞士卷数据的分析

瑞士卷数据属于流形学习的经典问题。UMAP 的降维展示了:

  1. 样本的局部邻近关系(颜色连续性)。
  2. 数据的全局结构未被破坏。

这表明 UMAP 适用于具有流形结构的数据降维任务。

参数调节与分析

UMAP 的主要参数包括:

  1. n_neighbors:控制每个点的局部邻域大小。
  • 较小的值保留局部细节,适用于聚类。
  • 较大的值强调全局结构。
  1. min_dist:控制低维空间中的压缩程度。
  • 较小的值使数据点更紧密。
  • 较大的值保持点之间的距离。
  1. n_components:指定降维后的维度。

参数调整实验

以下是一个调整参数的实验。

# 不同参数的 UMAP
umap_params = [
    (5, 0.1), (15, 0.3), (30, 0.5)
]

plt.figure(figsize=(15, 10))
for i, (n_neighbors, min_dist) in enumerate(umap_params):
    umap_model = umap.UMAP(n_neighbors=n_neighbors, min_dist=min_dist, random_state=42)
    X_blob_adjusted = umap_model.fit_transform(X_blob)
    
    plt.subplot(2, 2, i + 1)
    scatter = plt.scatter(X_blob_adjusted[:, 0], X_blob_adjusted[:, 1], c=y_blob, cmap="viridis", s=10, alpha=0.8)
    plt.colorbar(scatter, label='Labels')
    plt.title(f"n_neighbors={n_neighbors}, min_dist={min_dist}", fontsize=12)
    plt.grid(True, linestyle='--', alpha=0.5)
plt.tight_layout()
plt.show()
  1. 高维数据分类:UMAP 能够以低维形式展现高维分类数据的类别分布,为聚类和分类任务提供支持。
  2. 流形学习:UMAP 在复杂流形结构数据的降维中展示了优异性能,保持了样本邻近关系。
  3. 参数调节的影响:UMAP 的参数对降维结果有显著影响,需根据任务需求调整。
  4. UMAP 是一个高效、灵活的降维工具,可广泛应用于图像、文本和基因组数据分析中。
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号