【问题标题】:How to implement this recommendation algorithm?如何实现这个推荐算法?
【发布时间】:2011-07-28 16:55:15
【问题描述】:

我读过的大多数推荐算法文章都侧重于用户对商品进行评分的 Netflix 模型。我想做的略有不同(我认为)。

假设我想创建一个网站,向用户展示两张汽车图片。然后,用户可以选择他们更喜欢哪辆车。用户可以根据自己的喜好多次重复此过程,但希望随着它们的继续,图片会越来越接近用户的喜好。

你会如何实现这个算法?似乎一种可能的方法是简单地实现 ELO 排名算法并将这些结果的顺序用作“评级”,但这具有严重的缺陷,即多个项目无法获得最高评级(用户可能如果能够自行评价项目,则已完成)。

另一种对我来说似乎更有希望的方法是预先确定每辆车的一般属性(例如颜色、车身类型、2 门与 4 门等)并使用这些来大致了解这些属性每个用户都喜欢并以此为基础推荐。

【问题讨论】:

  • 听起来像是“热与否”算法。这是关于选择 a 或 b 实现的另一篇文章。 stackoverflow.com/questions/164831/…
  • 作为观察结果,Netflix 比赛中的许多参赛作品都使用了奇异值分解(ala Simon Funk 令人敬畏的梯度下降近似)。无论如何,一个关键假设是用户对电影的评分 - 而不仅仅是比较评分,所以不幸的是,您的情况可能会略有不同......

标签: algorithm recommendation-engine


【解决方案1】:

我会尝试一下。

假设每辆车都有一组属性。如果将这组属性编码为向量,则一种可能的推荐方法是使用自组织映射 (SOM)。 SOM 的基本要点是输入向量的分类器。如果您使用代表不同输入类别的输入向量训练 SOM,则 SOM 将开始对其存储向量进行聚类,使其更像每个输入类别。请注意,不保留原始输入向量。为了用输入向量训练 SOM,选择当前在 SOM 中的最佳向量,然后该向量周围的区域变得更像输入。当然,请参阅维基百科http://en.wikipedia.org/wiki/Self-organizing_map

那么这如何适用于这种情况?好吧,一个 SOM 可以用来训练人们喜欢的图像,一个 SOM 可以用来训练他们喜欢的图像。即使没有他们喜欢的单一风格,集群也应该围绕他们喜欢/不喜欢的汽车形成。然后看看他们是否喜欢一辆没有被他们挑选的汽车,就是从他们的好恶中找出它与群体的匹配程度。请注意,在这种情况下,最好匹配彼此不同或不太可能都被喜欢的汽车。

当人们第一次加入网站时,让他们立即挑选一些喜欢和不喜欢的人来播种 SOM 可能是有利的。

祝你好运!

【讨论】:

    【解决方案2】:

    也许现在回答有点晚了,但您可能想查看this。这是关于麻省理工学院的一位教授,他认为 5 星评级、喜欢评级等不起作用,他提出了一种算法,可以按照您的建议(汽车 A 或汽车 B)成对输入。 该算法相当复杂,但可以在链接上找到。

    【讨论】:

      猜你喜欢
      • 2018-03-09
      • 1970-01-01
      • 1970-01-01
      • 2012-08-06
      • 1970-01-01
      • 2017-08-19
      • 1970-01-01
      • 2017-12-23
      • 1970-01-01
      相关资源
      最近更新 更多