推荐系统-协同过滤原理与实现 (3)

用户行为记录

    

用户行为记录2

上述算法很简单但是计算量较大,因为需要所有用户之前的复杂度  n(n-1)/2。 下面这种计算用户相似度算法通过空间换时间。

首先建立物品到用户的倒排表,然后统计每两个用户的公共物品数量(如下图所示)。

物品用户倒排表

计算u对物品i的感兴趣程序:

PUI

得到用户之间的兴趣相似度后,UserCF算法会给用户推荐和他兴趣最相似的K个用户喜欢的物品。上面右边公式度量了UserCF算法中用户u对物品i的感兴趣程度:其中,S(u, K)包含和用户u兴趣最接近的K个用户,N(i)是对物品i有过行为的用户集合,Wuv是用户u和用户v的兴趣相似度,Rvi代表用户v对物品i的兴趣,因为使用的是单一行为的隐反馈数据,所以所有的Rvi=1。

上述推荐算法缺陷:

如果两个用户都曾经买过《新华字典》,这丝毫不能说明他们兴趣相似,因为绝大多数中国人小时候都买过《新华字典》。但如果两个用户都买过《数据挖掘导论》,那可以认为他们的兴趣比较相似,因为只有研究数据挖掘的人才会买这本书。换句话说,两个用户对冷门物品采取过同样的行为更能说明他们兴趣的相似度。因此,John S. Breese在论文①中提出了如下公式,根据用户行为计算用户的兴趣相似度:

计算用户相似度的改进算法:

wuv

分子中的倒数惩罚了用户u和用户v共同兴趣列表中热门物品对他们相似度的影响。N(i)是对物品i有过行为的用户集合,越热门,N(i)越大

. 基于物品的协同过滤算法(ItemCF)

算法核心思想:给用户推荐那些和他们之前喜欢的物品相似的物品。

基于物品的协同过滤算法主要分为两步:

第一步:计算物品之间的相似度;

wij

其中,|N(i)|是喜欢物品i的用户数,|N(j)|是喜欢物品j的用户数,|N(i)&N(j)|是同时喜欢物品i和物品j的用户数。

从上面的定义看出,在协同过滤中两个物品产生相似度是因为它们共同被很多用户喜欢,两个物品相似度越高,说明这两个物品共同被很多人喜欢。

这里面蕴含着一个假设:就是假设每个用户的兴趣都局限在某几个方面,因此如果两个物品属于一个用户的兴趣列表,那么这两个物品可能就属于有限的几个领域,而如果两个物品属于很多用户的兴趣列表,那么它们就可能属于同一个领域,因而有很大的相似度。

(用户活跃度大的用户可能喜欢列表中有很多商品,会影响ItemCf算法计算结果准确性,后面优化算法会增加一个用户活跃度分子)

举例,用户A对物品a、b、d有过行为,用户B对物品b、c、e有过行为,等等;

clip_image013

依此构建用户——物品倒排表:物品a被用户A、E有过行为,等等;

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpwzdy.html