主要内容

tsne

t-Distributed随机邻居嵌入

描述

例子

Y= tsne (X)返回一个矩阵的二维映射进行高维行X

例子

Y= tsne (X,名称,值)修改嵌入使用选项指定一个或多个参数名称-值对。

例子

(Y,损失)= tsne (___)任何输入参数,也返回Kullback-Leibler散度联合分布模型之间的数据X和嵌入Y

例子

全部折叠

费舍尔虹膜数据集有四维测量的虹膜,和相应的分类到物种。使用可视化数据通过减少维度tsne

负载fisheririsrng默认的%的再现性Y = tsne(量);gscatter (Y (: 1), Y(:, 2),物种)

图包含一个坐标轴对象。坐标轴对象包含3线类型的对象。杂色的,这些对象代表setosa virginica。

使用各种距离指标,试图获得一个更好的物种之间在费舍尔虹膜数据分离。

负载fisheririsrng (“默认”)%的再现性Y = tsne(量,“算法”,“准确”,“距离”,“mahalanobis”);次要情节(2,2,1)gscatter (Y (: 1), Y(:, 2),物种)标题(“Mahalanobis”)提高(“默认”)%对公平的比较Y = tsne(量,“算法”,“准确”,“距离”,的余弦);次要情节(2 2 2)gscatter (Y (: 1), Y(:, 2),物种)标题(的余弦)提高(“默认”)%对公平的比较Y = tsne(量,“算法”,“准确”,“距离”,“chebychev”);次要情节(2,2,3)gscatter (Y (: 1), Y(:, 2),物种)标题(“Chebychev”)提高(“默认”)%对公平的比较Y = tsne(量,“算法”,“准确”,“距离”,“欧几里得”);次要情节(2,2,4)gscatter (Y (: 1), Y(:, 2),物种)标题(“欧几里得”)

图包含4轴对象。坐标轴对象1标题包含3线类型的对象。杂色的,这些对象代表setosa virginica。坐标轴对象2标题余弦包含3线类型的对象。杂色的,这些对象代表setosa virginica。坐标轴对象3标题Chebychev包含3线类型的对象。杂色的,这些对象代表setosa virginica。坐标轴对象4标题欧几里得包含3线类型的对象。杂色的,这些对象代表setosa virginica。

在这种情况下,余弦、Chebychev和欧氏距离度量提供相当不错的集群分离。但距离度量并没有给出很好的分离。

tsne删除输入包含任何数据行条目。因此,您必须删除任何行策划之前从你的分类数据。

例如,改变一些随机费舍尔虹膜数据条目

负载fisheririsrng默认的%的再现性量(兰德(大小(量))< 0.05)=南;

将四维数据嵌入到二维tsne

Y = tsne(量,“算法”,“准确”);
警告:行南缺失值X或“则”的值将被去除。

确定从嵌入中消灭了多少行。

长度(物种)长度(Y)
ans = 22

准备策划结果的行定位没有值。

goodrows =没有(任何(isnan(量),2));

绘制结果只使用的行物种对应于行没有值。

gscatter (Y (: 1), Y(:, 2),物种(goodrows))

图包含一个坐标轴对象。坐标轴对象包含3线类型的对象。杂色的,这些对象代表setosa virginica。

发现费舍尔的2 d和3 d嵌入的虹膜数据,并比较每个嵌入的损失。很可能失去3 d嵌入较低,因为这个嵌入有更多的自由来匹配原始数据。

负载fisheririsrng默认的%的再现性(Y,亏损)= tsne(量,“算法”,“准确”);rng默认的%对公平的比较(Y2, loss2) = tsne(量,“算法”,“准确”,“NumDimensions”3);流(“二维嵌入损失% g, 3 d嵌入% g。\ n损失”、损失、loss2)
二维嵌入损失0.124191,0.0990884和3 d嵌入有损失。

正如所料,3 d嵌入有较低的损失。

查看嵌入。使用RGB颜色(1 0 0),(0 1 0),(0 0 1)

的3 d图,将物种数值使用分类命令,然后将数值转换为RGB颜色使用稀疏的函数如下。如果v是一个向量的正整数1、2或3,对应于该物种数据,然后命令

稀疏(1:元素个数(v), v, 1(大小(v)))

是一个稀疏矩阵的行RGB颜色的物种。

gscatter (Y (: 1), Y(:, 2),物种,眼(3))标题(“二维嵌入”)

图包含一个坐标轴对象。与标题二维坐标轴对象嵌入包含3线类型的对象。杂色的,这些对象代表setosa virginica。

图v =双(分类(物种));c =全(稀疏(1:元素个数(v), v,(大小(v))的元素个数(v), 3));scatter3 (Y2 (:, 1), Y2 (:, 2), Y2(:, 3), 15日,c,“填充”)标题(“3 d嵌入”)视图(-50 8)

图包含一个坐标轴对象。坐标轴对象与标题3 d嵌入包含一个散射类型的对象。

输入参数

全部折叠

数据点,指定为一个n——- - - - - -矩阵,每一行就是其中之一维点。

tsne删除行X包含任何值之前创建一个嵌入。看到图结果与南输入数据

数据类型:|

名称-值参数

指定可选的逗号分隔条名称,值参数。的名字参数名称和吗价值相应的价值。的名字必须出现在引号。您可以指定几个名称和值对参数在任何顺序Name1, Value1,…,的家

例子:Y = tsne (X,“算法”,“准确”,“NumPCAComponents”, 50)
算法控制

全部折叠

tsne算法,指定为“barneshut”“准确”。的“准确”算法优化Kullback-Leibler背离原始之间的分布空间和嵌入式空间。的“barneshut”算法执行一个近似优化时速度更快,使用更少的内存大的数据行数。

请注意

“barneshut”算法,tsne使用knnsearch找到最近的邻居。

例子:“准确”

距离度量,指定下列之一。距离度量的定义,请参阅pdist

  • “欧几里得”——欧氏距离。

  • “seuclidean”——标准化的欧氏距离。每个坐标行之间的区别X和查询矩阵是通过除以相应的扩展元素的标准差计算S =性病(X, omitnan)

  • “cityblock”——城市街区的距离。

  • “chebychev”——Chebychev距离最大值坐标的差异。

  • 闵可夫斯基的-闵可夫斯基距离指数2。这是欧氏距离相同。

  • “mahalanobis”——Mahalanobis距离,使用正定协方差矩阵计算X (X, omitrows)

  • 的余弦- 1 -之间的夹角的余弦值观察(视为向量)。

  • “相关”- 1 -样本线性相关性的观察(作为序列的值)。

  • “枪兵”- 1 -样本之间的斯皮尔曼等级相关的观察(作为序列的值)。

  • “汉明”——汉明距离、坐标不同的百分比。

  • “jaccard”- 1 - Jaccard系数非零坐标的比例不同。

  • 自定义距离函数——一个距离函数指定使用@(例如,@distfun)。有关详细信息,请参见更多关于

在所有情况下,tsne使用两两距离平方来计算高斯内核的联合分布X

例子:“mahalanobis”

自然集群大小的数据,指定为一个标量值1或更高版本。

一个较大的夸张tsne学习更大的联合概率Y并创建集群之间的相对更多的空间Ytsne使用夸张的99年第一个优化迭代。

如果Kullback-Leibler散度的价值增加的早期阶段优化,尝试减少夸张。看到tsne设置

例子:10

数据类型:|

输出的维度Y,指定为一个正整数。一般来说,设置NumDimensions23

例子:3

数据类型:|

PCA降维,指定为一个非负整数。之前tsne嵌入在高维数据时,它首先会降低数据的维数NumPCAComponents使用主成分分析函数。当NumPCAComponents0,tsne不使用PCA。

例子:50

数据类型:|

有效的本地邻居的每个点,指定为一个积极的标量。看到t-SNE算法

更大的困惑的原因tsne使用更多的点最近的邻居。使用一个更大的价值困惑对于大型的数据集。典型的困惑值从550。在Barnes-Hut算法,tsne使用分钟(3 *困惑,n - 1)随着最近的邻居。看到tsne设置

例子:10

数据类型:|

正常输入数据,指定为真正的。当真正的,tsne中心和尺度X列除以标准差。

当特征X在不同的尺度上,准备好了吗“标准化”真正的。这样做是因为学习过程是基于最近的邻居,所以与大尺度特性与小尺度可以覆盖特性的贡献。

例子:真正的

数据类型:逻辑

优化控制

全部折叠

最初的嵌入点,指定为一个n——- - - - - -NumDimensions真正的矩阵,n的行数X。的tsne优化算法使用这些点作为初始值。

数据类型:|

学习速率的优化过程,指定为一个积极的标量。通常,设置值One hundred.通过1000年

LearnRate太小了,tsne可以收敛到局部最小值。当LearnRate太大,优化可以最初Kullback-Leibler散度增加而不是减少。看到tsne设置

例子:1000年

数据类型:|

迭代显示频率,指定为一个正整数。当详细的名称-值对不0,tsne返回迭代显示每次NumPrint迭代。如果选项名称-值对包含一个非空的“OutputFcn”追求每一个条目,然后输出功能NumPrint迭代。

例子:20.

数据类型:|

优化选项,指定为包含字段的结构“麦克斯特”,“OutputFcn”,“TolFun”。创建“选项”使用statset结构体

  • “麦克斯特”——正整数指定优化迭代的最大数量。默认值:1000年

  • “OutputFcn”——函数处理或单元数组的函数处理后打电话给每一个指定一个或多个功能NumPrint优化迭代。语法细节,请参阅t-SNE输出函数。默认值:[]

  • “TolFun”——停止准则的优化。优化出口当常态的梯度Kullback-Leibler散度小于“TolFun”。默认值:1平台以及

例子:选择= statset(麦克斯特,500)

数据类型:结构体

Barnes-Hut权衡参数,指定为一个标量从0到1。更高的值给一个快但不准确的优化。只适用于当算法“barneshut”

例子:0.1

数据类型:|

迭代显示,指定为0,1,或2。当详细的不是0,tsne打印的汇总表Kullback-Leibler散度和梯度的规范NumPrint迭代。

详细的2,tsne也输出方差的高斯内核。tsne使用这些内核的联合概率的计算X。如果你看到一个大的不同尺度的最小和最大方差,你有时可以被重新调节更合适的结果X

例子:2

数据类型:|

输出参数

全部折叠

嵌入点,作为一个返回n——- - - - - -NumDimensions矩阵。每一行代表一个嵌入点。n行数据的数量吗X不包含任何条目。看到图结果与南输入数据

Kullback-Leibler建模的输入和输出之间的分歧分布,作为一个非负标量返回。有关详细信息,请参见t-SNE算法

更多关于

全部折叠

自定义距离函数

一个自定义距离函数的语法如下。

函数ZJ D2 = distfun(子)

tsne通过ZJ你的函数,函数计算距离。

  • 是1 -n向量包含单个行XY

  • ZJ是一个——- - - - - -n矩阵包含多个行XY

你的函数返回D2,这是一个1的向量距离。的jth元素D2是观察之间的距离ZJ (j,:)

提示

如果你的数据没有稀疏,那么通常内置的距离函数的速度比一个处理函数。

算法

tsne构造一组嵌入点在低维空间的相对相似模拟的原始高维点。嵌入点显示原始数据的聚类。

约,算法模型原始分,来自一个高斯分布,以及嵌入点来自学生的t分布。算法试图最小化Kullback-Leibler散度这两个发行版之间通过移动嵌入式点。

有关详细信息,请参见t-SNE

介绍了R2017a