主要内容

tsne

t分布随机邻居嵌入

描述

例子

Y= tsne (X的高维行的二维嵌入的矩阵X

例子

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

例子

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

例子

全部折叠

Fisher虹膜数据集有虹膜的四维测量数据,并有相应的物种分类。通过使用降低维数来可视化此数据tsne

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

图中包含一个axes对象。坐标轴对象包含3个line类型的对象。这些物品代表了彩色,彩色,处女。

使用各种距离度量来尝试在Fisher虹膜数据中获得更好的物种分离。

负载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个轴对象。标题为Mahalanobis的axis对象1包含3个类型为line的对象。这些物品代表了彩色,彩色,处女。标题为cos的axis对象2包含3个类型为line的对象。这些物品代表了彩色,彩色,处女。标题为Chebychev的Axes对象3包含3个类型为line的对象。这些物品代表了彩色,彩色,处女。标题为Euclidean的Axes对象4包含3个类型为line的对象。这些物品代表了彩色,彩色,处女。

在这种情况下,余弦、切比切夫和欧氏距离度量给出了相当好的簇分离。但是马氏距离度量并不能给出很好的分离。

tsne删除包含。的输入数据行条目。因此,在绘图之前,必须从分类数据中删除任何这样的行。

例如,将Fisher虹膜数据中的一些随机条目更改为

负载fisheririsrng默认的%的再现性meas(rand(size(meas)) < 0.05) = NaN;

将四维数据嵌入二维tsne

Y = tsne(量,“算法”“准确”);
警告:在X或'InitialY'值中缺少NaN值的行将被删除。

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

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

的行,准备绘制结果没有值。

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

的行绘制结果物种对应的行没有值。

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

图中包含一个axes对象。坐标轴对象包含3个line类型的对象。这些物品代表了彩色,彩色,处女。

找出Fisher虹膜数据的二维和三维嵌入,比较每种嵌入的损失。三维嵌入的损失可能更低,因为这种嵌入有更大的自由来匹配原始数据。

负载fisheririsrng默认的%的再现性(Y,亏损)= tsne(量,“算法”“准确”);rng默认的%进行公平比较(Y2, loss2) = tsne(量,“算法”“准确”“NumDimensions”3);流('二维嵌入有损耗%g,三维嵌入有损耗%g。\n'、损失、loss2)
二维嵌入损耗为0.1255,三维嵌入损耗为0.0980872。

与预期的一样,三维嵌入具有较低的损耗。

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

方法将物种转换为数值分类命令,然后将数值转换为RGB颜色稀疏的函数如下。如果v是否正整数向量1、2或3对应于物种数据,那么命令

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

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

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

图中包含一个axes对象。标题为2d Embedding的axis对象包含3个类型为line的对象。这些物品代表了彩色,彩色,处女。

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

图中包含一个axes对象。标题为3d Embedding的axes对象包含一个类型为scatter的对象。

输入参数

全部折叠

数据点,指定为n——- - - - - -矩阵,每一行都是1维点。

tsne删除行X包含任何值之前创建嵌入。看到用NaN输入数据绘制结果

数据类型:|

名称-值参数

指定可选参数对为Name1 = Value1,…,以=家,在那里的名字参数名称和价值对应的值。名-值参数必须出现在其他参数之后,但对的顺序并不重要。

在R2021a之前,名称和值之间用逗号隔开,并括起来的名字在报价。

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

算法控制

全部折叠

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

请注意

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

例子:“准确”

距离度量,由下列之一指定。有关距离度量的定义,请参见pdist

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

  • “seuclidean”-标准化欧氏距离。每一行之间的坐标差X通过除以计算出的标准偏差的相应元素来缩放查询矩阵S =性病(X, omitnan)

  • “cityblock”-城市街区距离。

  • “chebychev”-切比乔夫距离,即最大坐标差。

  • 闵可夫斯基的-指数为2的闵可夫斯基距离。这和欧氏距离是一样的。

  • “mahalanobis”-马氏距离,用正定协方差矩阵计算X (X, omitrows)

  • 的余弦- 1减去观测值之间夹角的余弦(作为向量处理)。

  • “相关”- 1减去观察值之间的样本线性相关性(作为值序列处理)。

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

  • “汉明”-汉明距离,即不同坐标的百分比。

  • “jaccard”- 1减去雅卡德系数,即非零坐标的百分比。

  • custom distance function—使用指定的距离函数@(例如,@distfun).有关详细信息,请参见更多关于

在所有情况下,tsne的联合分布中的高斯核是用成对距离的平方来计算的X

例子:“mahalanobis”

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

过分的夸张tsne的更大的联合概率Y在集群之间创造了相对更大的空间Ytsne在前99个优化迭代中使用夸张。

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

例子:10

数据类型:|

输出尺寸Y,指定为正整数。一般来说,设置NumDimensions23.

例子:3.

数据类型:|

PCA降维,指定为非负整数。之前tsne嵌入高维数据时,首先将数据的维数降为NumPCAComponents使用主成分分析函数。当NumPCAComponents0tsne不使用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

数据类型:|

迭代显示频率,指定为正整数。当详细的名称-值对不是0tsne返回迭代显示后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

数据类型:|

迭代显示,指定为01,或2.当详细的不是0tsne打印出Kullback-Leibler散度及其梯度范数的汇总表NumPrint迭代。

详细的2tsne也打印出高斯核的方差。tsne用这些核来计算联合概率X.如果您看到最小和最大方差的尺度有很大的差异,您有时可以通过缩放得到更合适的结果X

例子:2

数据类型:|

输出参数

全部折叠

嵌入的点,返回为n——- - - - - -NumDimensions矩阵。每一行表示一个嵌入点。n数据的行数X不包含任何条目。看到用NaN输入数据绘制结果

模型输入和输出分布之间的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

Baidu
map