在上一篇博客里面分享的是《推荐系统实践》中冷启动相关的处理算法,对此还不熟悉的读者可以戳这里。
关于这个系列会分为如下几个部分:
《推荐系统实践》算法纯享(附代码链接)(一)—— 评价指标篇
《推荐系统实践》算法纯享(附代码链接)(二)—— 协同过滤篇
《推荐系统实践》算法纯享(附代码链接)(三)—— 冷启动篇
《推荐系统实践》算法纯享(附代码链接)(四)—— UGC推荐篇
《推荐系统实践》算法纯享(附代码链接)(五)—— 借助上下文信息推荐篇
《推荐系统实践》算法纯享(附代码链接)(六)—— 借助社交网络推荐篇
《推荐系统实践》算法纯享(附代码链接)(七)—— 评分预测篇
完整代码链接:https://github.com/Magic-Bubble/RecommendSystemPractice
下面将开始本系列的第四部分——UGC推荐篇。
文章目录
4 UGC推荐
用户的标签行为数据集一般由(u, i, b)三元组组成,表示用户u给物品i打上了标签b的行为。
4.1 基于用户UGC标签进行推荐
代码链接:https://github.com/Magic-Bubble/RecommendSystemPractice/blob/master/Chapter4/基于用户标签的推荐系统.ipynb
4.1.1 最简单的算法(SimpleTagBased)
在拿到用户标签行为数据之后,一个最容易想到的方法就是:
- 统计每个用户最常用的标签
- 对于每个标签,统计被打过这个标签次数最多的物品
- 对于每个用户,首先找到他常用的标签,然后找到具有这些标签的最热门物品进行推荐
用公式表示用户u对物品i的兴趣为,其中, n u , b n_{u,b} nu,b是用户u打过标签b的次数, n b , i n_{b,i} nb,i是物品i被打过标签b的次数。
p ( u , i ) = ∑ b n u , b n b , i p(u, i) = \sum_b n_{u,b}n_{b,i} p(u,i)=b∑nu,bnb,i
4.1.2 利用TF-IDF进行改进(TagBasedTFIDF和TagBasedTFIDF++)
上面的公式倾向于给热门标签对应的热门物品很大的权重,从而不能反映用户个性化的兴趣,因此可以借鉴TF-IDF思想,对上述公式进行改进(TagBasedTFIDF):
p ( u , i ) = ∑ b n u , b l o g ( 1 + n b ( u ) ) n b , i p(u,i)=\sum_b \frac{n_{u,b}}{log(1+n_b^{(u)})} n_{b,i} p(u,i)=b∑log(1+nb(u)<