深度详解可视化利器tSNE算法数无形

机器之心整理

参与:蒋思源

本文介绍了T分布随机近邻嵌入算法,即一种十分强大的高维数据降维方法。我们将先简介该算法的基本概念与直观性理解,再从详细分析与实现该降维方法,最后我们会介绍使用该算法执行可视化的结果。

T分布随机近邻嵌入(T-DistributionStochasticNighbourEmbdding)是一种用于降维的机器学习方法,它能帮我们识别相关联的模式。t-SNE主要的优势就是保持局部结构的能力。这意味着高维数据空间中距离相近的点投影到低维中仍然相近。t-SNE同样能生成漂亮的可视化。

当构建一个预测模型时,第一步一般都需要理解数据。虽然搜索原始数据并计算一些基本的统计学数字特征有助于理解它,但没有什么是可以和图表可视化展示更为直观的。然而将高维数据拟合到一张简单的图表(降维)通常是非常困难的,这就正是t-SNE发挥作用的地方。

在本文中,我们将探讨t-SNE的原理,以及t-SNE将如何有助于我们可视化数据。

t-SNE算法概念

这篇文章主要是介绍如何使用t-SNE进行可视化。虽然我们可以跳过这一章节而生成出漂亮的可视化,但我们还是需要讨论t-SNE算法的基本原理。

t-SNE算法对每个数据点近邻的分布进行建模,其中近邻是指相互靠近数据点的集合。在原始高维空间中,我们将高维空间建模为高斯分布,而在二维输出空间中,我们可以将其建模为t分布。该过程的目标是找到将高维空间映射到二维空间的变换,并且最小化所有点在这两个分布之间的差距。与高斯分布相比t分布有较长的尾部,这有助于数据点在二维空间中更均匀地分布。

控制拟合的主要参数为困惑度(Prplxity)。困惑度大致等价于在匹配每个点的原始和拟合分布时考虑的最近邻数,较低的困惑度意味着我们在匹配原分布并拟合每一个数据点到目标分布时只考虑最近的几个最近邻,而较高的困惑度意味着拥有较大的「全局观」。

因为分布是基于距离的,所以所有的数据必须是数值型。我们应该将类别变量通过二值编码或相似的方法转化为数值型变量,并且归一化数据也是也十分有效,因为归一化数据后就不会出现变量的取值范围相差过大。

T分布随机近邻嵌入算法(t-SNE)

JakHoar的博客并没有详细解释t-SNE的具体原理和推导过程,因此下面我们将基于GoffryHinton在年提出的论文和liamschonvld的推导与实现详细介绍t-SNE算法。如果读者对这一章节不感兴趣,也可以直接阅读下一章节JakHoar在实践中使用t-SNE进行数据可视化。

liamschonvld推导与实现ml.github.io/in-raw-numpy/in-raw-numpy-t-sn/

论文.jmlr.org/paprs/volum9/vandrmaatn08a/vandrmaatn08a.pdf

因为t-SNE是基于随机近邻嵌入而实现的,所以首先我们需要理解随机近邻嵌入算法。

随机近邻嵌入(SNE)

假设我们有数据集X,它共有N个数据点。每一个数据点x_i的维度为D,我们希望降低为d维。在一般用于可视化的条件下,d的取值为2,即在平面上表示出所有数据。

SNE通过将数据点间的欧几里德距离转化为条件概率而表征相似性(下文用p_j

i表示):

如果以数据点在x_i为中心的高斯分布所占的概率密度为标准选择近邻,那么p_j

i就代表x_i将选择x_j作为它的近邻。对于相近的数据点,条件概率p_j

i是相对较高的,然而对于分离的数据点,p_j

i几乎是无穷小量(若高斯分布的方差σ_i选择合理)。

其中σ_i是以数据点x_i为均值的高斯分布标准差,决定σ_i值的方法将在本章后一部分讨论。因为我们只对成对相似性的建模感兴趣,所以可以令p_i

i的值为零。

现在引入矩阵Y,Y是N*2阶矩阵,即输入矩阵X的2维表征。基于矩阵Y,我们可以构建一个分布q,其形式与p类似。

对于高维数据点x_i和x_j在低维空间中的映射点y_i和y_j,计算一个相似的条件概率q_j

i是可以实现的。我们将计算条件概率q_i

j中用到的高斯分布的方差设置为1/2。因此我们可以对映射的低维数据点y_j和y_i之间的相似度进行建模:

我们的总体目标是选择Y中的一个数据点,然后其令条件概率分布q近似于p。这一步可以通过最小化两个分布之间的KL散度(损失函数)而实现,这一过程可以定义为:

因为我们希望能最小化该损失函数,所以我们可以使用梯度下降进行迭代更新,我们可能对如何迭代感兴趣,但我们会在后文讨论与实现。

使用NumPy构建欧几里德距离矩阵

计算p_i

j和q_i

j的公式都存在负的欧几里德距离平方,即-

x_i-x_j

^2,下面可以使用代码实现这一部分:

dfng_squard_uc_dists(X):

"""Computmatrixcontainingngativsquarduclidan

distancforallpairsofpointsininputmatrixX

#Argumnts:

X:matrixofsizNxD

#Rturns:

NxNmatrixD,withntryD_ij=ngativsquard

uclidandistancbtwnrowsX_iandX_j

"""

#Math?S







































北京中科白殿疯医院
北京中医白癜风专科医院



转载请注明:http://www.92nongye.com/gaishu/gaishu/204620320.html