2011-04-03 157 views
2

我读过的大多数推荐算法文章都集中在用户对项目进行评分的Netflix模型。我想要做的是略有不同(我认为)。如何实现这个推荐算法?

比方说,我想创建一个网站,向用户展示两张汽车图片。用户然后可以选择他们更喜欢哪辆车。用户可以按照他/她喜欢的次数重复这个过程,但是希望当他们继续时,照片对于用户喜欢的内容变得越来越精致。

你会如何实现这个算法?看起来像一种可能的方法是实施一个ELO排名算法,并将这些结果的顺序用作“评级”,但是这具有严重的缺陷,即多个项目不能得到最大评级(用户可能已经完成了,如果有能力评价项目本身)。

另一种看起来更有希望的方法是预先确定每辆车的一般属性(例如颜色,车身类型,2门和4门等),并使用这些方法来获得每个用户都喜欢的属性并基于此建议。

+0

听起来像一个“热或不”的算法。这里是pick a或b实现的另一篇文章。 http://stackoverflow.com/questions/164831/how-to-rank-a-million-images-with-a-crowdsourced-sort – 2011-04-03 16:48:20

+0

作为一种观察,Netflix竞赛中的许多条目使用奇异值分解(alaval Value Decomposition,ala)西蒙·芬克的真棒梯度下降近似)。无论如何,一个关键的假设是用户对电影的评价 - 而不仅仅是比较评级,所以你的情况可能不会略有不同。 – 2011-04-04 02:35:35

回答

1

我会采取刺。

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

那么这如何适用于这种情况呢?那么,可以使用一个SOM训练该人喜欢的图像,并且可以训练他们喜欢的图像。即使没有他们喜欢的单一风格,集群也应该围绕他们喜欢/不喜欢的汽车形成。然后看看他们是否喜欢一辆没有被他们挑选过的汽车,是从它们的喜好和不喜欢中发现它与团体的匹配程度。请注意,在这种情况下,最好匹配彼此不相似或更不可能被喜欢的汽车。

当人第一次加入该网站时,允许他们从蝙蝠身上挑选一些喜欢和不喜欢的东西来播种SOM。

祝你好运!

0

Maby答案有点太迟,但你可能想检查this。这是关于一位麻省理工学院教授认为5星评级,如评级等不起作用,他提出了一种算法,可以按照您的建议(车辆A或车辆B)以成对方式输入。该算法相当复杂,但可以在链接中找到。