首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >维数约简中的距离保持

维数约简中的距离保持
EN

Data Science用户
提问于 2019-04-21 02:23:37
回答 2查看 1.2K关注 0票数 2

我希望比较几种技术在降维过程中保持的距离。我读过一些关于这里这里这里类似主题的论文。

例如,我想用欧氏距离来测量PCA降维过程中保持的距离。然而,我的困惑之处是XY

d(X, Y) = \sqrt{\sum^n_{i=1}\left(x_i - y_i\right)^2}

我知道如何计算给定两个向量/矩阵的d\left(X, Y\right),但我不理解PCA的上下文。让我解释一下。

W_{d \times k}k前导特征向量的矩阵,X_{d\times n}为原始数据,Z_{k\times n}X到约简子空间的投影。

Z = W^{T}X

回到计算d\left(X, Y\right)。我猜想,主成分分析的X对应于XY对应于Z。但是,既然XY有不同的维度,这是如何工作的呢?我必须对这里的事情置若罔闻。

此外,我也不担心欧氏距离度量不是衡量PCA距离保持的好选择(除非它们是不相容的)。这只是探索而已。

编辑:例如,如果我有

X_{d\times n} = \begin{bmatrix} x_{11} & \dots & x_{1n} \\ x_{21} & \dots & x_{2n} \\ x_{31} & \dots & x_{3n} \\ \end{bmatrix}

假设我选择保留k = 2主组件,然后将它们投影到

Z_{k \times n} = \begin{bmatrix} z_{11} & \dots & z_{1n} \\ z_{21} & \dots & z_{2n} \\ \end{bmatrix}
EN

回答 2

Data Science用户

回答已采纳

发布于 2019-04-23 08:38:24

混乱

混淆点可能是使用变量n来表示欧几里得距离的维数,后来又用它来表示点数。欧几里得距离最好写成

d_X(\boldsymbol{x}_1, \boldsymbol{x}_2)=\sqrt{\sum_{i=1}^{\color{red}{d}}(x_1^i - x_2^i)^2}

在原来的空间里,

d_Z(\boldsymbol{z}_1, \boldsymbol{z}_2)=\sqrt{\sum_{i=1}^{\color{red}{k}}(z_1^i - z_2^i)^2}

在缩小的空间里。其中\boldsymbol{z}_a=(z_a^1,\cdots,z_a^k)是点\boldsymbol{x}_a=(x_a^1,\cdots,x_a^d)W变换。编辑:在您的表示法中,Z[:, a]X[:, a]的转换。

距离保持测度

定义了一种变换W的距离保持测度,将原空间中两点的距离与约化空间中相同两点的距离进行比较。

因此,可以将比较所有\binom{n}{2}成对距离的度量定义为:

DP(W) = \frac{2}{n(n-1)}\sum_{a=1}^{n} \sum_{b=a+1}^{n} |d_X(\boldsymbol{x}_a, \boldsymbol{x}_b) - d_Z(\boldsymbol{z}_a, \boldsymbol{z}_b)|

对于常数k,较小的DP(W)意味着W更好地保存距离。

请注意,在此基础上可以定义各种距离保护措施。例如,

  1. 将比较限制为原始空间中某个点的K最近邻,从而导致nK比较而不是\binom{n}{2},或
  2. 使用距离的Pearson相关性,而不是它们的差异,因为我们通常希望原始空间中的近(远)点也在缩小的空间中接近(远),或者
  3. 测量距离点的切线空间而不是点本身等。
票数 1
EN

Data Science用户

发布于 2020-03-23 09:21:47

我认为有一种比较远距离保留的更简单的方法:

1)如果您的原始数据很大,让我们假设从那里随机的N=10,000点。

2)对所有降维算法进行拟合,并对新采样的数据进行变换。

3)获取原始采样数据中各点之间的欧氏距离,然后在步骤2中获得其他新生成的转换数据格式。例如:

代码语言:javascript
运行
复制
dist_orig = np.square(euclidean_distances(X_sampled, X_sampled)).flatten()
dist_pca = np.square(euclidean_distances(pca, pca)).flatten()
dist_tsne = np.square(euclidean_distances(tsne, tsne)).flatten()
dist_umap = np.square(euclidean_distances(umap, umap)).flatten()

4)运行spearman或其他相关度量,将原始采样欧氏空间与每一个约简空间进行比较。例如:

代码语言:javascript
运行
复制
coef_pca, p_pca = spearmanr(dist_orig, dist_pca)
coef_tsne, p_tsne = spearmanr(dist_orig, dist_tsne)
coef_umap, p_umap = spearmanr(dist_orig, dist_umap)

5)看哪种方法具有最高的相关系数,从而保持了原始空间中各点之间的最佳距离。

票数 1
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/49661

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档