【问题标题】:Efficient Algorithm for finding closest match in a graph在图中找到最接近匹配的高效算法
【发布时间】:2014-06-24 02:56:50
【问题描述】:

编辑:包括对我的问题的具体解释(由 Billiska 正确推断): “集合A是用户集合。集合B是产品集合。每个用户对一个或多个产品进行评分。评分是1到10。你想为每个用户推断,谁是最相似的另一个用户给他尝尝。”

“另一半是选择你想如何对 A 元素的相似度进行排序。” - 这也是我的问题的一部分。我觉得在大多数产品中评分相似的用户具有封闭的亲和力,但同时我想避免在 user1 和 user3 之前匹配很多平庸匹配的 user1 和 user2,而 user1 和 user3 只有几个非常好的匹配(也许我需要一个非线性分数)。

免责声明:我从未使用过图形数据库。

I 两组数据 A 和 B。A 与零到多个 B 有关系。每个关系都有一个固定值。

例如

A1--5-->B10

A1--1-->B1000

所以我最初的想法是“是的,那是一张图,是时候学习一下图数据库了!”但在我太得意忘形之前......这样做的唯一原因是我可以回答这个问题......

对于每个 A,根据它们的权重找到最相似的 As 集合,我想在其中考虑

  • 权重差异(假设为 1 到 10)使得 10 和 10 的得分高于 10 和 1;但后来我遇到了如何处理 where is no pairing 的问题(或者我是否 - 我只是不确定)
  • 两个集合共有的顶点数(忽略权重)。意图是将具有大量顶点的两个 As 排列到相同的 B 上,而不是仅具有单个匹配顶点的两个 As。

最好的方法是什么?

(补充——我意识到这可能算第二个问题):如果 A 的集合有数百万,B 的集合有 10 万并且我需要实时答案,那么这种方法将如何改变?

【问题讨论】:

  • 恐怕我无法遵循这些规范。边缘是否加权,如果是,如何确定它们的权重?图是有向图还是无向图?顶点是否加权,如果是,如何确定权重?这可能与weighted bipartite mathings 有关吗?
  • 类似是什么意思?也许您可以定义 A 的两个元素之间的距离(权重差的平方和?)?
  • 现在最重要的可能是把问题指定得更准确更清楚。 (1)据我了解,“B10”和“B1000”只是B中2个元素的名称(ID)。对吗? (2) 正如用户 189 所说,以数学方式指定 2 个 A 元素之间的距离。
  • 老实说,我可以猜到您的应用程序:集合 A 是用户集合。集合 B 是产品的集合。每个用户评价一个或多个产品。评分是 1 到 10。你想为每个用户推断,谁是另一个与他口味最相似的用户。那正确吗?如果是这样,我可以帮助澄清一半的问题。另一半是选择您希望如何对 A 元素的相似性进行排名。
  • Billiska 正确推断出我的问题。希望这将为解决这个问题的一些实际方法展开讨论。它对我来说是新的领域,我想快速“或多或少正确,有改进解决方案的余地”,并避免我的解决方案中出现任何愚蠢的死胡同。

标签: algorithm graph-databases


【解决方案1】:

不是一个完整的答案。我也不完全了解这项技术。但我知道这很重要。

如果您将数据视为矩阵。例如让行对应于集合 A,让列对应于集合 B,并且条目是权重。 那么它是一个有一些缺失值的矩阵。

recommender system(在协同过滤类别下)使用的一种技术是低秩近似

这是基于上述用户-产品评分矩阵通常具有低秩的假设。 粗略地说,如果多个用户的行可以表示为其他用户行的线性组合,则该矩阵具有低秩。

我希望这将为进一步阅读提供一个开始。

是的,您可以在low-rank approximation wiki page 中看到该技术可用于猜测缺失条目(缺失评分)。我知道这是一个不同的问题,但相关。

【讨论】:

  • 对相关答案和解决问题的努力表示支持,我不明白。
  • @user2195559 如果这个答案是你要找的,你应该打勾;我认为这不需要任何声誉。
  • @G.Bach - 我不确定这个问题是否已经得到解答,我正在尝试了解它是否是(这对我来说是全新的,所以我需要一点时间来理解答案如果适用)。
猜你喜欢
  • 1970-01-01
  • 2011-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多