【问题标题】:How do I generate data from a similarity matrix?如何从相似矩阵生成数据?
【发布时间】:2013-05-09 22:08:43
【问题描述】:

假设有 14 个对象,每个对象有或没有 1000 个二元特征。我有一个 14x14 的相似矩阵,但没有原始的 14x1000 数据。给定相似度矩阵,有没有办法重建或生成与原始数据相似的东西?

我尝试了蒙特卡洛模拟,但如果不受约束,它们会花费太多时间来达到与原始相似矩阵的低水平一致性。

我看到了这个相关问题:Similarity matrix -> feature vectors algorithm?。然而,他们想要减少而不是增加维度。另外,我不确定 (1) 使用哪个或哪些矩阵,以及 (2) 如何转换为二进制矩阵。

【问题讨论】:

    标签: similarity svd


    【解决方案1】:

    除非您描述如何计算相似度分数,否则无法确定。

    一般来说,对于通常的相似度评分,这是不可能的:从单个特征到汇总统计信息的转换过程中丢失了信息。您希望做的最好的事情就是得出一组与相似度分数一致的特征。

    当您说“类似于”原版时,我认为这就是您所说的。这个问题很有趣。假设相似性被计算为两个特征向量的点积(即,一对对象的特征计数都具有值 = 1/true)。这不是唯一的选择:它与值 0(假)一致,表示没有信息。但它可能会推广到其他相似性度量。

    在这种情况下,问题实际上是一个线性规划问题:一种天真的方法是穷举搜索可能对象的空间 - 不是随机的,而是由约束引导。例如,假设 SIM(A,B) := 对象 A 和对象 B 的相似性。定义这些向量的顺序。

    如果 SIM(A,B) = N,则选择 A=B 最小(如 (1,..,1 (N 次), 0, .... 0 (1000-N 次)),然后选择最小的 C s.t. (A,C), (B,C) 有给定的值。一旦发现不一致,回溯和增量。

    这会找到一个一致的答案,虽然复杂度很高(但可能比蒙特卡洛好)。

    找到更好的算法是一个有趣的问题,但除此之外我不能在 SO 帖子中说 - 这可能是 CS 论文的主题!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-21
      • 2017-08-08
      • 2021-01-15
      • 1970-01-01
      • 1970-01-01
      • 2021-09-27
      • 2019-09-26
      相关资源
      最近更新 更多