现在的位置: 首页 > 综合 > 正文

协同过滤基础

2018年12月11日 ⁄ 综合 ⁄ 共 2097字 ⁄ 字号 评论关闭

转自:http://superangevil.wordpress.com/2010/03/16/basic_collaborative_filtering/

特别详细的资料

推荐系统中,协同过滤(Collaborative
Filtering
)技术已经获得了相当广泛的成功,最著名的就是Amazon,这里就不多说了。虽然是互联网上迟到的80后,但我们还是有热情去在互联网的舞台上脚踏实地的去拼搏、去奋斗。说到“脚踏实地”,一直以为CF没啥,现在觉得还是应该踏踏实实把它记录下来,算是对自己的积淀吧。

Web2.0时代都讲求“集体智慧”(collective
intelligence
),首先是韩信将兵多多益善,而后再聚合、分类、过滤、预测、推荐、……。CF简单来说就是利用与使用者兴趣(
interest)相投、品味(taste)相同的群体的喜好来对使用者产生他所”可能”感兴趣的信息。互联网上一个个个体透过一种合作机制(比如豆瓣的书影音平台)对某特定信息给予相当程度的回应(写书评、影评,评分等),这些信息可以用以帮助他人筛选信息。通常做法是:
(1) 对一大群人进行搜索,并从中找出与使用者品味相近的一小群人; (2) 对这小群人喜好的其他内容进行考察,并将它们组合起来构造一个经过排名的推荐列表。CF最大特点是它并不利用content信息,仅仅利用user-item矩阵的链接关系就能产生预测。下面记录一下最基本的两种基于kNN的方法: User-Based CF, Item-Based CF(关于它们之间的比较就不说了,几篇经典的CF论文都讲了)。

0.
数据准备: 阶user-item关系的rating矩阵:  —
行代表user,列代表item

1.
User-Based Collaborative Filtering

STEP1. 对user u,计算u与其他每个user v的相似度:

为user
u和user v都打过分的items集合


,  
表示user
u对中items打分的均值; 
表示user
v对中items打分的均值。
此种度量方式实际上是调整后的cosine相似度(还有很多相似度度量方式,比如Euclidean
Distance, Pearson Correlation等等,具体选用哪种相似度度量方式,要根据具体应用和数据的具体特点而定)。

STEP2.
这样,对user u,就找到了u与其他用户的相似度度量,根据相似度排序,取top-k个用户(kNN过程—找到了k个最近邻):

为排好序的与user
u最近似的k个最近邻,相应的相似度为

此步的一个直接结果就是找到了相似用户

STEP3. 预测user u对item i的喜欢程度:
为对item
i打过分的users集合


用相似kNN且对item i打过分的用户对item i评分的加权平均作为user u对item i喜欢程度的预测,这就找到了user u对其未关注过的item
i的
可能喜欢程度;对u所有未打过分的items都进行一下预测,就找出了一个user
u未关注过的items的预测列表,对其按照预测值进行排序,就给出了一个user u可能喜欢的N个items(有序),这就是典型的
“您可能喜欢”形态 :)

2. Item-Based Collaborative Filtering

STEP1. 对任意两个item i, j,计算它们之间的相似度:

为对item
i和item j都打过分的users集合

   
表示中的users对item
i打分的均值;表示中的users对item
j打分的均值。
此种度量方式仍是调整后的cosine相似度,不再赘述。
[注] 此步骤的最大特点是相比与users,items相对是静态、变化较少的,item-item相似对可以预先offline计算 —
相比于user-based方法,这是一个极大的优势。

STEP2. 对任意item i,根据相似度排序,获得k个最相似items(kNN):
为排好序的与item
i最近似的k个最近邻,相应的相似度为

此步的直接结果是找到了相似物品

STEP3. 预测user u对item i的喜欢程度:
为user
u打过分的items集合

用user u打过分且在item i相似kNN的items集中打分的加权凭据作为u对i喜欢程度的预测,同样找到user u对起未关注国的item i的可能喜欢程度;对u所有未打分的items都这样作,就形成了一个预测列表,排序后给出推荐列表

在 User-based 方法中,随着用户数量的不断增多,在大数量级的用户范围内进行“最近邻搜索”会成为整个算法的瓶颈。 

Item-based 方法通过计算项之间的相似性来代替用户之间的相似性。对于项来讲,它们之间的相似性要稳定很多,因此可以离线完成工作量最大的相似性计算步骤,从而大大降低了在线计算量,提高推荐效率


以上就是最基本的基于kNN的CF过程,当然,通过交叉验证可以评测我们的相似度函数选择怎么样,最重要的,还是根据具体应用和数据本身的特点选择和设计合适的相似度度量函数;另外,对于数据features的多方面考虑可以有更复杂的模型(如SVD,
RBM等等),对预测进行进一步的精确与细化。

【上篇】
【下篇】

抱歉!评论已关闭.