推荐系统 | (3) 可解释推荐系统---身怀绝技,一招击中用户心理

2023-11-09 17:48

本文主要是介绍推荐系统 | (3) 可解释推荐系统---身怀绝技,一招击中用户心理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

原文地址

原文作者:王希廷、谢幸

推荐系统被广泛应用在电商网站、社交网络、生活服务网站、搜索引擎等平台。一个好的推荐系统不仅需要准确地把握用户的需求,推荐给用户想要的内容,更需要学会与用户沟通,了解用户心理,以用户容易接受的方式给出适当的推荐。

本文中,微软亚洲研究院的研究员王希廷和谢幸将为大家详解可解释推荐系统的分类、推荐解释生成方法以及面临的机遇和挑战。

《战国策》中有个有趣的故事:当年赵国被入侵,只有送出质子才能求来救兵。但是赵太后特别疼爱小儿子,怎么也不愿意让他当质子。大臣们越是劝谏,赵太后就越是愤怒。这时候触龙出面,成功说服了赵太后,让她的爱子出质于齐,换来救兵。他到底是如何做到的呢?

这个故事其实跟我们最近进行的推荐系统的研究非常相关。如果把“送出质子”当作一个推荐给太后的策略,那么故事的关键不在于推荐内容的好坏,而在于对推荐内容的解释。如果要让赵太后这样顽固的用户接受这个推荐,关键点是什么?

触龙给出的答案是:沟通方式、用户心理、合适例证。让我们详细看看他是怎么做的。

触龙刚见到赵太后就开始话家常,说:“我老啦,有个小儿子年龄很小,真是担心他的未来啊。”赵太后问:“你们男人也很宠爱小儿子吗?”触龙说:“比女人更宠呀。我认为赵太后更喜欢您的女儿,而不是小儿子。”赵太后表示不认同。触龙解释道:“您送公主出嫁的时候,尽管伤心,但也希望她不要被赶回来。这还不是为她的长远未来打算?”赵太后同意。触龙又说:“但是您却没怎么为长安君计划未来。您看赵国刚建立时的诸侯王,他们的子孙还有享受爵位的吗?其他国家的呢?”赵太后想了想,表示没有。触龙又说:“那是因为他们荣华富贵太甚,又没有什么功劳的缘故。您现在让长安君有如此高的地位,却不让他有功于国,一旦您驾崩了,长安君凭什么在赵国立足呢?”听了这番话后,赵太后同意了将长安君作为人质。

我们可以在这个故事里看到两类推荐系统。一类是朝廷大臣这种传统的推荐系统(下图(a)),将重心放在提高推荐准确性上,与推荐对象的沟通考虑得不够;而另一类是触龙这种可解释的推荐系统(下图(b)),能够以用户容易接受的方式(话家常),充分抓住用户心理(父母爱自己的小孩,应该为他们长远未来考虑),给出适当的例子(赵太后送公主出嫁)与用户沟通。研究发现,这样的系统不仅能够提升系统透明度,还能够提高用户对系统的信任和接受程度 、用户选择体验推荐产品的概率以及用户满意程度等等。
在这里插入图片描述
在这里插入图片描述
设计一个像触龙这样可解释的推荐系统是我们的终极目标。目前,这个方向进展如何呢?未来,有什么比较好的研究课题呢?下面,我来介绍一下可解释推荐的分类、推荐解释生成方法以及可解释推荐面临的机遇和挑战。

可解释推荐的分类

一般来说,可解释的推荐分为下图所示的三大类:以物品为媒介、以用户为媒介、以及以特征(属性)为媒介。
在这里插入图片描述
物品为媒介的推荐解释用一句话表述是“这个推荐物品和您喜欢的其他物品相似”。在赵太后的故事中,触龙用了类似的推荐解释: “派长安君做人质”这个推荐策略与赵太后曾经采用过的策略(送公主出嫁)相似。这类解释在各大网站上如亚马逊、Netflix等有较为广泛的应用。它的展现方式常常是一个曾经购买、评论或者浏览物品的列表,列表中的物品和目前推荐的物品比较相似。研究表明这类方法能够增加系统的被接收程度。但是这类推荐解释的问题是用户有时可能难以找到物品之间的关联,另外用户有时可能希望看到一些自己没有购买过的、不一样的物品。

用户为媒介的推荐解释用一句话表述是“跟您相似的用户都喜欢该推荐物品”。在赵太后的故事中,这个与赵太后相似的用户就是也宠爱小儿子的触龙。这类推荐解释展现形式多种多样,生成解释时也往往用到社交信息。微软研究员Amit Sharma等人对四种社交理由进行了用户测试,这四类理由是整体热度(2,612,211位Facebook 用户喜欢它)、朋友热度(您的朋友中有7人喜欢它)、好朋友(张三喜欢它)、好朋友及个数(张三和其他5位您的朋友喜欢它)。最终发现后两种解释方式效果对提升说服力效果最好。使用这两种解释方式时,选择一个正确的朋友非常重要。如果只是随机选择一个朋友,说服力反而会降低。以用户为媒介的推荐解释与以物品、特征为媒介的推荐解释相比,最能说服用户对推荐物品进行评估,但是对用户实际使用物品后喜爱程度影响比较小。如果推荐的物品用户不够喜欢,反而会降低用户的满意程度。

特征为媒介的推荐解释用一句话表述是“您可能喜欢推荐物品的这些特征”。在赵太后的故事中,触龙抓住了赵太后最关心的特征——子孙的长远利益——进行推荐,从而使得赵太后接受了推荐。这类推荐解释常见的表现形式是将推荐物品中用户感兴趣的主要特征进行列举(如下图)。研究表明这类推荐解释有助于用户准确判断是否喜欢推荐物品,与前两类推荐解释相比,用户对这类推荐的满意度更高。这类推荐需要判断物品特征以及用户对不同特征的感兴趣程度,从而找到最适合用于解释的特征,因此建模粒度更细,也是目前的研究热点。
在这里插入图片描述
除了上述三种推荐解释以外,还有结构化概览式推荐以及对话式推荐等。其中,结构化概览式推荐将推荐物品用有组织的、可视化的形式呈现给用户,让用户可以看到各个推荐物品的特性和分布,从而在充分了解以后做出挑选。对话式推荐是在与用户聊天时进行推荐、解释、收集用户反馈,有着较高的接受度,也可以很好地解决冷启动问题。这是一个新兴的研究方向,我们也在做一些尝试,将在后文进行讨论。

推荐解释生成方法

刚刚我们谈到了几类推荐解释,其中以特征为媒介的推荐解释建模粒度较细,模型也日趋成熟。接下来重点介绍一下这类推荐解释的生成方法。

生成基于特征的推荐解释时,关键是特征的提取。早期的方法借助一些显式的物品特征,例如事先确定的物品分类、关键词、以及标签信息。在挑选特征进行解释时,主要是综合两个指标:第一是用户对特征的感兴趣程度,第二是推荐商品与特征的相关程度。第一点需要非常了解用户心理,第二点需要对商品进行精确建模,综合两点考虑,才能像触龙一样击中用户内心。早期方法对这两者分别计算之后进行合并,从而找出推荐物品以及解释。这类方法的问题之一是特征的可描述性(Descriptiveness)可能不够。另外这些方法采用的推荐模型还比较简单,一些精巧的、复杂的推荐系统难以用这样的方法进行解释。

为了解决上面的问题,近期一些工作开始利用网上丰富的评论文本进行可解释性的推荐。他们的主要思想是从评论中抽取用户最感兴趣的物品特征,并且将这些特征加入到目前的推荐系统中进行统一建模。其中一个较新的方法是Explicit Factor Model(EFM)。如上图所示,这个方法首先利用词级别的情感分析找出用户评论中提到物品的显式特征(Explicit Features,如Screen、Earphone、Battery)及用户对这些特征的情感倾向(正面或者负面)。利用这个信息,可以构建用户-特征矩阵X以及物品-特征矩阵Y。这两个稀疏矩阵可以用三个低维矩阵U1、U2、V进行建模。这里V中每一行记录了一个显式特征的隐式表达(Latent Representations)。U1(U2)即记录用户(物品)与显式特征隐式表达之间的关系。除了显式特征以外,还有一些隐含特征(Hidden Factors)可能是评论中没有提到的,这些特征用额外的H1、H2矩阵表示。将U1、H1进行拼接就构成了用户与物品所有特征的隐式表达之间的关系,U2、H2也是类似的。该模型希望能够通过这些矩阵拟合用户-物品的评价矩阵A。
在这里插入图片描述
在这里插入图片描述

可解释推荐的机遇与挑战

作为推荐领域被探索得较少的一个方向,可解释推荐的很多方面值得研究与探索。目前,我们在考虑从下面三个方面进行研究。

解释含有深度神经网络的推荐模型。目前可解释推荐的系统往往是基于较浅层的图模型或者矩阵分解模型,对于含有深度神经网络的复杂、混合模型的解释能力还不够。我们在考虑借鉴对深层卷积神经网络进行解释、分析的技术,将复杂、高级的推荐系统升级为可解释的推荐。

利用知识图谱打通不同媒介之间的关联。现有的可解释推荐所生成的推荐解释往往只局限于以物品为媒介、以用户为媒介或者以特征为媒介中的某一种,对这三类媒介之间的关联挖掘得还不够。我们希望能够利用知识图谱,打通这三类媒介之间的关联,根据具体情况灵活选择其中最合适的媒介对用户进行推荐与解释。这样,我们还可以产生形式更丰富的推荐解释,例如将用户感兴趣的图片也进行展示。

结合生成模型进行对话式推荐。目前的推荐解释往往形式是预先设定、千篇一律的(如预先设定推荐解释是以用户为媒介的)。这样尽管也能根据用户心理举出一些例证,但是在沟通方式上还过于呆板,离触龙那样话家常式的推荐还有很大距离。如果能用生成模型让推荐系统“自创”一句通顺甚至高情商的话,就可以在与用户聊天的过程中进行灵活、多变地推荐解释了。我们团队已经与微软小冰合作,在这方面进行了一些尝试,为小冰生成音乐推荐解释。推荐过程如下图所示:
在这里插入图片描述
我们会从这几个方向出发,不断拓展可解释推荐的深度和广度。希望不久后的某一天,推荐系统都能像触龙那样厉害。

这篇关于推荐系统 | (3) 可解释推荐系统---身怀绝技,一招击中用户心理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/377641

相关文章

在Linux系统上连接GitHub的方法步骤(适用2025年)

《在Linux系统上连接GitHub的方法步骤(适用2025年)》在2025年,使用Linux系统连接GitHub的推荐方式是通过SSH(SecureShell)协议进行身份验证,这种方式不仅安全,还... 目录步骤一:检查并安装 Git步骤二:生成 SSH 密钥步骤三:将 SSH 公钥添加到 github

最新Spring Security的基于内存用户认证方式

《最新SpringSecurity的基于内存用户认证方式》本文讲解SpringSecurity内存认证配置,适用于开发、测试等场景,通过代码创建用户及权限管理,支持密码加密,虽简单但不持久化,生产环... 目录1. 前言2. 因何选择内存认证?3. 基础配置实战❶ 创建Spring Security配置文件

Linux系统中查询JDK安装目录的几种常用方法

《Linux系统中查询JDK安装目录的几种常用方法》:本文主要介绍Linux系统中查询JDK安装目录的几种常用方法,方法分别是通过update-alternatives、Java命令、环境变量及目... 目录方法 1:通过update-alternatives查询(推荐)方法 2:检查所有已安装的 JDK方

Linux系统之lvcreate命令使用解读

《Linux系统之lvcreate命令使用解读》lvcreate是LVM中创建逻辑卷的核心命令,支持线性、条带化、RAID、镜像、快照、瘦池和缓存池等多种类型,实现灵活存储资源管理,需注意空间分配、R... 目录lvcreate命令详解一、命令概述二、语法格式三、核心功能四、选项详解五、使用示例1. 创建逻

使用Python构建一个高效的日志处理系统

《使用Python构建一个高效的日志处理系统》这篇文章主要为大家详细讲解了如何使用Python开发一个专业的日志分析工具,能够自动化处理、分析和可视化各类日志文件,大幅提升运维效率,需要的可以了解下... 目录环境准备工具功能概述完整代码实现代码深度解析1. 类设计与初始化2. 日志解析核心逻辑3. 文件处

golang程序打包成脚本部署到Linux系统方式

《golang程序打包成脚本部署到Linux系统方式》Golang程序通过本地编译(设置GOOS为linux生成无后缀二进制文件),上传至Linux服务器后赋权执行,使用nohup命令实现后台运行,完... 目录本地编译golang程序上传Golang二进制文件到linux服务器总结本地编译Golang程序

Spring Boot spring-boot-maven-plugin 参数配置详解(最新推荐)

《SpringBootspring-boot-maven-plugin参数配置详解(最新推荐)》文章介绍了SpringBootMaven插件的5个核心目标(repackage、run、start... 目录一 spring-boot-maven-plugin 插件的5个Goals二 应用场景1 重新打包应用

Linux系统性能检测命令详解

《Linux系统性能检测命令详解》本文介绍了Linux系统常用的监控命令(如top、vmstat、iostat、htop等)及其参数功能,涵盖进程状态、内存使用、磁盘I/O、系统负载等多维度资源监控,... 目录toppsuptimevmstatIOStatiotopslabtophtopdstatnmon

Knife4j+Axios+Redis前后端分离架构下的 API 管理与会话方案(最新推荐)

《Knife4j+Axios+Redis前后端分离架构下的API管理与会话方案(最新推荐)》本文主要介绍了Swagger与Knife4j的配置要点、前后端对接方法以及分布式Session实现原理,... 目录一、Swagger 与 Knife4j 的深度理解及配置要点Knife4j 配置关键要点1.Spri

Qt QCustomPlot库简介(最新推荐)

《QtQCustomPlot库简介(最新推荐)》QCustomPlot是一款基于Qt的高性能C++绘图库,专为二维数据可视化设计,它具有轻量级、实时处理百万级数据和多图层支持等特点,适用于科学计算、... 目录核心特性概览核心组件解析1.绘图核心 (QCustomPlot类)2.数据容器 (QCPDataC