tsne
t分布随机邻居嵌入
描述
例子
可视化Fisher虹膜数据
Fisher虹膜数据集对虹膜进行了四维测量,并进行了相应的种类分类。通过使用降低维数来可视化此数据tsne
.
负载fisheririsrng默认的再现率%Y = tsne(meas);gscatter (Y (: 1), Y(:, 2),物种)
比较距离指标
使用各种距离度量来尝试在费雪虹膜数据中获得更好的物种之间的分离。
负载fisheririsrng (“默认”)再现率%Y = tsne(meas,“算法”,“准确”,“距离”,“mahalanobis”);次要情节(2,2,1)gscatter (Y (: 1), Y(:, 2),物种)标题(“Mahalanobis”)提高(“默认”)%作公平比较Y = tsne(meas,“算法”,“准确”,“距离”,的余弦);次要情节(2 2 2)gscatter (Y (: 1), Y(:, 2),物种)标题(的余弦)提高(“默认”)%作公平比较Y = tsne(meas,“算法”,“准确”,“距离”,“chebychev”);次要情节(2,2,3)gscatter (Y (: 1), Y(:, 2),物种)标题(“Chebychev”)提高(“默认”)%作公平比较Y = tsne(meas,“算法”,“准确”,“距离”,“欧几里得”);次要情节(2,2,4)gscatter (Y (: 1), Y(:, 2),物种)标题(“欧几里得”)
在这种情况下,余弦、切比雪夫和欧几里得距离度量给出了相当好的簇分离。但是马氏距离度量并没有给出很好的分离。
附图结果南
输入数据
tsne
删除包含任意的输入数据行南
条目。因此,在绘图之前必须从分类数据中删除任何此类行。
例如,将Fisher虹膜数据中的一些随机条目更改为南
.
负载fisheririsrng默认的再现率%meas(rand(size(meas)) < 0.05) = NaN;
将四维数据嵌入二维tsne
.
Y = tsne(meas,“算法”,“准确”);
警告:在X或'InitialY'值中缺少NaN值的行将被删除。
确定从嵌入中消除了多少行。
长度(物种)长度(Y)
Ans = 22
的行,准备绘制结果量
没有南
值。
Goodrows = not(any(isnan(meas),2));
的行绘制结果物种
对应于量
没有南
值。
gscatter (Y (: 1), Y(:, 2),物种(goodrows))
比较t-SNE损失
找到Fisher虹膜数据的2-D和3-D嵌入,并比较每个嵌入的损失。三维嵌入的损失可能更低,因为这种嵌入有更大的自由度来匹配原始数据。
负载fisheririsrng默认的再现率%[Y,损失]= tsne(meas,“算法”,“准确”);rng默认的%作公平比较[Y2,loss2] = tsne(meas;“算法”,“准确”,“NumDimensions”3);流('二维嵌入有损耗%g,三维嵌入有损耗%g。\n'、损失、loss2)
二维嵌入损耗为0.124191,三维嵌入损耗为0.0990884。
正如预期的那样,三维嵌入具有更低的损耗。
查看嵌入。使用RGB颜色[10 0 0]
,[0 10 0]
,[0 0 1]
.
方法将物种转换为数值分类
命令,然后将数值转换为RGB颜色稀疏的
函数如下。如果v
是一个正整数向量1、2或3,对应的物种数据,那么命令
稀疏(1:元素个数(v), v, 1(大小(v)))
为稀疏矩阵,其行为物种的RGB颜色。
gscatter (Y (: 1), Y(:, 2),物种,眼(3))标题(“二维嵌入”)
图v = double(分类(种));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,'Algorithm','Exact','NumPCAComponents',50)
算法
- - - - - -tsne
算法
“barneshut”
(默认)|“准确”
tsne
算法,指定为“barneshut”
或“准确”
.的“准确”
算法优化原始空间与嵌入空间分布的Kullback-Leibler散度。的“barneshut”
算法在数据行数较大时执行近似优化,速度更快,占用内存更少。
请注意
为“barneshut”
算法,tsne
使用knnsearch
找到最近的邻居。
例子:“准确”
距离
- - - - - -距离度量
“欧几里得”
(默认)|“seuclidean”
|“cityblock”
|“chebychev”
|闵可夫斯基的
|“mahalanobis”
|的余弦
|“相关”
|“枪兵”
|“汉明”
|“jaccard”
|函数处理
距离度量,由下列之一指定。有关距离度量的定义,请参见pdist
.
“欧几里得”
-欧氏距离。“seuclidean”
-标准化欧几里得距离。每一行之间的坐标差X
查询矩阵通过除以计算的标准偏差的相应元素来缩放S = std(X,'omitnan')
.“cityblock”
-城市街区距离。“chebychev”
-切比雪夫距离,即最大坐标差。闵可夫斯基的
-指数2的闵可夫斯基距离。这和欧氏距离是一样的。“mahalanobis”
-马氏距离,使用正定协方差矩阵计算X (X, omitrows)
.的余弦
- 1减去观测值之间夹角的余弦(作为向量处理)。“相关”
- 1减去观测值之间的样本线性相关性(作为值序列处理)。“枪兵”
- 1减去观测值之间的样本斯皮尔曼秩相关(被视为值序列)。“汉明”
-汉明距离,即不同坐标的百分比。“jaccard”
- 1减去杰卡德系数,这是不同的非零坐标的百分比。自定义距离函数-使用指定的距离函数
@
(例如,@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算法.
更多关于
自定义距离函数
自定义距离函数的语法如下:
函数D2 = distfun(ZI,ZJ)
tsne
通过子
而且ZJ
到函数,函数计算距离。
子
是1 × -吗n的单行向量X
或Y
.ZJ
是一个米——- - - - - -n矩阵包含多行X
或Y
.
函数返回D2
,这是一个米-by-1的距离向量。的j的第Th元素D2
观测值之间的距离是多少子
而且ZJ (j,:)
.
提示
如果你的数据不是稀疏的,那么通常内置的距离函数比函数句柄快。
算法
tsne
在低维空间中构造一组嵌入点,这些点的相对相似性模拟原始高维点的相对相似性。嵌入点表示原始数据中的聚类。
粗略地说,该算法将原始点建模为来自高斯分布,而嵌入点建模为来自学生分布t分布。该算法试图通过移动嵌入点来最小化这两个分布之间的Kullback-Leibler散度。
详细信息请参见t-SNE.
版本历史
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。金宝app
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。