【推荐系统实践】协同过滤
1. 推荐系统常用评价指标
主要讨论的是topN推荐
准确率,召回率,覆盖率(有多少物品被推荐出来了),流行度(推荐物品的流行度,计算平均流行度对每个物品的流行度取对数,因为满足指数分布)
2. 协同过滤
2.1 user base
计算两两用户的相似度,复杂度为O(U*U)
计算优化点:建立物品-用户的倒排表,物品下,每两个用户+1
关键参数K:参考最相似的k个用户的打分,k越大,越接近于热点,流行度越高,覆盖率越低,但准确率和召回率不一定
算法优化点:惩罚热门,原来分子是1的加和,改成1/log(1+物品i的热度)
2.2 item base
参数k:对指标没有明显规律(?)
对活跃的用户进行惩罚:和上面一样
哈利波特问题,对热门物品进行惩罚:所有物品都与哈利波特相似,分母加上(1-a) a指数
物品相似度归一化(重要):对相似矩阵,按列除以每列最大值。一般来说,热门门类的物品相似度比较大,不归一化的话,容易推荐出热门物品
2.3 对比
UserCF更加社会化,反应了所在群体的喜好
itemCF更加个性化,反映了自己的兴趣
新闻推荐中,兴趣比较粗粒度,热点大家都爱看,并且新闻更新很快,基本都用userCF
在电影,书籍推荐中,兴趣比较精细
3. 隐语义模型
topN推荐的关键问题:选取负样本
一般来说,正负样本数量一样,选那些热门但是没有行为的物品
正负样本比是关键参数,负样本越多,越接近热点
一般来说,优于userCF, itemCF,数据集非常稀疏,可能会性能差
4. 基于图的模型
用户和物品,图,计算顶点的相关性
PersonalRank(?)