引言
在推荐系统中,一个核心的问题就是对用户的偏好建模。所谓的用户偏好就是指用户对物品(可能是音乐,电影,商品等)的喜好程度。如何根据已有的用户行为和信息,准确地对用户偏好进行预测是一个很重要的问题。
用户偏好模型
如图所示,我们可以利用用户的行为信息对其偏好进行建模。可以把这些信息分为显式(explicit)行为和隐式(implict)行为。显式行为包括:评分,评论,投票等;隐式行为包括:点击,购买,关注(Follow)等。本文主要对显式行为中的评分进行讨论,总结并得出评分行为的常见应用和问题。
星级评分
星级评分是最常见的评分应用。在应用时,可以做一些决策让评分系统有些变化,比如评分总共分为几星,常见的有5,7,10星;或者是否允许半星评分;亦或是评分是是否需要给出额外的信息,比如为什么给出这样的评分。下图分别是goodReads和Amazon的评分系统示例。
goodReads
获得用户偏好的方法
点赞
点赞一般有几种形式,比如投票顶或者踩(Vote up/down),或者只能点赞不能踩。一般来说,点赞机制一般用于一些时效性很强的物品中,比如:
- 新闻(Reddit,Digg)
- 问答社区(*)
- YouTube
点赞机制的好处在于花费少,用户愿意进行评分。
其他方法
- 连续值的评分(比如1~100分)
- 配对评分(询问用户相对于物品A是否更喜欢物品B)
- 混合机制(比如1~100分 加上 再也不想看到这个推荐的选项)
- 短暂偏好(比如 Pandora中可以选择30天不想听这首歌,之后这首歌就会排在三十天后的队列中)
什么时候获取用户偏好
以评分为例,我们应当要求用户给我们的物品进行评分呢?这里一般有这几种情况:
用户使用完物品后一段时间要求评分。此时的评分会受到用户记忆的影响。
- 没有使用过物品的评分。这种评分一般出现在一些比较贵重,很少人能够拥有大量该物品的情况下。比如说房和车,用户大多是根据物品的描述进行评论。
评分的难点
- 评分是否可信且准确?评分和用户当时
- 用户的偏好是否会变化?比如,用户的偏好会随着时间变化,但是我们的推荐系统却没有更新。
- 评分究竟意味着什么?
用户的隐式行为
用户的隐式行为是指不是通过评分或点赞等直接的方式的用户偏好行为,数据来源于用户与系统交互的行为。与显式行为不同,隐式行为是具有某种目的而不是直接表达某种偏好的行为,比如购买行为,浏览点击等行为。
事实上,用户的隐式行为透露了很多信息,有时甚至比显式行为更具有说服力。比如,购买了某件商品显然比根据描述对某件商品给了好评更具有说服力。
阅读时间
用户在页面停留的时间或是阅读某个物品信息的时间一定程度上可以表示用户对该物品的喜爱程度。比如,一个智能音乐播放器就会记录用户听每首歌的时长,如果你把一首歌完整听完了,那么可以认为你喜欢这首歌,如果你跳过了这首歌,则代表你不喜欢。之后的播放列表则根据用户对每首歌的喜爱程度排序。
隐式行为的局限和难点
- 隐式行为的真实含义?
不点击行为不能代表用户就不喜欢该物品,有可能是用户每看到该链接,或是链接的描述让用户产生了反感。 - 如何量化行为对推荐系统的影响?
比如,对于点击行为,一般我们可以用点击次数或是点击与否(点击则1,否则0)表示用户的点击行为。量化行为的影响的难点在于如何将不同的行为量化并输入到推荐系统模型中。
小结
- 推荐系统挖掘用户所说(评分或点赞等)和所做的事情(购买,浏览等),来了解用户的偏好。
- 评分提供了用户偏好的显式表达
- 隐式行为在大量数据的情况下效果很好