tsne
t-Distributed随机邻居嵌入
描述
例子
可视化费舍尔虹膜数据
费舍尔虹膜数据集有四维测量的虹膜,和相应的分类到物种。使用可视化数据通过减少维度tsne
。
负载fisheririsrng默认的%的再现性Y = tsne(量);gscatter (Y (: 1), Y(:, 2),物种)
比较距离度量
使用各种距离指标,试图获得一个更好的物种之间在费舍尔虹膜数据分离。
负载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),物种)标题(“欧几里得”)
在这种情况下,余弦、Chebychev和欧氏距离度量提供相当不错的集群分离。但距离度量并没有给出很好的分离。
阴谋的结果南
输入数据
tsne
删除输入包含任何数据行南
条目。因此,您必须删除任何行策划之前从你的分类数据。
例如,改变一些随机费舍尔虹膜数据条目南
。
负载fisheririsrng默认的%的再现性量(兰德(大小(量))< 0.05)=南;
将四维数据嵌入到二维tsne
。
Y = tsne(量,“算法”,“准确”);
警告:行南缺失值X或“则”的值将被去除。
确定从嵌入中消灭了多少行。
长度(物种)长度(Y)
ans = 22
准备策划结果的行定位量
没有南
值。
goodrows =没有(任何(isnan(量),2));
绘制结果只使用的行物种
对应于行量
没有南
值。
gscatter (Y (: 1), Y(:, 2),物种(goodrows))
比较t-SNE损失
发现费舍尔的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))标题(“二维嵌入”)
图v =双(分类(物种));c =全(稀疏(1:元素个数(v), v,(大小(v))的元素个数(v), 3));scatter3 (Y2 (:, 1), Y2 (:, 2), Y2(:, 3), 15日,c,“填充”)标题(“3 d嵌入”)视图(-50 8)
输入参数
X
- - - - - -数据点
n
——- - - - - -米
矩阵
名称-值参数
指定可选的双参数作为Name1 = Value1,…,以=家
,在那里的名字
参数名称和吗价值
相应的价值。名称-值参数必须出现在其他参数,但对的顺序无关紧要。
R2021a之前,用逗号来分隔每一个名称和值,并附上的名字
在报价。
例子:Y = tsne (X,“算法”,“准确”,“NumPCAComponents”, 50)
算法
- - - - - -tsne
算法
“barneshut”
(默认)|“准确”
tsne
算法,指定为“barneshut”
或“准确”
。的“准确”
算法优化Kullback-Leibler背离原始之间的分布空间和嵌入式空间。的“barneshut”
算法执行一个近似优化时速度更快,使用更少的内存大的数据行数。
请注意
为“barneshut”
算法,tsne
使用knnsearch
找到最近的邻居。
例子:“准确”
CacheSize
- - - - - -克以兆字节为单位矩阵的大小
1 e3
(默认)|积极的标量|“最大”
克以兆字节为单位矩阵的大小,作为一个积极的标量或指定“最大”
。的tsne
函数可以使用CacheSize
只有当距离
名称争论始于快
。
如果你设置CacheSize
来“最大”
,tsne
整个中间矩阵试图分配足够的内存的大小米
——- - - - - -米
,在那里米
是输入数据的行数X
。缓存大小不需要大到足以让整个中间矩阵,但必须至少足够容纳一个米
1的向量。否则,tsne
使用的标准算法计算欧氏距离。
如果该值距离
争论始于快
和的值CacheSize
太大或“最大”
,tsne
可能会超过可用内存的分配格拉姆矩阵。在这种情况下,MATLAB®一个错误的问题。
例子:CacheSize = "最大"
数据类型:双
|字符
|字符串
距离
- - - - - -距离度量
“欧几里得”
(默认)|“seuclidean”
|“fasteuclidean”
|“fastseuclidean”
|“cityblock”
|“chebychev”
|闵可夫斯基的
|“mahalanobis”
|的余弦
|“相关”
|“枪兵”
|“汉明”
|“jaccard”
|函数处理
距离度量,指定为以下之一:
“欧几里得”
——欧氏距离。“seuclidean”
——标准化的欧氏距离。每个坐标的行之间的区别X
和查询矩阵是通过除以相应的扩展元素的标准差计算S =性病(X, omitnan)
。“fasteuclidean”
——欧氏距离计算通过使用另一种算法,节省了时间预测的数量至少是10。在某些情况下,这种快速算法可以降低精度。算法开始“快”
不支持稀疏数据万博1manbetx。有关详细信息,请参见算法。“fastseuclidean”
——标准化的欧氏距离计算通过使用另一种算法,节省了时间预测的数量至少是10。在某些情况下,这种快速算法可以降低精度。算法开始“快”
不支持稀疏数据万博1manbetx。有关详细信息,请参见算法。“cityblock”
——城市街区的距离。“chebychev”
——Chebychev距离最大值坐标的差异。闵可夫斯基的
-闵可夫斯基距离指数2。这个距离是一样的欧氏距离。“mahalanobis”
——Mahalanobis距离,使用正定协方差矩阵计算X (X, omitrows)
。的余弦
- 1 -之间的夹角的余弦值观察(视为向量)。“相关”
- 1 -样本线性相关性的观察(作为序列的值)。“枪兵”
- 1 -样本之间的斯皮尔曼等级相关的观察(作为序列的值)。“汉明”
——汉明距离、坐标不同的百分比。“jaccard”
- 1 - Jaccard系数非零坐标的比例不同。自定义距离函数——一个距离函数指定使用
@
(例如,@distfun
)。有关详细信息,请参见更多关于。
在所有情况下,tsne
使用两两距离平方来计算高斯内核的联合分布X
。
例子:“mahalanobis”
数据类型:字符
|字符串
|function_handle
NumDimensions
- - - - - -输出的维度Y
2
(默认)|正整数
NumPCAComponents
- - - - - -PCA降维
0
(默认)|非负整数
PCA降维,指定为一个非负整数。之前tsne
嵌入在高维数据时,它首先会降低数据的维数NumPCAComponents
使用主成分分析
函数。当NumPCAComponents
是0
,tsne
不使用PCA。
例子:50
数据类型:单
|双
标准化
- - - - - -国旗规范化输入数据
假
(默认)|真正的
国旗规范化输入数据、指定为假
或真正的
。当价值真正的
,tsne
中心和鳞片的每一列X
先减去它的意思,然后除以它的标准差。
当特征X
在不同的尺度上,准备好了吗“标准化”
来真正的
。学习过程是基于最近的邻居,所以与大尺度特性与小尺度可以覆盖特性的贡献。
例子:真正的
数据类型:逻辑
克尔
- - - - - -最初的嵌入点
1 * randn的军医(N, NumDimensions)
(默认)|n
——- - - - - -NumDimensions
真正的矩阵
最初的嵌入点,指定为一个n
——- - - - - -NumDimensions
真正的矩阵,n
的行数X
。的tsne
优化算法使用这些点作为初始值。
数据类型:单
|双
LearnRate
- - - - - -学习速率的优化过程
500年
(默认)|积极的标量
学习速率的优化过程,指定为一个积极的标量。通常,设置值One hundred.
通过1000年
。
当LearnRate
太小了,tsne
可以收敛到局部最小值。当LearnRate
太大,优化可以最初Kullback-Leibler散度增加而不是减少。看到tsne设置。
例子:1000年
数据类型:单
|双
NumPrint
- - - - - -迭代显示频率
20.
(默认)|正整数
迭代显示频率,指定为一个正整数。当详细的
名称-值对不0
,tsne
返回迭代显示每次NumPrint
迭代。如果选项
名称-值对包含一个非空的“OutputFcn”
追求每一个条目,然后输出功能NumPrint
迭代。
例子:20.
数据类型:单
|双
选项
- - - - - -优化选项
包含字段的结构“麦克斯特”
,“OutputFcn”
,“TolFun”
θ
- - - - - -Barnes-Hut权衡参数
0.5
(默认)|标量从0到1
输出参数
Y
——嵌入式分
n
——- - - - - -NumDimensions
矩阵
嵌入点,作为一个返回n
——- - - - - -NumDimensions
矩阵。每一行代表一个嵌入点。n
行数据的数量吗X
不包含任何南
条目。看到图结果与南输入数据。
损失
——Kullback-Leibler散度
负的标量
Kullback-Leibler建模的输入和输出之间的分歧分布,作为一个非负标量返回。有关详细信息,请参见t-SNE算法。
更多关于
自定义距离函数
一个自定义距离函数的语法如下。
函数ZJ D2 = distfun(子)
tsne
通过子
和ZJ
你的函数,函数计算距离。
子
是1 -n向量包含单个行X
或Y
。ZJ
是一个米——- - - - - -n矩阵包含多个行X
或Y
。
你的函数返回D2
,这是一个米1的向量距离。的jth元素D2
是观察之间的距离子
和ZJ (j,:)
。
提示
如果你的数据没有稀疏,那么通常内置的距离函数的速度比一个处理函数。
算法
tsne
构造一组嵌入点在低维空间的相对相似模拟的原始高维点。嵌入点显示原始数据的聚类。
约,算法模型原始分,来自一个高斯分布,以及嵌入点来自学生的t分布。算法试图最小化Kullback-Leibler散度这两个发行版之间通过移动嵌入式点。
有关详细信息,请参见t-SNE。
快速欧几里得距离算法
的值距离
观点:开始快
(如“fasteuclidean”
和“fastseuclidean”
)计算欧几里得距离使用一个算法使用额外的内存来节省计算时间。这个算法被命名为“欧几里得距离矩阵技巧”Albanie[1]和其他地方。内部测试表明该算法节省时间当预测的数量至少是10。算法开始“快”
不支持稀疏数据万博1manbetx。
找到所有的点之间的距离矩阵Dx我和xj,每个x我有n变量,计算距离的算法中使用最后一行以下方程:
矩阵 在最后一行的方程叫做格拉姆矩阵。计算距离平方的速度更快,但略低于数值稳定,当你计算和使用格拉姆矩阵而不是计算的距离平方平方求和。讨论,看到Albanie[1]。
储存格拉姆矩阵、软件使用缓存的默认大小1 e3
兆字节。你可以设置缓存大小使用CacheSize
名称-值参数。如果该值的CacheSize
太大或“最大”
,tsne
可能会超过可用内存的分配格拉姆矩阵。在这种情况下,MATLAB一个错误的问题。
引用
[1]Albanie,撒母耳。欧氏距离矩阵技巧。2019年6月。可以在https://www.robots.ox.ac.uk/%7Ealbanie/notes/Euclidean_distance_trick.pdf。
版本历史
介绍了R2017aAbrir比如
这种版本modificada德埃斯特比如。害怕Desea abrir埃斯特比如con sus modificaciones吗?
第一de MATLAB
Ha事实clic en联合国围绕此时一个埃斯特第一de MATLAB:
Ejecute el第一introduciendolo en la ventana de第一de MATLAB。洛杉矶navegadores网络没有admiten第一de MATLAB。
你也可以从下面的列表中选择一个网站:
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。