【问题标题】:Scatter 2D coordinates from distance matrix从距离矩阵中分散二维坐标
【发布时间】:2015-06-09 19:26:04
【问题描述】:

我正在寻找一种解决方案,该解决方案可以从其中一些点之间的估计距离矩阵中输出一组 2D 点。 问题是,这些点之间的距离不是精确的(近似值),并且没有所有对组合的值。

我正在寻找任何类型的解决方案,以创建最多尊重所提供距离的近似坐标。

【问题讨论】:

标签: matlab matrix coordinates cluster-computing distance


【解决方案1】:

您可以使用t-SNE,这是一种算法,可以根据元素的距离将潜在的高维数据嵌入到低维数据中。

您必须决定如何处理缺失的距离,是否将它们设置为高值、平均距离或其他值。

由于 t-SNE 将仅保留本地邻域,因此远距离集群的关系可能不太准确,但您必须看看这是否对您的应用程序不利。


更新:t-SNE 示例

如果您从链接的网站下载 vanilla MATLAB 实现并将该文件夹放在路径上,则应运行以下独立示例。

%% Generate some random data
mu = [1 2];
Sigma = [1 0; 0 1];
R = chol(Sigma);
z1 = repmat(mu,100,1) + randn(100,2)*R;
mu = [5 1.5];
z2 = repmat(mu,100,1) + randn(100,2)*R;
mu = [3.5 6.5];
z3 = repmat(mu,100,1) + randn(100,2)*R;

%% Plot random data
figure(1);
clf
subplot(3, 1, 1)
scatter(z1(:,1), z1(:,2))
hold on
scatter(z2(:,1), z2(:,2))
scatter(z3(:,1), z3(:,2))
title('Original data')

%% Generate pw distance matrix and plot it
all_z = [z1; z2; z3];
% generate pw distance matrix
pwd = squareform(pdist(all_z));

subplot(3, 1, 2)
imagesc(pwd)
title('Distance matrix')

%% Perform tSNE
no_dims = 2;
perplexity = 150;
yd = tsne_d(pwd, [], no_dims, perplexity);
%% Plot results
subplot(3, 1, 3)
scatter(yd(1:100, 1), yd(1:100, 2))
hold on
scatter(yd((1:100) + 100, 1), yd((1:100) + 100, 2))
scatter(yd((1:100) + 200, 1), yd((1:100) + 200, 2))
title('tSNE embedding')

在清理完距离矩阵(即为缺失的矩阵分配一些值)后,您将从 %% Perform tSNE 开始。 perplexity 是一个参数,应该与您期望在集群中的点数大致匹配。在我的示例中,我选择了 150,因为我还想考虑距离更远的相邻点。原始论文很好地描述了算法的作用。

【讨论】:

  • 谢谢。你介意解释一下如何使用它吗?这对我来说有点难,因为我没有数学背景,也从未使用过那个库。将不胜感激。
  • 非常感谢。如果您不介意的话,我还有几个问题: 1. 'pwd' 应该是对角线为零的距离矩阵吗? 2. 'yd' 是否应该是一个矩阵,其中包含提供距离矩阵的最终点的 x-y 坐标? 3、比如我只有3个点和一个距离3*3的距离矩阵,perplexity应该是3?
  • 1.是 2. 是 3. 这取决于您的数据。我假设您的观点具有某种结构,即您正在查看不同的组,或者存在连续变量。如果您有两组 20 分,那么 perplexity = 25 可能是一个不错的选择。您可以使用该参数。此外,由于该算法使用随机起点进行底层优化,因此每次都会得到不同的结果,您可以选择最好的。
  • 我没有不同的组,我只有 140 个点,它们之间的距离是成对的。最后,我只想拥有尊重先前在距离矩阵上设置的距离的点。我使用 3*3、4*4 和 5*5 距离矩阵(分别具有 3、4 和 5 个点)对其进行了测试,并且我总是得到一个最终矩阵,其中所有点之间的欧几里得距离相等,即,就像我得到一个对称的结果集。
  • 试试默认的(我觉得是40)。您可以通过计算输出 yd 的 pw 距离与初始距离矩阵来比较性能。
猜你喜欢
  • 2013-06-20
  • 1970-01-01
  • 1970-01-01
  • 2012-06-13
  • 2017-02-20
  • 2011-03-18
  • 1970-01-01
  • 1970-01-01
  • 2017-09-10
相关资源
最近更新 更多