t-sne大数据可视化算法法的作用是啥?为了降维还是认识数据

编译:寒小阳、蒋宝尚、Sheila、赖小娟、钱天培

假设你有一个包含数百个特征(变量)的数据集却对数据所属的领域几乎没有什么了解。 你需要去识别数据中的隐藏模式探索和分析数据集。不仅如此你还必须找出数据中是否存在模式--用以判定数据是有用信号还是噪音?

这是否让你感到不知所措当峩第一次遇到这种情况,我简直全身发麻想知道如何挖掘一个多维数据集? 这是许多数据科学家经常问的问题之一 该篇文章中,我将帶你通过一个强有力的方式来实现这一点用PCA怎么样?

现在一定会有很多人心里想着“我会使用PCA来降维和可视化”。 好吧你是对的! PCA絕对是具有大量特征的数据集的降维和可视化的不错选择。 但是假如你能使用比PCA更先进的东西将会怎样呢?

如果你可以很容易地找出非線性的模式呢 在本文中,我将告诉你一个比PCA(1933)更有效、被称为t-SNE(2008)的新算法 首先我会介绍t-SNE算法的基础知识,然后说明为什么t-SNE是非常適合的降维算法

你还将获得在R代码和Python语句中使用t-SNE的实践知识。

7.t-SNE与其他降维算法相比

(t-SNE)t-分布式随机邻域嵌入是一种用于挖掘高维数据的非线性降维算法 它将多维数据映射到适合于人类观察的两个或多个维度。 在t-SNE算法的帮助下你下一次使用高维数据时,可能就不需要绘淛很多探索性数据分析图了

为了理解t-SNE如何工作,让我们先了解什么是降维

简而言之,降维是在2维或3维中展现多维数据(具有多个特征嘚数据且彼此具有相关性)的技术。

有些人可能会问当我们可以使用散点图、直方图和盒图绘制数据,并用描述性统计搞清数据模式嘚时候为什么还需要降低维度

好吧,即使你可以理解数据中的模式并将其呈现在简单的图表上但是对于没有统计背景的人来说,仍然佷难理解它 此外,如果你有数百个特征值你必须研究数千张图表,然后才能搞懂这些数据

在降维算法的帮助下,您将能够清晰地表達数据

现在你已经了解什么是降维,让我们看看我们如何使用t-SNE算法来降维

以下是几个你可以查找到的降维算法:

1.主成分分析(线性)

3.薩蒙映射(非线性)

4.等距映射(非线性)

5.局部线性嵌入(非线性)

6.规范相关分析(非线性)

8.最小方差无偏估计(非线性)

9.拉普拉斯特征图(非線性)

好消息是,你只需要学习上述算法中的其中两种就可以有效地在较低维度上使数据可视化 - PCA和t-SNE。

PCA是一种线性算法 它不能解释特征の间的复杂多项式关系。 另一方面t-SNE是基于在邻域图上随机游走的概率分布,可以在数据中找到其结构关系

线性降维算法的一个主要问題是它们集中将不相似的数据点放置在较低维度区域时,数据点相距甚远 但是为了在低维、非线性流型上表示高维数据,我们也需要把楿似的数据点靠近在一起展示这并不是线性降维算法所能做的。

现在你对PCA应该有了一个简短的了解。

局部方法寻求将流型上的附近点映射到低维表示中的附近点 另一方面,全局方法试图保留所有尺度的几何形状即将附近的点映射到附近的点,将远处的点映射到远处嘚点

要知道除t-SNE之外的大多数非线性技术都不能同时保留数据的局部和全局结构。

4. t-SNE的算法细节(选读)

该部分是为有兴趣深入理解算法的囚准备的 如果您不想了解数学上面的细节,可以放心地跳过本节

随机邻近嵌入(SNE)首先通过将数据点之间的高维欧几里得距离转换为表示相似性的条件概率。数据点与数据点的相似性是条件概率——如果邻域被选择与在以为中心的正态分布的概率密度成比例将选择作為其邻域的概率。

其中是以数据点为中心的正态分布的方差如果你对数学不感兴趣,以这种方式思考它算法开始于将点之间的最短距離(直线)转换成点的相似度的概率。 其中点之间的相似性是: 如果在以为中心的高斯(正态分布)下与邻域的概率密度成比例地选取鄰域,则会选择作为其邻居的条件概率

对于低维数据点的高维对应点,可以计算类似的条件概率其由表示。

需要注意的是pi | i和pj | j被設置为零,因为我们只想对成对的相似性进行建模

简单来说,步骤1和步骤2计算一对点之间的相似性的条件概率这对点存在于:

为了简單起见,尝试详细了解这一点

让我们把3D空间映射到2D空间。 步骤1和步骤2正在做的是计算3D空间中的点的相似性的概率并计算相应的2D空间中嘚点的相似性的概率。

逻辑上条件概率必须相等,以便把具有相似性的不同维空间中的数据点进行完美表示即,之间的差必须为零以便在高维和低维中完美复制图。

通过该逻辑SNE试图使条件概率的这种差异最小化。

现在讲讲SNE和t-SNE算法之间的区别

为了测量条件概率SNE差值的总和的最小化,在全体数据点中使用梯度下降法使所有数据点的Kullback-Leibler散度总和减小到最小 我们必须知道,K-L散度本质上是不对称的

换呴话说,SNE代价函数重点在映射中保留数据的局部结构(为了高斯方差在高维空间的合理性)。

除此之外优化该代价函数是非常困难的(计算效率低)。

因此t-SNE也尝试最小化条件概率之差的总和值。 但它通过使用对称版本的SNE代价函数使用简单的梯度。此外t-SNE在低维空间Φ采用长尾分布,以减轻拥挤问题(参考下面译者解释)和SNE的优化问题

Research,大神Hinton的文章)重点讨论的问题(文章的3.2节)译者的理解是,洳果想象在一个三维的球里面有均匀分布的点如果把这些点投影到一个二维的圆上一定会有很多点是重合的。所以在二维的圆上想尽可能表达出三维里的点的信息把由于投影所重合的点用不同的距离(差别很小)表示,这样就会占用原来在那些距离上的点原来那些点會被赶到更远一点的地方。t分布是长尾的意味着距离更远的点依然能给出和高斯分布下距离小的点相同的概率值。从而达到高维空间和低维空间对应的点概率相同的目的

如果我们看到计算条件概率的方程,我们忽略了现在的讨论的方差要选择的剩余参数是学生的t-分布嘚方差,其中心在每个高维数据点的中心不可能存在对于数据集中的所有数据点最优的单个值,因为数据的密度可能变化在密集区域Φ,较小的值通常与较稀疏的区域相比更合适任何特定值在所有其他数据点上诱发概率分布

该分布具有随着增加而增加的熵 t-SNE对的值執行二进制搜索,产生具有由用户指定具有困惑度的2 该困惑度定义为

其中H()是以比特字节测量的香农熵

困惑度可以被解释为对邻域的囿效数量的平滑测量。 SNE的性能对于茫然性的变化是相当稳固的并且典型值在5和50之间。

代价函数的最小化是使用梯度下降法来执行的并苴从物理上,梯度可以被解释为由图上定位点和所有其他图上定位点之间的一组弹簧产生的合力所有弹簧沿着方向( - )施加力。弹簧在定位点之间的排斥或吸引取决于图中的两点之间的距离是太远还是太近 (太远和太近都不能表示两个高维数据点之间的相似性。)由弹簧茬之间施加的力与其长度成比例并且还与其刚度成比例,刚度是数据的成对相似性之间的失配(pj | i-qj | i

步骤3和4都在讲述SNE 与t-SNE之间的区别总结洳下:

区别一:将不对称的代价函数改成对称的代价函数。

则可避免上述不对称的代价函数所带来的问题

区别二:在低维空间中使用学苼t-分布而不是高斯分布来计算点与点之间的相似度。

t-SNE在低维空间中采用长尾的学生t-分布

以减轻拥挤问题和SNE的优化问题。

4.2 时间和空间复杂喥

现在我们已经了解了算法是分析其性能的时候了。 正如你可能已经观察到的该算法计算成对的条件概率,并试图最小化较高和较低維度的概率差的总值 这涉及大量的运算和计算。 所以该算法对系统资源相当重要

t-SNE在数据点的数量上具有二次时间和空间复杂性。 这使嘚它应用于超过10,000个观察对象组成的数据集的时候特别慢和特别消耗资源

了解了 t-SNE 算法的数学描述及其工作原理之后,让我们总结一下前边学過的东西。以下便是t-SNE工作原理的简述

实际上很简单。 非线性降维算法t-SNE通过基于具有多个特征的数据点的相似性识别观察到的模式来找到數据中的规律它不是一个聚类算法,而是一个降维算法这是因为当它把高维数据映射到低维空间时,原数据中的特征值不复存在所鉯不能仅基于t-SNE的输出进行任何推断。因此本质上它主要是一种数据探索和可视化技术。

但是t-SNE可以用于分类器和聚类中用它来生成其他汾类算法的输入特征值。

你可能会问 t-SNE有哪些应用场景呢?它几乎可以用于任何高维数据不过大部分应用集中在图像处理,自然语言处悝基因数据以及语音处理。它还被用于提高心脑扫描图像的分析以下维几个实例:

人脸识别技术已经取得巨大进展,很多诸如PCA之类的算法也已经在该领域被研究过但是由于降维和分类的困难,人脸识别依然具有挑战性t-SNE被用于高维度数据降维,然后用其它算法例如 AdaBoostM2, 隨机森林, 逻辑回归, 神经网络等多级分类器做表情分类。

一个人脸识别的研究采用了日本女性脸部表情数据库和t-SNE结合AdaBoostM2的方法其实验结果表奣这种新方法效果优于诸如PCA, LDA, LLE及SNE的传统算法。

以下为实现该方法的流程图: 

6.2 识别肿瘤亚群(医学成像)

质谱成像(MSI)是一种同时提供组织中數百个生物分子的空间分布的技术 t-SNE,通过数据的非线性可视化能够更好地解析生物分子肿瘤内异质性。

以无偏见的方式t-SNE可以揭示肿瘤亚群,它们与胃癌患者的存活和乳腺癌患者原发性肿瘤的转移状态具有统计相关性 对每个t-SNE簇进行的存活分析将提供非常有用的结果。[3] 

詞向量表示法捕获许多语言属性如性别,时态复数甚至语义概念,如“首都城市” 使用降维,可以计算出使语义相似的词彼此临近嘚2D地图 这种技术组合可以用于提供不同文本资料的鸟瞰图,包括文本摘要及其资料源 这使用户能够像使用地图一样探索文本资料。[4]

7. t-SNE与其它降维算法的对比

下边我们将要比较t-SNE和其它算法的性能这里的性能是基于算法所达到的准确度,而不是时间及运算资源的消耗与准确喥之间的关系

t-SNE产生的结果优于PCA和其它线性降维模型。这是因为诸如经典缩放的线性方法不利于建模曲面的流型 它专注于保持远离的数據点之间的距离,而不是保留临近数据点之间的距离

t-SNE在高维空间中采用的高斯核心函数定义了数据的局部和全局结构之间的软边界。 对於高斯的标准偏差而言彼此临近的数据点对对它们的间隔建模的重要性几乎与那些间隔的大小无关。 此外t-SNE基于数据的局部密度(通过強制每个条件概率分布具有相同的困惑度)分别确定每个数据点的局部邻域大小[1]。 这是因为算法定义了数据的局部和全局结构之间的软边堺 与其他非线性降维算法不同,它的性能优于其它任何一个算法 

让我们用MNIST手写数字数据库来实现t-SNE算法。 这是最被广泛探索的图像处理嘚数据集之一

“Rtsne”包具有t-SNE在R语言中的实现。“Rtsne”包可以通过在R控制台中键入以下命令安装:

MNIST数据可从MNIST网站下载并可用少量代码转换为csv攵件。对于此示例请下载以下经过预处理的MNIST数据。

可以看出运行于相同样本规模的数据,与PCA相比t-SNE所需时间明显更长

这些图可用于探索性分析。 输出的x和y坐标以及成本代价值可以用作分类算法中的特征值

一个重要的事情要注意的是“pip install tsne”会产生错误 不建议安装“tsne”包。 t-SNE算法可以从sklearn包中访问

对于数据科学家来说,使用t-SNE的主要问题是算法的黑盒类型性质这阻碍了基于结果提供推论和洞察的过程。此外該算法的另一个问题是它不一定在连续运行时永远产生类似的输出。

那么你怎么能使用这个算法?最好的使用方法是用它进行探索性数據分析 它会给你非常明确地展示数据内隐藏的模式。它也可以用作其他分类和聚类算法的输入参数

9.2机器学习竞赛爱好者

将数据集减少箌2或3个维度,并使用非线性堆栈器将其堆栈 使用保留集进行堆叠/混合。 然后你可以使用XGboost提高t-SNE向量以得到更好的结果

对于才开始接触数據科学的数据科学爱好者来说,这种算法在研究和性能增强方面提供了最好的机会已经有一些研究论文尝试通过利用线性函数来提高算法的时间复杂度。但是尚未得到理想的解决方案针对各种实施t-SNE算法解决自然语言处理问题和图像处理应用程序的研究论文是一个尚未开發的领域,并且有足够的空间范围

以下是在解释t-SNE的结果时要注意的几个点:

1.为了使算法正确执行,困惑度应小于数据点数 此外,推荐嘚困惑度在(5至50)范围内

2.有时具有相同超参数的多次运行结果可能彼此不同。

3.任何t-SNE图中的簇大小不得用于标准偏差色散或任何其他诸洳此类的度量。这是因为t-SNE扩展更密集的集群并且使分散的集群收缩到均匀的集群大小。 这是它产生清晰的地块的原因之一

4.簇之间的距離可以改变,因为全局几何与最佳困惑度密切相关 在具有许多元素数量不等的簇的数据集中,同一个困惑度不能优化所有簇的距离

5.模式也可以在随机噪声中找到,因此在决定数据中是否存在模式之前必须检查具有不同的超参数组的多次运算结果。

6.在不同的困惑度水平鈳以观察到不同的簇形状

7.拓扑不能基于单个t-SNE图来分析,在进行任何评估之前必须观察多个图

}

我要回帖

更多关于 数据可视化算法 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信