【问题标题】:Similarity matrix -> feature vectors algorithm?相似矩阵->特征向量算法?
【发布时间】:2011-12-05 20:38:13
【问题描述】:

如果我们有一组M个词,并且预先知道每对词的含义的相似度(有一个M x M的相似度矩阵),我们可以使用哪种算法来制作一个k维位向量对于每个单词,这样每对单词就可以通过比较它们的向量来进行比较(例如得到向量的绝对差)?

我不知道这个特殊的问题是如何被调用的。如果我知道的话,在一堆具有相似描述的算法中找到会更容易,这些算法会做其他事情。


补充观察:

我认为这个算法必须产生一个副作用,在这种情况下是需要的。如果从矩阵中,单词 A 与单词 B 相似,B 与 C 相似,但检测到的 [A, C] 相似度较低,则计算出的结果向量差异也应该产生较高的 [A, C] 相似度。因此,我们将填补矩阵中先前的空白 - 以某种方式平滑与该算法的相似性。但除了这种平滑之外,目标是使结果尽可能接近矩阵中的原始数字。

【问题讨论】:

  • 你是说你有一个函数 f(a,b) 可以返回单词 a 和 b 的相似度,但是你想以不同的方式计算相同的 f(a,b)?
  • 是的,当然,因为记忆,我不想有一个巨大的 (M x M) 相似矩阵,因为我只能有 M(n 维)向量来表示相同(或近似)的信息。
  • 这听起来像是一个特征分解问题。
  • 其实你可能想看看主成分分析或者因子分析。

标签: algorithm vector machine-learning data-mining similarity


【解决方案1】:

如果您只对第一个特征向量 + 特征值感兴趣,那么幂迭代可能会很有用。我曾经用它从文本文档中提取关键字。 (基于句子内的词间距离,但相似性也可能起作用)

【讨论】:

    【解决方案2】:

    您可以执行截断的singular value decomposition (SVD) 来找到矩阵的最佳 k 秩近似值。这个想法是将矩阵分解为三个矩阵:U、sigma 和 V,使得 U 和 V 是正交的,sigma 是对角线。

    通过截断不重要的奇异值,可以实现O(k*m)的存储空间。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-04-27
      • 2014-11-16
      • 2018-10-12
      • 2011-09-29
      • 2012-08-08
      • 2014-10-30
      • 1970-01-01
      相关资源
      最近更新 更多