当我们在做推荐系统模型时,有考虑过模型推荐结果的可解释性吗?比方说推荐系统给用户推荐了item A,并在推荐结果后标明该用户最要好的朋友喜欢item A,或者和该用户有着相似兴趣(协同过滤)的人喜欢A,这使得推荐结果非常透明且具有说服力,能够提升用户的接受度.这篇论文<Learning from User Feedback on Explanations to Improve Recommender Models>就从可解释性出发,提出了一个新的框架ELIXIR,来提升推荐系统的效果.
简介
推荐要得到用户的信任,就要让用户理解到当前推荐结果是和之前行为(搜索,点击,喜欢,评论等)有着关联,这样用户就可以对推荐结果给出肯定或反对的反馈,从而影响下一次的推荐结果.这篇论文就是通过一个Active Learning的框架,通过用户在可解释性的推荐结果上的行为线索,提升推荐效果.如下图所示,Alice收到一个电影推荐Fight Club,基于历史观看和item2item,该推荐结果伴随着3个相关的电影(Alice之前喜欢的),出于以下原因:
- exp1 有着喜欢的演员
- exp2 结局有惊喜
- exp3 有着暴力的内容
![v2-dd7aa503426e1c1d10e136448e70b8e7_b.jpg](https://ss.csdn.net/p?https://pic4.zhimg.com/v2-dd7aa503426e1c1d10e136448e70b8e7_b.jpg)
我们看到alice喜欢前两部推荐的电影不喜欢包含暴力内容的推荐,当给予alice有解释性的推荐结果后,alice会给出不同类型的反馈结果,这就是推荐系统需要学习的.不过Alice也可能不喜欢推荐系统的解释,也有可能她之前这些电影都喜欢,现在不喜欢了,这也会使得推荐系统更加"困惑".如果alice能告诉推荐系统她喜欢演员Brad Pitt,喜欢有惊喜的结局和讨厌暴力,然而现实是用户不愿意花时间去填写这种信息.这篇论文就是探讨如何使用用户在可解释推荐结果的反馈.主要有以下两个问题:
- 反馈:如何引导用户在可解释性的推荐结果上做反馈,而不给用户增加负担?
- 可行性:如何使用这些反馈,影响用户的下一次推荐?
该文提出的方法给用户两个反馈的选择,对可解释的与推荐item相关的的选择喜欢/不喜欢,这样就能形成推荐和可解释item的pair对<rec, exp>.需要注意的是,用户对exp的item需要非常熟悉,并且这种反馈方式让用户体验非常好,不用思考rec和exp之间的关联,而且能产生大量<rec,exp>的pairs.有了这些pairs就可以构建user-feedback矩阵了,该矩阵不可避免是稀疏的.为了解决这个问题论文还做了数据增强,用LSH为每个<rec,exp>pair找最近邻扩充样本.该论文提出的核心方法就是通过用户反馈矩阵和先验的相似度矩阵学习用户潜在的向量.
ELIXIR框架
首先定义所有的items集合I = {v1, v2, ..., v|i|},和用户历史交互Hu, 以往的推荐系统只用了用户历史交互数据Hu,该框架使用了pair-level的用户反馈Fu = {-1, 0, +1}|I|*|I|,Fu(vi, vj)表示用户u推荐的vi和可解释的item vj, 1表示喜欢它们之间的相似度,0表示没反馈,-1表示不喜欢他们之间的相似度.
因为item极为稀疏,所以该文在图上使用了label propagation(LP) algorithm去缓解数据稀疏,节点表示items,边表示item之间的相似度,假节点vij表示有标签的pair对<vi, vj>, Fu(vi, vj) != 0,并有下式:
![v2-61485880319e733c7a0833647fa85d92_b.jpg](https://ss.csdn.net/p?https://pic3.zhimg.com/v2-61485880319e733c7a0833647fa85d92_b.jpg)
vi向量表示物品i的特征,vij的向量表示两物品的几何平均.然后我们就可以为这样的假节点使用cos相似度寻找k近邻.最终我们就要优化下式:
![v2-85ce51312625ea2c7fa4855356b538ce_b.jpg](https://ss.csdn.net/p?https://pic3.zhimg.com/v2-85ce51312625ea2c7fa4855356b538ce_b.jpg)
生成推荐结果:该文使用了RECWALK,一个基于随机游走的方法,该模型的输入是一个异质图。
![v2-86f185c3746542d5dbf136cf13a4ea8a_b.jpg](https://ss.csdn.net/p?https://pic3.zhimg.com/v2-86f185c3746542d5dbf136cf13a4ea8a_b.jpg)
![v2-8536aef4a0c83bff3017872b91016bde_b.jpg](https://ss.csdn.net/p?https://pic3.zhimg.com/v2-8536aef4a0c83bff3017872b91016bde_b.jpg)
![v2-559ff3f1c9b7795a347fe7e3a33e6568_b.jpg](https://ss.csdn.net/p?https://pic1.zhimg.com/v2-559ff3f1c9b7795a347fe7e3a33e6568_b.jpg)
节点有两种类型,用户和item,边表达了用户和item的关系和item之间的相似度.
![v2-744558dba13f97acaeb28c34c52e15d8_b.jpg](https://ss.csdn.net/p?https://pic1.zhimg.com/v2-744558dba13f97acaeb28c34c52e15d8_b.jpg)
![v2-02653f956bfe213216a08efff03ca34f_b.jpg](https://ss.csdn.net/p?https://pic4.zhimg.com/v2-02653f956bfe213216a08efff03ca34f_b.jpg)
在RECWALK中,为用户u推荐item vi的分数由下式计算, PPR(u, vi)表示个性化的pagerank分:
![v2-ff3ad93920d3fe13261cb9e5b92868c1_b.jpg](https://ss.csdn.net/p?https://pic2.zhimg.com/v2-ff3ad93920d3fe13261cb9e5b92868c1_b.jpg)
alpha表示restart概率,eu向量表示用户one-hot向量,beta表示走一条边的概率,由上式我们可以看到,一次游走有1-alpha的概率返回用户节点u ,item中PPR(u,v)分最高的将被推荐给用户u.
生成exp:
rec已经被选出推荐给用户u,Item-level的exp推荐用了PRINCE算法.我们需要计算每个exp的item对推荐rec的贡献度,找出topk贡献度的作为exp,如下式所示:
![v2-eedd1492f267fc80aaf2a8942ce900f6_b.jpg](https://ss.csdn.net/p?https://pic3.zhimg.com/v2-eedd1492f267fc80aaf2a8942ce900f6_b.jpg)
在RECWALK,item之间相似度用矩阵S显示表达:
![v2-ef20696b3fb591bff2fff2634ba2334a_b.jpg](https://ss.csdn.net/p?https://pic3.zhimg.com/v2-ef20696b3fb591bff2fff2634ba2334a_b.jpg)
为了包含用户反馈Fu,式(2)引入了用户向量矩阵wu,式(2)中的g将item的统一向量表达转变成了用户表达:
![v2-e70df8abf89ad670621d10d167c037e7_b.jpg](https://ss.csdn.net/p?https://pic4.zhimg.com/v2-e70df8abf89ad670621d10d167c037e7_b.jpg)
代入到式(2)就是:
![v2-32792e83209c36ac51e4b08f2823a2e0_b.jpg](https://ss.csdn.net/p?https://pic1.zhimg.com/v2-32792e83209c36ac51e4b08f2823a2e0_b.jpg)
最终我们的推荐模型如下:
![v2-02fa3f7638e42e47f862c2ac3abcb222_b.jpg](https://ss.csdn.net/p?https://pic3.zhimg.com/v2-02fa3f7638e42e47f862c2ac3abcb222_b.jpg)
从实验看,融合用户反馈的方法的推荐离线指标还是不错的,更多细节参考原文.
![v2-581b76db39e755fd0019e2977f6d2d07_b.jpg](https://ss.csdn.net/p?https://pic4.zhimg.com/v2-581b76db39e755fd0019e2977f6d2d07_b.jpg)
参考文献:
ELIXIR: Learning from User Feedback on Explanations to Improve Recommender Models
从用户反馈的可解释性提升推荐模型