推荐系统常见问题

(一)哈利波特问题

问题:购买任何一本书的人似乎都会购买《哈利波特》,因为《哈利波特》太热门了,确实是购买任何一本书的人几乎都会购买它。
解决方案
(1)在item-based CF的相似度计算公式的分母上,加大对热门物品的惩罚
wij=N(i)N(j)N(i)1αN(j)αw_{ij}=\frac{|N(i)\cap N(j)|}{|N(i)|^{1-\alpha}|N(j)|^\alpha}
其中N(i)N(i)表示四环物品ii的用户集合;α[0.5,1]\alpha\in[0.5,1],提高α\alpha就可以惩罚热门物品jj
(2)引入物品的内容数据

(二)推荐系统冷启动物品

(1)用户冷启动
热门排行榜(非个性化推荐),注册信息(粗粒度个性化推荐),社交网络账号
(2)物品冷启动
利用物品的内容信息,推荐给“和该物品相似物品”的喜欢人群
(3)系统冷启动
引入专家知识,建立物品相关度表

(三)推荐系统评估

(1)评分预测
RMSE=u,iT(ruir^ui)2T均方根误差RMSE=\sqrt{\frac{\sum_{u,i\in T} (r_{ui}-\hat{r}_{ui})^2}{|T|}}
MAE=u,iTruir^uiT平均绝对误差MAE=\frac{\sum_{u,i\in T}|r_{ui}-\hat{r}_{ui}|}{|T|}
其中ruir_{ui}是用户uu对物品ii的实际评分,r^ui\hat{r}_{ui}是推荐算法给出的预测评分。

(2)TopN推荐
Recall=uUR(u)T(u)uUT(u)召回率Recall=\frac{\sum_{u\in U}|R(u)\cap T(u)|}{\sum_{u\in U}|T(u)|}
Precision=uUR(u)T(u)uUR(u)准确率Precision=\frac{\sum_{u\in U}|R(u)\cap T(u)|}{\sum_{u\in U}|R(u)|}
其中R(u)R(u)是推荐算法给出用户uu的推荐列表,T(u)T(u)是用户uu实际感兴趣的物品列表。召回率——用户实际感兴趣的物品,给推了几个;准确率——给用户推的物品里,有几个是用户感兴趣的。

[3]覆盖率
Coverage=uUR(u)ICoverage=\frac{|\cup_{u\in U}R(u)|}{|I|}
其中UU表示用户集合,R(u)R(u)表示给用户uu推荐的长度为NN的物品列表。

[4]基尼系数
推荐系统常见问题

(四)长尾分布、用户活跃度、物品流行度

长尾分布:极少数个体(横轴)对应极高的值(纵轴),而拥有极低值的个体,数量却占总体的绝大多数。形象地描述可称曲线靠近纵轴的部份为tall head,而靠近横轴的部份则是所谓的long tail。
f(x)=αxkf(x)=\alpha x^k
推荐系统常见问题

https://www.zhihu.com/question/20027490
用户活跃度:用户 产生过行为的 物品总数。
物品流行度:对 物品 产生过行为的 用户数。

(五)user-based CF和item-based CF对比

user-based CF适合新闻推荐,用户兴趣不是特别细化,绝大多数都喜欢看热门新闻;新闻作为item更新非常快,如果用item-based CF需要更新item相关表,无法做到实时计算。时效性|个性化需求低
item-based CF适合图书、电影、商品等推荐,这些方向的用户的兴趣比较固定和持久;这些方向的物品数相对用户数要少很多,维护低维度的item相关表更容易。挖掘长尾物品|个性化需求高