主要内容

t-分布随机邻域嵌入

描述

例子

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

例子

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

例子

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

例子

全部收缩

Fisher虹膜数据集对虹膜进行了四维测量,并进行了相应的物种分类。通过减少使用的维度来可视化该数据

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

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

加载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(量,“算法”“准确”“距离”'chebbychev');子图(2,2,3)G谓词(Y(:,1),Y(:,2),物种)标题(“Chebychev”)提高(“默认”公平比较%Y = tsne(量,“算法”“准确”“距离”“欧几里得”);次要情节(2,2,4)gscatter (Y (: 1), Y(:, 2),物种)标题(“欧几里得”

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

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

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

加载fisheririsRNG.默认的重复性的%meas(rand(size(meas))) < 0.05) = NaN;

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

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

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

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

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

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

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

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

找到Fisher虹膜数据的二维和三维嵌入,并比较每种嵌入的损失。3-D嵌入的损失可能更小,因为这种嵌入有更多的自由来匹配原始数据。

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

正如预期的那样,三维嵌入具有较低的损耗。

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

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

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

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

gscatter (Y (: 1), Y(:, 2),物种,眼(3))标题('2-D嵌入'

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

输入参数

全部收缩

数据点,指定为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'-切比切夫距离,即最大坐标差。

  • 'minkowski'- Minkowski与指数2.这与欧几里德距离相同。

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

  • '余弦'- 1减少观察之间夹角的余弦(作为载体处理)。

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

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

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

  • “jaccard”- 1减去Jaccard系数,它是不同的非零坐标的百分比。

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

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

例子:“mahalanobis”

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

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

如果在优化的早期,Kullback-Leibler divergence的值有所增加,尝试减少夸大。看tsne设置

例子:10

数据类型:|

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

例子: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

数据类型:|

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

例子:20.

数据类型:|

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

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

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

  • “TolFun”—优化停止条件。当Kullback-Leibler散度梯度的范数小于时,优化就存在“TolFun”.默认值:1平台以及

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

数据类型:塑造

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

例子:0.1

数据类型:|

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

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

例子:2

数据类型:|

输出参数

全部收缩

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

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

更多关于

全部收缩

自定义距离函数

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

函数ZJ D2 = distfun(子)

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

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

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

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

小费

如果你的数据不是稀疏的,那么内置的距离函数通常比函数句柄快。

算法

在一个低维空间中构造一组嵌入点,其相对相似性与原来的高维点相似。嵌入点在原始数据中表现出聚类特征。

粗略地说,该算法将原始点建模为来自高斯分布的点,并将嵌入点建模为来自学生的点T.分布。该算法试图通过移动嵌入点来最小化这两个分布之间的kullbeck - leibler散度。

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

在R2017A介绍