假设有 14 个对象,每个对象有或没有 1000 个二元特征。我有一个 14x14 的相似矩阵,但没有原始的 14x1000 数据。给定相似度矩阵,有没有办法重建或生成类似于原始数据的东西?
我尝试了蒙特卡洛模拟,但不受约束,它们会花费太多时间来实现与原始相似矩阵的低水平一致性。
我看到了这个相关的问题:相似度矩阵 -> 特征向量算法?. 然而,他们想要减少而不是增加维度。另外,我不确定(1)使用哪个或多个矩阵,以及(2)如何转换为二进制矩阵。
假设有 14 个对象,每个对象有或没有 1000 个二元特征。我有一个 14x14 的相似矩阵,但没有原始的 14x1000 数据。给定相似度矩阵,有没有办法重建或生成类似于原始数据的东西?
我尝试了蒙特卡洛模拟,但不受约束,它们会花费太多时间来实现与原始相似矩阵的低水平一致性。
我看到了这个相关的问题:相似度矩阵 -> 特征向量算法?. 然而,他们想要减少而不是增加维度。另外,我不确定(1)使用哪个或多个矩阵,以及(2)如何转换为二进制矩阵。
除非您描述如何计算相似度分数,否则无法确定。
通常,对于通常的相似度评分,这是不可能的:从单个特征到聚合统计信息的转换过程中丢失了信息。您希望做的最好的事情是得到一组与相似度分数一致的特征。
我认为当您说“类似于”原版时,这就是您所说的。这个问题很有趣。假设相似度被计算为两个特征向量的点积(即,一对对象的特征计数都具有值 = 1/true)。这不是唯一的选择:它与值 0(假)一致,表示没有信息。但它可以推广到其他相似性度量。
在这种情况下,问题实际上是一个线性规划问题:一种天真的方法是穷举搜索可能对象的空间 - 不是随机的,而是由约束引导。例如,假设 SIM(A,B) := 对象 A 和对象 B 的相似性。定义这些向量的顺序。
如果 SIM(A,B) = N,则选择 A=B 最小(如 (1,....,1 (N 次), 0, .... 0 (1000-N 次)),然后选择最小 C st (A,C), (B,C) 具有给定值。一旦发现不一致,回溯和增量。
这将找到一个一致的答案,尽管复杂性非常高(但可能比蒙特卡罗更好)。
寻找更好的算法是一个有趣的问题,但除此之外我不能在 SO 帖子中说 - 这可能是 CS 论文的主题!