主要内容

T分布式随机邻居嵌入

描述

例子

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

例子

y= tsne(X名称,价值使用由一个或多个名称值对参数指定的选项修改eMbeddings。

例子

[y失利] = Tsne(___,对于任何输入参数,还返回为数据建模的联合分布之间的Kullback-Leibler发散X和嵌入y

例子

全部收缩

Fisher IRIS数据集具有四维虹膜测量,并将对应分类为物种。通过减少尺寸来通过减少尺寸来可视化此数据

加载fisheririsRNG.默认的重复性的%y = tsne(meas);G箭头(Y(:,1),Y(:,2),物种)

图中包含一个轴。轴包含3个类型的线。这些物品代表着setosa, versicolor, virginica。

使用各种距离指标尝试在Fisher IRIS数据中获得物种之间的更好分离。

加载fisheririsrng (“默认”重复性的%y = tsne(meas,'算法'“准确”“距离”'mahalanobis');子图(2,2,1)G谓词(Y(:,1),Y(:,2),物种)标题('mahalanobis')RNG(“默认”公平比较%y = tsne(meas,'算法'“准确”“距离”'余弦');子图(2,2,2)G谓词(Y(:,1),Y(:,2),物种)标题('余弦')RNG(“默认”公平比较%y = tsne(meas,'算法'“准确”“距离”'chebbychev');子图(2,2,3)G谓词(Y(:,1),Y(:,2),物种)标题(“Chebychev”)RNG(“默认”公平比较%y = tsne(meas,'算法'“准确”“距离”“欧几里得”);次要情节(2,2,4)gscatter (Y (: 1), Y(:, 2),物种)标题('euclidean'

图中包含4个轴。标题为Mahalanobis的坐标轴1包含3个类型为line的对象。这些物品代表着setosa, versicolor, virginica。标题为cos的轴2包含3个类型为line的对象。这些物品代表着setosa, versicolor, virginica。标题为Chebychev的坐标轴3包含3个line类型的对象。这些物品代表着setosa, versicolor, virginica。标题为欧几里得的坐标轴4包含3个线型对象。这些对象代表Setosa,Versicolor,Virginica。

在这种情况下,余弦,Chebychev,和欧几里德距离度量给出了合理的良好的集群分离。但是马氏距离度量并没有给出一个很好的分离。

删除包含任何内容的输入数据行参赛作品。因此,您必须在绘制之前从分类数据中删除任何此类行。

例如,将费雪虹膜数据中的一些随机项改为

加载fisheririsRNG.默认的重复性的%MEAS(rand(尺寸(meas))<0.05)= nan;

使用四维数据嵌入两个维度

y = tsne(meas,'算法'“准确”);
警告:删除了x或'inally'值中的NaN缺失值的行。

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

长度(物种) - 长度(y)
ans = 22.

准备通过定位行绘制结果那没有价值观。

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

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

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

图中包含一个轴。轴包含3个类型的线。这些物品代表着setosa, versicolor, virginica。

找到Fisher Iris数据的2-D和3-D嵌入,并比较每个嵌入的损耗。对于3-D嵌入,损失很可能是较低的,因为这种嵌入具有更多的自由来匹配原始数据。

加载fisheririsRNG.默认的重复性的%[y,损失] = tsne(meas,'算法'“准确”);RNG.默认的公平比较%(Y2, loss2) = tsne(量,'算法'“准确”'numdimensions'3);流('2-D嵌入有损失%g,3-d嵌入有损失%g。\ n'、损失、loss2)
二维包埋损失0.124191,三维包埋损失0.0990884。

正如预期的那样,3-D嵌入损失较低。

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

对于3-D图,将物种转换为使用该物种的数字值分类命令,然后使用函数如下。如果V.是正整数1,2或3的矢量,对应于物种数据,然后是命令

稀疏(1:Numel(v),v,v,尺寸(v)))

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

G箭偶(Y(:,1),Y(:,2),物种,眼睛(3))标题('2-D嵌入'

图中包含一个轴。标题为2-D嵌入的轴包含3个类型为line的对象。这些物品代表着setosa, versicolor, virginica。

图v = double(分类(种));c = full(稀疏(1:numel(v),v,v,v)),numel(v),3));散射3(Y2(:,1),Y2(:,2),Y2(:,3),15,C,'填充') 标题('3-D嵌入')查看(-50,8)

图中包含一个轴。标题为3d嵌入的轴包含一个散点类型的对象。

输入参数

全部收缩

数据点,指定为一个N-经过-m矩阵,每行是一个m维点。

删除行X包含任何在创建嵌入之前的值。看绘图结果与NAN输入数据

数据类型:|双倍的

名称值对参数

指定可选的逗号分离对名称,价值论点。名称是参数名称和价值是对应的值。名称必须出现在引号内。您可以按如下顺序指定几个名称和值对参数Name1, Value1,…,的家

例子:y = tsne(x,'算法','确切','numpcacomponents',50)
算法控制

全部收缩

算法,指定为'barneshut'“准确”.这“准确”算法优化原始空间与嵌入式空间之间的分布的Kullback-Leibler分歧。这'barneshut'算法执行近似优化,当数据行的数量大时,较快的优化并使用较少的内存。

笔记

为了'barneshut'算法,使用knnsearch.找到最近的邻居。

例子:“准确”

距离度量,由以下之一指定。有关距离指标的定义,请参阅Pdist.

  • “欧几里得”- 欧几里德距离。

  • “seuclidean”- 标准化的欧几里德距离。行之间的每个坐标差异X查询矩阵通过除以所计算的标准差的相应元素进行缩放s = std(x,'omitnan')

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

  • 'chebbychev'- Chebychev距离,即最大坐标差异。

  • 闵可夫斯基的- Minkowski与指数2.这与欧几里德距离相同。

  • 'mahalanobis'-马氏距离,使用正定协方差矩阵计算COV(x,'omitrows')

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

  • '相关性'- 一个减去观察结果之间的样本线性相关性(作为值序列处理)。

  • “枪兵”- 一个减去样本Spearman之间的检测之间的秩相关性(视为值序列)。

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

  • 'jaccard'- 一个减去Jaccard系数,这是不同的非零坐标的百分比。

  • 自定义距离功能 - 使用的距离功能@(例如,@distfun).有关详细信息,请参阅更多关于

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

例子:'mahalanobis'

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

大幅夸张学习更大的联合概率y并在集群之间创造相对更多的空间y在第一个99优化迭代中使用夸张。

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

例子:10

数据类型:|双倍的

输出的尺寸y,指定为正整数。一般来说,设置numdimensions.23.

例子:3.

数据类型:|双倍的

PCA降维,指定为非负整数。之前嵌入高维数据,首先将数据的维度降低到NumPCAComponents使用PCA.功能。什么时候NumPCAComponents0.不使用PCA。

例子:50.

数据类型:|双倍的

每个点的有效数量的本地邻居,指定为正标量。看T-SNE算法

更大的困惑原因使用更多的点作为最近的邻居。使用较大的值困惑对于一个大型数据集。典型的困惑价值来自5.50..在Barnes-Hut算法中,使用min(3 *困惑,n-1)作为最近邻居的数目。看tsne设置

例子:10

数据类型:|双倍的

规范化输入数据,指定为错误的真正的.什么时候真正的中心和鳞片X用标准差除以各列。

当特征X在不同的尺度上,设置'标准化'真正的.这样做是因为学习过程是基于最近邻的,所以大尺度特征可以覆盖小尺度特征的贡献。

例子:真正的

数据类型:逻辑

优化控制

全部收缩

初始嵌入点,指定为一个N-经过-numdimensions.真正的矩阵,N是行的行数X.这优化算法使用这些点作为初始值。

数据类型:|双倍的

优化过程的学习率,指定为正标量。通常,设置值One hundred.通过1000

什么时候学习太小,能收敛到一个可怜的局部最小值。什么时候学习太大了,优化可以最初具有kullback-leibler发散增加而不是减少。看tsne设置

例子:1000

数据类型:|双倍的

迭代显示频率,指定为正整数。当。。。的时候详细的名称 - 值对不是0.每次后返回迭代显示Numprint.迭代。如果是选项名称-值对包含一个非空值'outputfcn'条目,然后输出函数在每一个之后运行Numprint.迭代。

例子:20.

数据类型:|双倍的

优化选项,指定为包含字段的结构'maxiter''outputfcn','tolfun'.创建'选项'使用实例化塑造

  • 'maxiter'—正整数,指定优化迭代的最大次数。默认值:1000

  • 'outputfcn'- 功能句柄或单元函数阵列,指定一个或多个函数以后调用Numprint.优化迭代。有关语法的详细信息,请参见T-SNE输出功能.默认值:[]

  • 'tolfun'- 停止优化的标准。当Kullback-Leibler发散的梯度的规范小于时,优化退出'tolfun'.默认值:1E-10

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

数据类型:塑造

Barnes-Hut Transtroff参数,指定为标量从0到1。更高的值给出更快但不太准确的优化。只适用于当算法'barneshut'

例子:0.1

数据类型:|双倍的

迭代显示,指定为0.1,或2.什么时候详细的不是0.输出一个库尔贝克-莱布勒散度的汇总表及其梯度的范数Numprint.迭代。

什么时候详细的2还打印了高斯内核的差异。在计算联合概率的计算中使用这些内核X.如果您看到最小和最大差异的尺度差异,您有时可以通过重新划分获得更合适的结果X

例子:2

数据类型:|双倍的

输出参数

全部收缩

嵌入点,返回为N-经过-numdimensions.矩阵。每行代表一个嵌入点。N是数据行数吗X不包含任何参赛作品。看绘图结果与NAN输入数据

模型输入和输出分布之间的Kullback-Leibler发散,以非负标量返回。有关详细信息,请参阅T-SNE算法

更多关于

全部收缩

自定义距离函数

自定义距离功能的语法如下。

函数ZJ D2 = distfun(子)

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

  • Zi.是一个1-by-N中包含单行的向量Xy

  • ZJ.是一个m-经过-N包含多行的矩阵Xy

您的功能返回D2,这是一个m-by-1距离矢量。这jTh元素D2是观测之间的距离吗Zi.zj(j,:)

小费

如果您的数据不稀疏,则通常内置距离函数比函数句柄更快。

算法

在低维空间中构造一组嵌入点,其相对相似度模拟了原始高维点的那些。嵌入点显示了原始数据中的群集。

粗略地,算法模拟了来自高斯分布的原始点,以及来自学生的嵌入点T.分配。该算法试图通过移动嵌入点来最小化这两个分布之间的kullback-leibler发散。

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

在R2017A介绍