首页 > 代码库 > 隐性反馈行为数据的协同过滤推荐算法

隐性反馈行为数据的协同过滤推荐算法

隐性反馈行为数据的协同过滤推荐算法
《Collaborative Filtering for Implicit Feedback Datasets》论文笔记

本文是我阅读《CollaborativeFiltering for Implicit Feedback Datasets》论文的笔记,介绍的是对于隐性反馈行为数据协同过滤算法,採取的是隐语义模型(LFM),求解方式是ALS。


显性反馈行为包含用户明白表示对物品喜好的行为

隐性反馈行为指的是那些不能明白反应用户喜好

的行为。最具代表性的隐性反馈行为就是页面浏览行为。

技术分享

考虑隐性反馈的必要性:

非常多应用场景,并没有显性反馈的存在。由于大部分用户是沉默的用户。并不会明白给系统反馈“我对这个物品的偏好值是多少”。

因此,推荐系统能够依据大量的隐性反馈来判断用户的偏好值。

However,explicit feedback is not always available.

Thus, recommenders can infer user preferences from the more abundant

implicit feedback, which indirectly reflect opinion through

observing userbehavior

 

隐性反馈的特性:

1 没有负反馈。

隐性反馈无法推断是否不喜欢。

而显性反馈,明显能区分是喜欢还是不喜欢。

2 先天性具有噪声。用户购买了某物品,并不代表他喜欢。或许是送礼,或许买了之后发现不喜欢。

3 显性反馈数值代表偏好程度,隐性反馈数值代表置信度。隐性反馈的数值一般是动作的频次,频次越多,并不代表偏好值越大。比方一个用户常常看某部连续剧,可能该用户对该连续剧的喜好值一般。仅仅是由于每周都播。所以动作频次非常大。假如该用户对某部电影超级喜欢。但可能就看过一次,因此动作频次大并不反应偏好值大。

从这个用户常常看这部连续剧这个行为,仅仅能判断出该用户喜欢这连续剧有非常大的置信度,但这个用户对这个连续剧的偏好值是多少我们无法评估。

4 隐性行为须要近似评估。

 

显性反馈中,用rui表示偏好值。这里,我们用rui表示隐性反馈的动作频次。

We reserve special indexing letters for distinguishing

users fromitems: for users u, v, and for items i, j. The input

data associate users and items throughrui values, which we

henceforth call observations. For explicit feedback datasets,

those values would be ratings that indicate the preference

by user u of item i, where high values mean stronger preference.

For implicit feedback datasets, those values would

indicate observations for user actions. Forexample,ruican

indicate the number of times upurchased item ior thetime

u spent on webpage i.

 

偏好值的判断

技术分享

这表达的意思是。用户u对物品i的隐性反馈动作超过一次,我们就觉得u喜欢i。动作频次越多。这个如果的置信度就越高。如果没有动作,则觉得u对i的偏好值为0。当然由于动作次数为0。所以“u对i的偏好值为0”这个如果的置信度就非常低。

由于没有动作。除了不喜欢和不感兴趣之外。还有其它非常多原因,比方u不知道i的存在。

 

置信度的衡量

cui = 1 + αrui

论文中提到α = 40效果比較好。

当然,置信度的衡量还有其它方式,总的来说,动作频次越大,置信度就越高。

In general, as rui grows, we have a stronger indication

that the userindeed likes the item.

 

优化的目标函数:

技术分享

这个跟显性反馈的矩阵分解优化的目标函数类似,但有两个不同点:

1 我们须要考虑置信度

2 优化的目标应该针对全部可能的u,i的键值对,而不仅仅是可观察到的数据。显性反馈的矩阵分解优化时,对于missing data(未知评分),是不会当做训练数据输入到模型的,优化时针对已知评分数据优化。而这里隐性反馈。是利用全部可能的u,i键值对,所以总的数据是m*n,当中m是用户数量,n是物品数量。这里没有所谓的missing data,由于假如u对i没有不论什么动作,我们就觉得偏好值为0,仅仅只是置信度较低而已。

This is similar to matrix factorization techniques

which are popular for explicit feedback data, with two important

distinctions: (1)We need to account for the varying

confidence levels, (2) Optimization should account for all

possible u, i pairs, rather than only those corresponding to

observed data.

 

 

优化这个目标函数时。这里还是跟显性的ALS矩阵分解的做法一样。

 

固定物品特征,对用户特征求偏导数,令偏导数等于0,

更新用户特征

技术分享


固定用户特征,对物品特征求偏导数,令偏导数等于0,

更新物品特征

技术分享

这样的做法叫做交替最小二乘法。

论文中,还介绍了一些能够加快上面矩阵计算速度的技巧,具体能够參看论文。

 

 

《Collaborative Filteringfor Implicit Feedback Datasets》

《推荐系统实践》

http://mahout.apache.org/users/recommender/intro-als-hadoop.html



本文作者:linger

本文链接:http://blog.csdn.net/lingerlanlan/article/details/46917601


隐性反馈行为数据的协同过滤推荐算法