python推荐系统学习笔记(4)——基于协同过滤的个性化推荐算法实战—算法(上)
一、概念理解
协同过滤简单来说是利用某兴趣相投、拥有共同经验之群体的喜好来推荐用户感兴趣的信息,个人通过合作的机制给予信息相当程度的回应(如评分)并记录下来以达到过滤的目的进而帮助别人筛选信息。
(1)usercf:根据用户的相似性,推荐与目标用户相似的用户所喜好的物品。适用于实时新闻,突发信息推荐。
(2) itemcf:根据物品的相似性,推荐目标用户所喜好的物品所相似的物品。适用于图书,电子商务,电影推荐。
该算法认为,物品A和物品B具有很大的相似度是因为喜欢物品A的用户大都也喜欢物品B。
二、步骤过程
基于物品的协同过滤算法主要分为两步:
1、计算物品之间的相似度;
2、根据物品的相似度和用户的历史行为给用户生成推荐列表;
三、相似性度量公式
(1)基于评分的相似性度量公式:
sin(i,j)代表物品和 的相似度:u代表用户的集合,ru,i代表用户u对物品i的评分(ru,i同理),上划线r代表物品i或j的评分的平均值。
(2)基于行为(喜好)的相似性度量公式:
sij代表物品和的相似度:u(i)和u(j)代表含有物品i或者物品j行为的用户集合;分子表示i用品的用户行为和物品j的用户行为个数的绝对值;分母代表物品i的用户行为以及物品j的用户行为的数量的乘积的平方根。
在两种相似性度量公式中,基于评分的相似性度量公式更适用于含有用户评分数据的情景下,基于行为(喜好)的相似性度量公式多用于头条推荐以及减少计算量的情景下。
此外还有其它计算公式:(x和y分别代表每个物品的来自不同用户的评分)
(1)欧几里得(欧氏)距离:
(2)皮尔逊相关系数:
(3)Cosine(余弦)相似度:
四、评分预测公式
(1)基于评分的itemcf的评分预测公式:
代表用户 u 对物品 i的预测评分, n代表所有与物品i相似的物品个体,rui代表用户u 对物品n的评分,si,j代表物品i与物品n的相似度。
(2)基于喜好的的行为得分(喜好程度)预测公式:
i是能代表用户u 行为的物品; pu,j代表用户u对物品 j的喜好程度;sij,是物品i与 j的相似度; rui是 用户 u对物品i的行为得分度量。
存在的问题:
物品冷启动问题:当平台中物品数据较少或缺失时,无法精确计算物品相似度。
解决方法:
(1)文本分析,通过分析物品的介绍文本,计算相似度。
(2)主题模型,通过主题模型分析物品文本主题得出主题相似度
(3)打标签,对物品打标签求得相似度。
(4)推荐排行榜单。
五、算法的改进优化
(1)、考虑物品的热门程度和用户的活跃度
改进意义:认为活跃用户对物品相似度的贡献应该小于不活跃的用户,活跃用户应该被降低在相似度公式中的贡献度,如批发商用户会购置多项物品。
,其中|n(u)|表示用户产生过行为的物品的个数,用这种相似度计算itemcf的被记为itemcf-iuf。
用python代码表示如下:
def ItemSimilarity(train):
# calculate co-rated users between items