《推荐系统实践》笔记之基于邻域的算法

基于邻域的算法主要分为两类:基于用户的协同过滤算法和基于物品的协同过滤算法

基于用户的协同过滤算法

基础算法:

(1) 找到和目标用户兴趣相似的用户集合

(2) 找到这个集合中的用户喜欢的,且目标用户没有听说过的物品推荐给目标用户

Jaccard公式计算u和v的兴趣相似度:

image

image

UserCF推荐算法建立物品到用户的倒查表,对于每个物品都保存对该物品产生过行为的用户列表

用户u对物品i的感兴趣程度:

image

算法的改进(User-IIF)

以图书为例,如果两个用户都曾经买过《新华字典》,这不能说明他们兴趣相似,但是如果他们都买过《数据挖掘导论》。那可以认为他们兴趣基本相似。所以必须考虑到热门物品对用户相似度的影响

image 

基于物品的协同过滤算法

基于物品的协同过滤算法是业界应用最多的算法包括亚马逊、Netflix、Hulu、YouTube,其基础都是该算法。

基础算法:

(1) 计算物品之间的相似度

(2)根据物品的相似度和用户的历史行为给用户生成推荐列表

喜欢物品i的用户中有多少比例也喜欢物品j:

image

但是当物品j为热门物品时, image 会很大,接近1,为了避免推荐出热门物品,用下面公式:

image

得到物品的相似度之后,ItemCF通过以下公式计算用户u对一个物品j的兴趣:

image

N(u)表示拥护喜欢的物品的集合,S(i,K)表示和物品i最相似的K个物品的集合,image 表示用户u对物品i的兴趣(令image =1,此处有点不理解,这里为1是否有不妥,是否应该也是应该有上面公式计算才比较好(初试状态由用户定))

 

算法改进:

举个例子,如果有一个用户,开书店的,买了当当网100w上80%的书来自己卖,从前面的算法来说,就表示着80w书各自产生相似度,这个用户虽然活跃但是买这些书并非都是出于自身的兴趣.

有paper指出IUF(Inverse User Frequence)即用户活跃度对数的倒数的参数,他认为活跃用户对物品相似度的贡献应该小于不活跃的用户,故修正物品相似度的计算公式:

image 

物品相似度的归一化

假如一个用户喜欢5个a类物品,和5个B类物品,a类物品之间的相似度0.5,b类物品的相似度为0.6,ab之间的相似度为0.2,那么用ItemCF给他进行推荐,推荐的就都是b类物品,因此必须对相似度进行归一化来提高推荐的多样性。归一化公式:

image

原文地址:https://www.cnblogs.com/burness/p/3336329.html