我在构建交互式嵌入可视化方面所学到的东西

主要观点:作者多年来构建了多个交互式嵌入可视化项目,介绍了嵌入和嵌入可视化的背景、为何需要嵌入可视化、自己的嵌入可视化项目、数据收集与准备、构建共现矩阵、构建稀疏实体关系图、生成初始嵌入、投影到 2D 等内容,总结出构建高质量嵌入可视化的流程,并推荐了相关工具和技术。

关键信息:

  • 嵌入是将实体表示为 N 维空间中的点,可用于各种领域,人类难以直观理解高维数据,需投影到 2 或 3 维。
  • 嵌入可视化能让用户自主探索和发现新事物,突破不透明系统的黑箱,作者对此很感兴趣。
  • 作者构建了 Spotify Music Galaxy、Anime Atlas、osu! Beatmap Atlas 等项目,分别使用不同数据和技术。
  • 数据收集要能回答“两个给定实体有多相似”,可能需要预过滤和处理索引与 ID 的关系。
  • 构建共现矩阵是嵌入过程的基础,要考虑内存和性能问题,可使用numba加速。
  • 构建稀疏实体关系图时,PyMDE 库的预处理程序可稀疏化和去权重边,n_neighborsembedding_dim等参数很重要。
  • 生成初始嵌入后,可使用 UMAP 或 t-SNE 算法将其投影到 2D,Emblaze 工具可方便比较和选择算法。
  • 构建可视化 UI 时,Web 应用有诸多优势,可使用 Pixi.JS 或编写自定义 shader 进行渲染。

重要细节:

  • Spotify Music Galaxy 用 Three.JS 构建,可让用户操控;Anime Atlas 为 2D 嵌入在动漫统计推荐网站中;osu! Beatmap Atlas 与作者的 osu! 统计追踪网站相关,数据丰富。
  • 预过滤可减少数据量,避免可视化杂乱,作者认为 10k - 50k 个实体较合适。
  • 构建共现矩阵时可根据实体数据添加权重,内存考虑方面可使用稀疏矩阵。
  • PyMDE 预处理时可禁用二次初始化或使用 GPU,与其他库相比有优势。
  • UMAP 平衡局部和全局结构好,t-SNE 夸大局部结构但牺牲全局结构,Emblaze 可方便比较。
  • 构建可视化 UI 时,WebGL/WebGPU 加速很重要,Pixi.JS 是不错选择,手写 shader 也可行。
阅读 9
0 条评论