A.
用户和系统的一连串交互序列(Session),应该被重视;
1. 显性反馈行为:评分(适用于大众点评/豆瓣这种专做评价的);喜欢/不喜欢(适用于YouTube这种主要是看视频的)
2. 隐性反馈行为:购买,点击,浏览时长;(靠前的被点击不一定就说明用户喜欢它,可能只是因为靠前所以误点,或者被标题党误导)
一条用户行为的构成:1.用户ID; 2.物品ID; 3.行为种类(浏览,购买); 4.上下文(时间,地点);5.行为权重(浏览时长,打分的分数);6.行为内容(评论的内容,打上的标签)
B.
新用户倾向点击热门物品;越老的用户,越倾向点击冷门物品;
C.
物品流行度满足长尾分布,所以取对数,可以让平均值更稳定;
D.
UserCF: User-->Item-->User-->买了-->Item;
一个用户,选择K个和他最相似的用户;K=80时Precision和Recall达到最高,K越大推荐物品流行度越高(因为被更多人喜欢的物品往往是热门物品),K越大覆盖率越低(因为推出来的都是热门物品)
2个用户相似度的度量:1. Jaccard距离;2. cosine距离;3.Cosine距离的分子上,对热门物品(买的人多的物品)进行降权;
ItemCF: User-->买了-->Item-->User-->Item;(用户多了以后,用ItemCF较好;ItemCF可解释性强,购买了这本书的人还喜欢购买XXX)
2个物品相似度的度量:1. 还是使用cosine距离计算Item和Item的相似度;基于<用户,Item>行为,而不是基于Item内容上的相似度;2. cosine距离的分子上,对活跃的人(买物品多的人,比如二道贩子)进行降权;
E. 对比
UserCF | ItemCF | |
内涵 | 给用户推荐和他有共同兴趣爱好的用户喜欢的物品;更社会化,反映了用户所在的小兴趣群体中物品的热门程度 | 给用户推荐和他之前喜欢的物品类似的物品;更个性化,反映了用户自己的兴趣传承 |
性能 | 适用于用户数少于物品数的场景(User*User相似度矩阵) | 适用于物品数少于用户数的场景(Item*Item相似度矩阵)(淘宝的物品少于用户) |
领域 | 时效性强,用户个性化兴趣不太明显的领域(比如新闻推荐,大家更关注热点和最新新闻,个性化是其次的) | 长尾物品丰富,用户个性化需求强烈的领域(图书,购物,电影推荐)(买技术书的人,兴趣固定,对热门书倒不追求) |
实时性 | 用户的新行为,不一定造成推荐结果实时变化(新闻网站,User*User相似度矩阵可以一天更新一次) | 用户的新行为,一定会导致推荐结果的实时变化(新买了本书,则立刻推荐和这个书相似的书们) |
冷启动 | 新用户:新用户对较少物品产生行为后,不能立即对他进行个性化推荐,因为User*User相似度表是一天更新一次; 新物品:一旦有用户对该物品产生行为,立即可将该新物品推荐给和这个用户兴趣相似的用户们; | 新用户:只要对一个物品产生行为,立即可推和该物品相似的物品; 新物品:需要等物品相似度矩阵更新后,才能被推荐出来; |
可解释性 | 弱 | 强(购买了这本书的人还喜欢购买XXX) |
F. 隐语义模型
可用LDA: 文章换成用户,词换成物品,得到:所有用户的主题向量,所有主题的物品向量;
LFM(Latent Factor Model):类似矩阵分解,但不要求所有物品都出现在矩阵里(适合负例物品特别多的场景);选择负例物品时,尽量选不被点击的物品里最热门的那些;使用MSE加正则项做损失函数;
LFM空间复杂度: O(User*主题数+主题数*Item),因为主题数较小,所以比User-CF和Item-CF的都要小;
LFM线上实时计算不可能,而User-CF和Item-CF是可以线上实时计算的;
LFM可解释性差;
E. 二分图PersonalRank:
每轮迭代,遍历所有节点j,每个节点对有边<i,j>的节点i进行一次到自己节点的权重增加,增加的权重等于,对于root节点,还要额外增加一个
;(其实不是随机,而是确定得更新权重)
为加快计算,可以采用矩阵形式,矩阵计算求解最终的r向量即可(网页里最后一项少乘个r,书上是对的)