【问题标题】:Multi Attribute Matching of Profiles配置文件的多属性匹配
【发布时间】:2012-05-07 10:29:56
【问题描述】:

我正在尝试解决约会网站的问题。问题来了

应用的每个用户都会有一些属性——比如他读的书、他看的电影、音乐、电视节目等。这些是定义的顶级属性类别。这些类别中的每一个都可以有任意数量的值。例如在书中:喷泉头,爱情故事......

现在,我需要根据个人资料属性匹配用户。这是我打算做的事情:

使用反向索引存储数据。如果。 Fountain Head、Love Story 等中的每一个都是具有该属性的一组用户的索引键。

当有新用户加入时,获取该用户的属性,查找该用户有哪些索引键,获取这些键的所有用户,桶(或基数排序或类似排序)按多少次排序此合并列表中的用户。

这是好事、坏事还是更糟?还有其他建议吗?

谢谢 阿杰

【问题讨论】:

  • 我不明白为什么这个问题应该被否决。

标签: algorithm matching n-dimensional


【解决方案1】:

你描述的算法还不错,虽然它使用了一个非常简单的人与人之间相似性的概念。

让我们使其更易于调整,而无需创建复杂的匹配标准。假设喜欢同一本书的人比听相同音乐的人更相似。每一种兴趣都是如此。即不同领域的相似度具有不同的权重。

就像您说的那样,您可以为个人资料中拥有这些兴趣的人(如一本书、一首歌等)保留一份列表。然后,假设您要查找家伙 g 的匹配项:

for each interest i in g's interests:
  for each person p in list of i
    if p and g have mismatching sexual preferences
      continue
    if p is already in g's match list
      g->match_list[p].score += i->match_weight
    else
      add p to g->match_list with score i->match_weight

sort g->match_list based on score

不过,权重的选择并不是一项简单的任务。你需要很多心理学才能做到这一点。但是,使用您的常识,您可能会得到相距不远的值。

一般来说,匹配人比对一些分数求和要复杂得多。例如,一组匹配的兴趣可能比它们单独的总和具有更多(或在某些情况下更少)的影响。此外,对一个人的兴趣可能完全导致另一个人的拒绝,无论是否存在其他匹配的兴趣(以两个非常相似的人为例,他们一个喜欢暮光,另一个讨厌暮光之城)

【讨论】:

  • 谢谢沙巴兹。这有帮助。你能推荐任何其他复杂的算法来根据各种属性匹配人吗?
  • @AjayBansal,就像我说的,这属于心理学领域。例如,查看this site 以了解您可以使它变得多么复杂。在我看来,与人类的行为方式相比,这些算法仍然非常基础。您还可以在科学论文中找到一些东西。
  • @Shahbaz,可以在 SQL 查询中使用吗?
  • @marthajames,我不是 RDB 专家,但我确实认为它可以。
猜你喜欢
  • 2020-06-05
  • 1970-01-01
  • 1970-01-01
  • 2010-09-14
  • 1970-01-01
  • 2021-04-18
  • 1970-01-01
  • 2017-05-27
  • 1970-01-01
相关资源
最近更新 更多