没有负偏好值的Mahout建议书

时间:2013-06-25 08:48:47

标签: mahout recommendation-engine mahout-recommender

我对Mahout中偏好值的含义有疑问。从Mahout in Action一书中可以看出:

  

首选值可以是任何值,只要值越大意味着   更积极的偏好。例如,这些值可能是   评级为1到5,其中1表示用户不能的项目   站着,5表示收藏夹。

这是否意味着推荐人总是会将较小的值解释为否定偏好(不喜欢)?

我正在尝试创建一个没有负面偏好的推荐器。我的意思是我根本没有偏好,但我可以根据不同的加权指标(点击次数/编辑次数,编辑量,编辑方式等等)推导出它们。但是,在我的实现中,当用户编辑了某个页面时,这并不意味着用户不喜欢该页面,而是喜欢它的某种程度(并且如我上面所描述的那样,喜欢的程度也是如此)。

我曾尝试仅使用布尔首选项(Log-likelehood和Tanimoto相似性),但它们表现不佳,并且在大多数情况下,它们无法产生推荐(在摩尔然后是50%)。

我想利用数字来获得偏好,因此建议会更好,但我不确定如何。 我已经尝试过从5到10推导出如上所述的偏好值,然后每个用户对于一个人工项目的偏好值为1(意思是不喜欢它)。但是我认为这不是一个好方法,因为这意味着每个用户都不喜欢同一个项目。

有人更清楚如何应用一些仅具有“正面”(喜欢)偏好值的基于用户和基于项目的算法?

2 个答案:

答案 0 :(得分:2)

如果你的意思是,你能否仅根据积极的行动得到合理的结果,那么当然是的。这是常见的情况。如何解释偏好值在很大程度上取决于您使用的算法,但对于任何算法,我都没有看到使用所有正值对所有正向动作进行编码的任何问题。这是一个简单的案例。 “1”本身并不是负面评级,不是。

您对相似性指标的观点与价值无关。听起来你的数据很稀疏。这是一个单独的问题。

其余的我不确定我理解。您使用的值取决于您的域。我会让它们与“力量”或价值成比例。例如,如果视频观看次数比视频共享频率高20倍,则可能会将视频共享的值视为比点击次数高20倍的操作。这是一个不错的起点。

答案 1 :(得分:1)

你应该尝试:

  • 隐式偏好ParallelALSFactorizationJob(基于hadoop)
  • 或者隐含的首选项ALSWRFactorizerSVDRecommender(不基于hadoop)(我认为这个非hadoop隐式首选变体仅在mahout-0.8中可用),

在这些中,您为项目的用户偏好分配的数字表示该关联有多强,而不是评级,因此它们都是正面关联,只是具有不同的优势。通过这种方式,您可以对不同的交互进行建模,例如查看,编辑,点击等。虽然分配给每个交互的强度会因您的特定业务而异。

此演示文稿(link)应该让您大致了解正在发生的事情。此外,本文(link)描述了因子的隐式反馈变体(它们是相同的,一个只是用hadoop来扩展)