【发布时间】: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 正确推断出我的问题。希望这将为解决这个问题的一些实际方法展开讨论。它对我来说是新的领域,我想快速“或多或少正确,有改进解决方案的余地”,并避免我的解决方案中出现任何愚蠢的死胡同。