作者:禅与计算机程序设计艺术
1.简介
近年来,由于数据量大、维度高、计算复杂等多方面的原因,科研工作者们经常采用非线性降维(Nonlinear dimensionality reduction)方法来对高维数据进行可视化分析。其中最具代表性的方法之一是t-SNE(t-Distributed Stochastic Neighbor Embedding)。t-SNE通过一种自适应学习的方法,将高维数据的分布信息转换到二维平面上,从而达到数据可视化的目的。
然而,传统的实现方法存在着两个问题:
- 运算时间过长,对于较大的数据集来说,t-SNE的运行时间非常长;
- 没有充分利用高效率的KD树结构优化计算速度。
为了解决上述问题,提升t-SNE在高维数据的可视化效果和计算性能,在此我们首先介绍一下KD树(K-dimensional Tree),这是一种对二维空间中的点进行存储和快速查找的数据结构。KD树可以看成是高维空间的近似表示。它把高维空间划分成k个子区域,并在每个子区域内选取一个点作为该子区域的代表点,并记录其坐标值。当需要查询某个点所在的子区域时,只需在刚好落入该子区域的矩形框中搜索该点即可,这样就大大减少了搜索的时间复杂度。
基于KD树的t-SNE计算流程如下图所示:
通过KD树,可以有效地加速t-SNE的运行速度。KD树是一种高效的数据结构,它能够快速地检索某一点所在的k邻域范围。利用KD树,我们可以对点云数据中的相似点聚类,然后再根据不同子区域中的质心及中心点的位置,来确定每一类的中心点坐标。最后,根据这些中心点的坐标,绘制出2D图像。
本文主要介绍KD树和t-