推荐系统:基于知识图谱的推荐策略和思考
知识图谱的背景
相信大家平常基本已经习惯使用音乐APP听音乐,跟大部分的90后一样,我从最开始的初高中的从各种音乐网站下载音乐(那时候特别喜欢九天音乐网,因为歌曲的种类很丰富),到大学初期音悦台(因为那时候对歌曲MV的观看很执着)和百度音乐APP(因为那个时候百度搜索引擎的强烈推荐,用着用着就习惯了),到后来的虾米音乐和多米音乐(两者都是因为APP很清新简单,也因为当时使用了一款魅族的备用机的固装APP使用下来了),再到后来的网易云音乐(因为歌单推荐和歌评,还有朋友的强力安利),再到现在的QQ音乐(因为内容版权和多样化推荐,就是想听的歌曲大部分都有)。
这个过程你会发现,除了从PC到Mobile的转变之外,其实就是用户对内容(歌曲版权丰富度、社区、歌单和歌评)的偏好,以及就是基于一定策略的发现和推荐,能够让用户有更加强烈的迁移意愿和对APP的偏好粘性。
在使用音乐APP的场景下,我有发现、了解、和关注一个歌手并且视听TA所有音乐的习惯,最近在使用QQ音乐的情况下,我发现了一个尴尬又惊喜的情况,在歌手详情页的歌曲清单下,增加了TA作词和创曲的歌曲。虽然有时候,会比较讶异于内容并不是演唱者的作品,但这,其实是一种发现,也是一种推荐,背后基于的原理,就是基于歌曲的知识图谱。
过去我们的基于用户和物品协同推荐、基于内容和标签的推荐、基于热点和关注的推荐…以及各种策略的混合模型结果的排序列表。推荐系统领域对知识图谱的研究并不完善,只是借助知识图谱整合不同结构的数据。在推荐系统的大数据环境下,首先从海量数据中进行知识挖掘,对用户和有关项目提取特征属性,然后分别计算不同用户、不同项目以及用户与项目之间的准确的关联性,最后依据得出的关联性知识进行准确推荐。在构建推荐系统的过程中,知识图谱有不同的表现形式,通过对已有研究和实践的总结来看,可以从知识图谱的三个主要分类中总结推荐方法,分别为基于本体的推荐生成、基于开放链接数据(LOD)的推荐生成、基于图嵌入的推荐生成。对比不同的推荐策略,我们可以发现基于知识图谱的推荐策略,还是具有不少的优点:

——取自推荐系统实践.pdf P61
菜谱、电影、音乐… 这些领域都是知识图谱可以强力应用的场景。财经领域,知识图谱是目前研究最多,因为相对来说数据相对比较结构化,也是应用最广泛的场景。
利用知识图谱可以获取丰富的语义信息,在一定程度上可以弥补推荐系统的数据稀疏性问题。比如可以利用异构信息网络对知识图谱中的实体的属性进行关系表示,且在推荐方面选择模型算法中的贝叶斯算法来解决实体推荐问题。还可以将知识图谱与矩阵分解进行融合,实现分解矩阵中的语义信息的补充,提高分解矩阵的推荐算法的性能。将知识图谱和循环神经网络进行融合形成循环知识图谱,通过实体对语义进行建模,使得实体和关系通过学习嵌入到低维空间。并且额外引入一些辅助信息作为输入,丰富了实体之间的关联,提高推荐系统的性能。
知识图谱的构建
如图所示:一般来说,构建一个业务领域的知识图谱有以下五个步骤:
- 知识抽取
- 知识融合
- 知识建模
- 知识存储
- 知识表示
知识图谱的构建和应用涉及到大量的技术。从图中可以看出,虚线框内主要是知识图谱的一个构建过程。
首先通过对外部结构化、非结构化和半结构化的数据进行抽取,然后对抽取的实体、关系和属性这个三元组进行知识表示。知识表示通过某种技术对知识元素进行更精确的表达,并通过知识融合对异构数据进行消歧,对知识的实体、关系和属性进行融合,消除知识信息的歧义,从而形成一个具有较高质量的知识库。在己有的知识库的基础上对知识不断的更新和扩充推理,进一步挖掘隐藏的知识点。接下来,我们将介绍信息提取,知识融合,知识建模,知识存储和知识表示。
1 知识抽取
信息抽取抽取的知识都是事实的、清楚的数据,由于这些数据来源不同,所以我们在做信息抽取时得采取不一样的抽取方法。在面对结构化数据时,我们一般采取的方法是图映射和D2R转换。在面对半结构化的数据时我们一般利用包装器的方法。在面对纯文本信息时,直接采用信息抽取的方法。所有的数据在进行信息抽取时都包括实体,关系和属性三个要素。通过对信息的抽取过滤获得一系列高质量的知识元素,为知识图谱的构建奠定了良好的基础。
1.1 实体抽取
实体提取,也称为实体学习(named entity learning)或命名实体识别(named entity recognition),是指从原始数据语料库中自动识别命名实体。因为在知识图谱中的知识元素都是由两个实体和一个关系组成的三元组,所以需要指出新抽取的事实是否具有某个实体的部分。目前,根据实体提取方法,可将其分为四类:基于百科站点或垂直站点的提取,基于规则和字典的统计,基于统计机器学习和面向开放域的提取方法。基于百科全书的站点提取或垂直站点提取可以提取到某一特定领域的实体,例如网易云音乐,豆瓣电影等,是一种常见且基本的提取方法。基于规则和字典的方法通常是根据既有的规则来抽取实体,对专家知识的依赖性较高。基于统计机器学习方法主要通过机器学习中的监督学习与专家规则相结合来训练原始语料,进而使用训练后的模型识别实体。面向开放域的提取方法主要根据少量的数据去训练处模型,然后使用该模型去命名新的实体,适用于大型Web语料库。
1.2 关系抽取
实体抽取只是得到离散的实体存在,实体间的关联并没有建立起来,而关系抽取可以很好的解决实体语义链接的问题。实体之间通过关系进行关联,才能建立起网状的知识结构。常用的关系抽取方法有基于规则和模板的方法,基于统计机器学习的方法和面向开放域的方法。目前采用最多的抽取方法是基于统计机器习的方法。基于机器学习的关系抽取方法按照有无标注好的训练语料可分为有监督学习、无监督学习和弱监督学习方法。有监督学习的关系抽取方法是通过在标注完的训练数据集中学习模型,并用来学习同类型测试集的关系。根据处理语句方式的不同分为基于特征向量得到方法和基于核函数方法。无监督学习的关系抽取方法不需要己标注的语料支撑,可以自动的提取实体关系。它的过程包含了实体聚类和关系抽取。弱监督学习又称远程监督,它不要像有监督那样完全依赖标注的语料信息,也不像无监督那样完全不依赖标注的语料信息,而是通过少量的已标注的语料信息来来作为引子,来学习更多的无标注的语料的实体关系。
1.3 属性抽取
属性抽取的任务是从各种数据源中提取目标实体的属性内容,并为每个原始语义类构造属性列表。实体的属性可以看作是连接实体与属性值之间的关系。因此,在实际应用中,一些学者将属性问题转化为关系提取问题。常用的属性提取方法包括从百科全书站点中提取,对垂直站点屮的包装器进行汇总,从Web表中提取以及使用手动定义或自动生成的模式从句子和査询日志中提取。
2 知识融合
在信息抽取中,我们完成了对异构数据源的实体和关系的获取。但是这些抽取来的实体和关系包含大量的冗余和错误的信息,且数据之间的关系扁平,缺乏逻辑。为了对这些数据进行清理,我们需要对来自不同数据源抽取的信息进行整理融合。知识融合使来自不同数据源的知识能够将异构数据集成到同一框架中,对冗余、错误和具有歧义的概念进行消除,从而确保知识的质量。在知识融合的整个过程中,主要包括实体链接和知识合并两个部分。
2.1 实体链接技术
实体链接(entity linking)是指对于从文本中抽取得到的实体对象,将其链接到知识库中对应的正确实体对象的操作。实体链接的基本思路是通过对已抽取的实体对象进行无歧义的指向知识库中目标实体的过程。例如,苹果,当网站查询苹果时,会发现苹果有两种解释,一种是自然界食用的水果,另一种是电子产品。知识融合的过程主要有对抽取的数据进行实体指向,对存在不同的实体进行消歧和对正确识别的实体链接到知识库中对应实体区域。
- 实体消歧
实体消歧可以通过练习上下文信息帮助实体消除一词多义的问题,聚类消歧是实体消歧中最常用的一种方法,其关键在于怎样定义实体对象与指称项之间的相似性。常用的方法有:空间向量模型、语义模型、社会网络模型和百科知识模型。空间向量模型是将文本的词义信息用空间向量的方法来做处理,并以空间向量中求得的相似性来表达语义的相似性。语义模型与空间向量模型类似,不同之处在于它既包含了词袋模型,也包含了语义的一些特征。社会网络模型是以聚类的思想来运行的,在大环境中,某个指称项的具体含义将会由与它相关联的实体对象决定的。百科知识模型主要是通过像每个实体分配相应的单独网页,并提供指向其它实体的的超链接。它们通过对这些链接进行指称项之间的相似度计算。
- 实体对齐
实体对齐也称为实体匹配,它是异构数据源中的实体找到对应物理世界的同一实体的过程。通过判断两个及以上的实体是否为同一实体,将属于同一实体聚集在一起,它可以消除异构数据中的指代不明、异构冲突的问题,实现多个实体的对齐和融合。其中,对齐算法可以分为成对实体对齐和集体实体对齐。
2.2 知识合并
对抽取的异构数据源的实体进行处理整理后,接下来需要对实体、关系和属性等进行合并,知识合并通常包括外部知识库的合并和关系型数据库的合并。
1)外部知识库合并
将外部知识库融合到现有的知识库中,一个是融合到数据层,另一个是融合到模式层。数据层主要是实体的指称、关系和属性等的融合,模式层主要是将新的本体融入到已有的本体库中。
2)关系型数据库合并
在融合关系型数据库时一般选择资源描述框架(RDF)作为数据模型,将历史数据融入到知识图谱中,这一过程称为RDB2RDF,其实质就是把关系型中的数据转换为RDF的三元组数据。
3知识建模
在构建知识图谱时,我们不仅要对异构数据源的信息进行抽取处理,还需要构建相应的知识模型。知识建模将会对抽取的知识的实体中的概念和关系进行规范化的表示。知识图谱谱包含有模式层和数据层。模式层用于存储经过提炼了的高质量的知识,它称为本体(Ontology)或架构(Schema),是知识图谱的核心。数据层主要用于存储具体的数据,比如某个实例的具体实体、关系和属性等。
知识建模的质量非常重要,知识图谱的质量直接受其影响。在本体库构建过程中存在两种构造方法,一种是自顶向下的构造方法,另一种是自底向上的构建方法。自底向上的方法通常用于构建开放类型的知识图谱的本体库,例如Yago、BabeNet、Zhishi.me等知识图谱。自顶向下的方法通常适用于领域知识图谱本体库的构建。确定或控制领域知识图谱中涉及的知识的概念和范围,并且领域知识图谱中要求知识的高精度。自上而下的方法首先定义知识图的本体和数据模式,然后将实体添加到知识库中。
目前,市场上有数十种本体编辑器,但使用较多的本体编辑器是Protégé器。Protégé是由美国斯坦福大学开发的基于Java语H的开源软件。它主要用于在语义网中构建本体。Protégé提供了概念类、关系、属性和本体实例的构造,并屏蔽了特定的本体描述语言。用户只需要在概念层中构建领域本体模型。
4知识存储
知识图谱中的初始数据来源多样,其主要包含结构化数据、半结构化数据和非结构化数据三种异构数据源。知识图谱中一般都以RDF框架的三元组SPO形式来表示知识事实。在实际应用中,根据不同的存储方式,知识图的存储可以分为两种。一种是基于表结构,另一种是基于图数据库。基于表结构的存储可以使用关系型数据库。
5知识表示
知识表示就是对知识的一种描述。它的目的是通过接近人类自然语言的方法来模拟人脑的推理过程,以便能够更好的添加知识的类、实体和关系。
基于知识图谱的推荐系统
最初知识图谱的提出是为了提高搜索引擎的搜索效率,随着知识图谱技术的发展,知识图谱的应用也越来越多。知识图谱与推荐系统的结合也成了近年来关于推荐算法的一个研究热点。本章节将介绍在推荐系统中使用知识图谱的几种方式。
1 基于知识图谱的推荐系统
知识图谱一般是作为辅助信息加入到推荐系统中去。在推荐算法中引入知识图谱数据,相当于引入了语义关联关系、各种各样的知识实体之间的关系,这一方面使得推荐能够从语义的角度上挖掘用户兴趣点,另一方面也使推荐结果更加发散,避免了推荐结果的单一。
除此之外,引入知识图谱技术的推荐模型所得到的推荐结果,一般来说,可以在知识图谱中找到与用户的历史记录或者其他用户信息之间的关联关系。这样的推荐结果是可解释的、有依据的。比如”NYR’s Jim Stewart:Apple, Disney shouldhave entered streaming partnership”这条新闻中可以提取出“Apple”、“Disney”两个实体,通过知识图谱中关联关系我们可以找到“Apple”和“Disney”有关的,或者“Apple”和“Disney”在知识图谱中的邻居实体有关的新闻推荐给用户。这样的推荐结果就考虑到了新闻与新闻之间的知识层面的联系,并且知识图谱中的关系是基于客观现实的,即推荐结果是有据可依的、可解释的,这样用户对推荐结果会更加容易信赖。
现有的基于知识图谱的推荐系统使用知识图谱的方法主要有三种:
(1)基于嵌入的方法(Embedding-based Methods)直接使用知识图谱特征学习得到的低维向量来丰富作为用户和项目(item,这里指被推荐的事物),将知识图谱中语义关系带到推荐算法中;
(2)基于路径的方法(Path-based Methods)构建了一个“用户-项目”图,利用图中实体的连接模式进行推荐,并且利用用户和项目的连接性相似性来增强推荐;
(3)统一的方法(Unified Methods)是上述两种方法的统一,是将实体和关系的语义表示和连通性信息结合起来应用的方法。统一的方法是基于嵌入传播的思想。
这些方法以 KG 中的连接结构为指导,对实体表示进行细化。这三种方法中,基于嵌入的方法应用更为广泛,这也是很多实践生产的重点方向。
2 知识图谱特征学习在推荐中的应用
以何时进行知识图谱特征学习作为依据将基于知识图谱的推荐模型的学习方式分为了三种,分别是依次学习、联合学习以及交替学习。
(1)依次学习
依次学习方式将知识图谱特征学习和推荐模型训练分离开来,知识图谱特征学习在前,推荐模型训练在后,并将前者的输出(即实体和关系对应的低维向量)作为后者的辅助信息。这种方式的优势在于在知识图谱未更新的情况下,只需要
进行一次特征学习得到低维向量,而这些低维向量可以在推荐模块重复使用,从而节省时间上的开销。
(2)联合学习
本文中提到的联合学习是一种端到端的训练方式,即区别于多模块或者多任务的训练方式,使用单个模型来完成深度学习或者机器学习任务,但在降低了工程复杂度的同时也降低了模型的可解释性。知识图谱特征学习和推荐算法联合学习是把 KGE 与算法的目标函数相结合。两者在训练过程中相互监督,并实时反馈,相互进行优化。但这种学习方式开销较大,学习成本也高。
(3)交替学习
交替学习是将知识图谱特征学习和推荐模型训练看作两个任务,在时空上交替执行。一般来说,通过使用多任务学习框架来实现交替学习。交替学习的时间空间的开销是介于依次学习和联合学习的。
综上所述,三种学习方式各有优缺点,均有不同的适用场景。知识图谱的大小、更新速度等以及场景的侧重点等都会影响方法的选择。
几个领域知识图谱
最初知识图谱的提出是为了提高搜索引擎的搜索效率,随着知识图谱技术的发展,知识图谱的应用也越来越多。知识图谱与推荐系统的结合也成了近年来关于推荐算法的一个研究热点。这里介绍在推荐系统中使用知识图谱的几种方式。
1 财经
(1)部分知识图谱全景
(2)雄安概念和国企混改概念
(3)中国平安和万科的关系:
2 饮食
(1)饮食知识图谱类-关系
(2)饮食知识图谱-示例
3 电影
(1)无间道-知识图谱
(2)吴亦凡的个人图谱
知识图谱在内容推荐中的应用
本文所提出的基于知识图谱的个性化新闻推荐系统所面向的主要是金融类新闻资讯平台的用户。个性化的推荐系统为用户聚焦兴趣点,推荐其可能会浏览的新闻。一种推荐方式是大众化的热点推荐,即从近期新闻中筛选出点击量、热度最高的新闻推荐给用户,另一种推荐方式是个性化的推荐,即根据用户在新闻资讯平台上的已经产生的用户行为,比如浏览新闻的历史记录、新闻的阅读时长、评论等等,推荐系统通过机器学习或者深度学习的算法模型为用户推荐新闻。用户对推荐新闻的感兴趣与否作为推荐模型的一个度量指标或者优化参数反馈到系统中。
目前的新闻推荐系统存在了一些这样或那样的的问题,而这里设计实现的新闻推荐系统就需要解决或者优化这些问题。基于此,新闻推荐功能的主要需求如下:
(1)要提供个性化的推荐结果。这是推荐系统最基本的需求;
(2)要及时推荐突发新闻,或者说解决推荐新闻的时间滞后问题,使得推荐结果符合新闻对时间敏感的要求;
(3)解决冷启动的问题,包括新文章的冷启动和新用户的冷启动。
(4)新闻的推荐结果具有较高的准确性,能够保证用户近期未浏览过并有阅读的兴趣;以及推荐结果具有可解释性,可提高用户推荐系统的信赖。推荐系统在选择合适的机器学习或者深度学习的算法模型之后,将收集的原始数据进行处理并得到模型的输入数据,在经过模型训练之后,得到最优模型并将其保存下来用于预测普通用户喜欢新闻的可能性或者概率。
下面是从系统架构、功能模块和推荐算法将这个推荐系统进行概况性描述:
(1)系统架构
(2)功能模块
(3)推荐算法
出于缩短推荐模型预测时间的考虑,本文将推荐算法分为候选集生成、候选集排序两个部分。生成新闻候选集部分依据不同的召回策略从新闻池中选择用户可能感兴趣的新闻候选集,使用较为简单的推荐模型,能快速的从新闻数据集合中生成一个小的新闻候选集;候选集排序部分使用较为复杂的推荐模型,对上一部分生成的新闻候选集中的新闻进行排序,并最终确定用户的推荐新闻列表。新闻推荐算法的推荐策略如下图所示:
常见的有协同过滤(CF,Collaborative Filtering)、因子分解机(FM,FactorizationMachines)等。本文中使用了以下几个召回模型:
1)CF 是一种应用最广泛的推荐算法,主要有基于用户的 CF 和基于物品的 CF,是基于用户-item 矩阵进行推荐,但当矩阵稀疏时,推荐效果大大折扣,所以 CF对用户历史行为数据依赖较重,不适用于新用户。
2)HOT 是指热点推荐,即推荐用户交互热度最高的新闻。
3)基于内容的推荐方法主要通过比较用户过去喜欢的内容与当前的新闻记录的相似度来进行推荐,只要有历史行为数据即可,对用户历史行为数据依赖不大,可用于刚使用不久的新用户,或者隔了非常久的时间再次使用的用户。在候选生成阶段,按照规则为不同召回模型分配相应的权重,在通过不同的召回模型生成不同的新闻候选集后,将这些新闻候选集合并。合并的规则是每次从权重最大的模型中取一条数据,降低该模型对应的权重。重复这个过程直至合并完成。然后将合并完成的新闻候选集与用户历史数据进行比对,过滤掉用户看过的新闻。最终确定候选生成阶段的新闻数据集。
(2)候选排序
候选排序部分将对候选新闻集使用基于知识图谱的排序方法来进行排序,注重的是推荐结果的精准。本文在第三章节进行了基于知识图谱特征学习的推荐方法的的理论分析和实证研究,最终采用了 DKN 算法作为排序策略。候选排序模块需要先训练好一个推荐模型。并处理好排序过程中需要的数据,到时候直接读取。
当新闻候选集生成之后,系统开始进行候选排序工作,首先会读取各种特征文件,通过已经训练好的排序模型对目标新闻的点击率进行评估。排序阶段的模型将对从召回阶段得到的新闻记录进行重新打分,最终选出 Top k 个记录,k 值根据实际情况而定。候选排序子模块设计如下图所示:
附:基础评价指标
网站在提供推荐服务时,一般是给用户一个个性化的推荐列表,这种推荐叫做TopN推荐。TopN推荐的预测准确率一般通过准确率(precision)/召回率(recall)度量。
令R(u)是根据用户在训练集上的行为给用户作出的推荐列表,而T(u)是用户在测试集上的行为列表。那么,推荐结果的召回率定义为:
推荐结果的准确率定义为:
U为用户集。
覆盖率(coverage)描述一个推荐系统对物品长尾的发掘能力。覆盖率有不同的定义方法,最简单的定义为推荐系统能够推荐出来的物品占总物品集合的比例。假设系统的用户集合为U,推荐系统给每个用户推荐一个长度为N的物品列表R(u)。那么推荐系统的覆盖率可以通过下面的公式计算:
对推荐系统中所采用的推荐算法的效果和性能,可通过以下常见的推荐系统评价指标来衡量:
(1)F1 score
F1 分数是推荐算法的评价指标之一。它被定义为精确率和召回率的调和平均数,能够更公平的反应推荐算法的效果。F1 分数的计算见式:
precision 表示精确率,recall 表示召回率,这两者的计算都与混淆矩阵有关。
(2)AUC
AUC(Area Under Curve)是指 ROC 曲线下与坐标轴围成的面积,取值范围在0.5 和 1 之间。其中,ROC 曲线(Receiver Operating Characteristic Curve)可用于评价模型的预测能力,是以 TP rate为纵坐标,TF rate为横坐标。
一般来说,推荐算法的 AUC 值越大,真实性越高,泛化能力越好。
把 AUC 值和 F1 分数综合起来对推荐结果进行评估,可以体现了推荐系统排序结果的优劣。
(3)其它指标
除了上述两个指标外,还有一些其它常见评价指标,比如平均绝对误差(MAE)、均方误差根(RMSE)、标准化平均误差(NMAE)、覆盖率(Coverage)等等统计学的计算指标,以及预测准确度、分类准确度和排列准确度等指标。
版权声明
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处。如若内容有涉嫌抄袭侵权/违法违规/事实不符,请点击 举报 进行投诉反馈!
