tsne
t分布随机邻居嵌入
描述
例子
天眼Fisher虹膜数据
Fisher虹膜数据集有虹膜的四维测量数据,并有相应的物种分类。通过使用降低维数来可视化此数据tsne
.
负载fisheririsrng默认的%的再现性Y = tsne(量);gscatter (Y (: 1), Y(:, 2),物种)
比较距离度量
使用各种距离度量来尝试在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),物种)标题(“欧几里得”)
在这种情况下,余弦、切比切夫和欧氏距离度量给出了相当好的簇分离。但是马氏距离度量并不能给出很好的分离。
阴谋的结果南
输入数据
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))
比较t-SNE损失
找出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))标题(“二维嵌入”)
图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
找到最近的邻居。
例子:“准确”
距离
- - - - - -距离度量
“欧几里得”
(默认)|“seuclidean”
|“cityblock”
|“chebychev”
|闵可夫斯基的
|“mahalanobis”
|的余弦
|“相关”
|“枪兵”
|“汉明”
|“jaccard”
|函数处理
距离度量,由下列之一指定。有关距离度量的定义,请参见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”
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
不包含任何南
条目。看到用NaN输入数据绘制结果.
损失
——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.
版本历史
介绍了R2017a
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。
您也可以从以下列表中选择网站:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。