【数据产品案例】如何将知识图谱特征学习应用到推荐系统?

2024-09-06 04:18

本文主要是介绍【数据产品案例】如何将知识图谱特征学习应用到推荐系统?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

案例来源:@AI科技大本营
案例地址: https://mp.weixin.qq.com/s/_LuF4d0X_oHKuweo7Bt1Wg

1. 知识图谱应用到推荐系统中的三种方式
1)依次学习:先训练知识图谱模型,得到实体和实体关系的向量表示;再将该向量作为推荐模型的输入
2)联合学习:将知识图谱和推荐系统的目标函数结合,使用端到端的方式训练
3)交替学习:将知识图谱和推荐系统的训练放在一起,使用多任务学习的框架进行训练

2. 依次学习 - Deep Knowledge-Aware Network (DKN)
1)引入知识图谱特征:
a. 实体连接:将文中发现的词汇与实体进行匹配
b. 知识图谱构建:根据匹配的实体,从知识图谱中抽取出子图
c. 知识图谱特征学习:使用知识图谱特征学习算法(如TransE)学习实体的向量表示
d. 实体的上下文实体特征:一个实体e的上下文是实体的一跳近邻,e的上下文表示就是一跳近邻特征的平均值
2)构建推荐模型
a. 基于卷积神经网络的文本特征提取:新闻标题词向量、实体向量、实体上下文向量作为多通道,在CNN框架下进行融合
b. 基于注意力机制的用户历史兴趣融合:在判断用户对当前新闻的兴趣时,使用注意力网络给用户历史记录分配不同的权重
3)依次学习的优势在于将知识图谱训练与推荐系统训练分离,前者更新少、训练开销大。但缺点也来源于此,无法端到端训练,知识图谱的训练并不是为了推荐目标而来,不一定适应特定的推荐任务

3. 联合学习 - Collaborative Knowledge base Embedding (CKE)
1)对于结构数据(如导演、电影名):采用TransR进行学习,可以得到实体的特征表示
2)对于文本数据:采用去燥自编码器抽取向量化特征
3)对于图像数据:采用卷积-反卷积自编码器抽取向量化特征
4)将以上三种知识学习的目标函数与协同过滤的目标函数结合,得到以下联合损失函数
5)使用梯度下降法训练

4. 联合学习 - Ripple Network
1)基本思想:用户的兴趣以历史记录中的实体为中心,向外扩散并逐渐衰弱
2)过程【看不懂】:

5. 交替学习 - Multi-task Learning for KG enhanced Recommendation (MKR)
1)出发点:推荐算法中的物品和知识图谱中的实体存在重合,两者的学习存在相关性,两者信息可以互补
2)框架如图:
a. 左侧推荐任务的输入是用户和物品,输出是点击概率
b. 右侧知识图谱学习的任务输入是三元组和关系表示,输出是特征表示
c. 中间设计了交叉特征共享单元:

3)优势:知识图谱特征学习模块在下一次训练中可以继续使用,不用像联合学习一样从头开始学习

这篇关于【数据产品案例】如何将知识图谱特征学习应用到推荐系统?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Qt QCustomPlot库简介(最新推荐)

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

Java内存分配与JVM参数详解(推荐)

《Java内存分配与JVM参数详解(推荐)》本文详解JVM内存结构与参数调整,涵盖堆分代、元空间、GC选择及优化策略,帮助开发者提升性能、避免内存泄漏,本文给大家介绍Java内存分配与JVM参数详解,... 目录引言JVM内存结构JVM参数概述堆内存分配年轻代与老年代调整堆内存大小调整年轻代与老年代比例元空

深度解析Java DTO(最新推荐)

《深度解析JavaDTO(最新推荐)》DTO(DataTransferObject)是一种用于在不同层(如Controller层、Service层)之间传输数据的对象设计模式,其核心目的是封装数据,... 目录一、什么是DTO?DTO的核心特点:二、为什么需要DTO?(对比Entity)三、实际应用场景解析

Python中re模块结合正则表达式的实际应用案例

《Python中re模块结合正则表达式的实际应用案例》Python中的re模块是用于处理正则表达式的强大工具,正则表达式是一种用来匹配字符串的模式,它可以在文本中搜索和匹配特定的字符串模式,这篇文章主... 目录前言re模块常用函数一、查看文本中是否包含 A 或 B 字符串二、替换多个关键词为统一格式三、提

Go语言中nil判断的注意事项(最新推荐)

《Go语言中nil判断的注意事项(最新推荐)》本文给大家介绍Go语言中nil判断的注意事项,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1.接口变量的特殊行为2.nil的合法类型3.nil值的实用行为4.自定义类型与nil5.反射判断nil6.函数返回的

Java MQTT实战应用

《JavaMQTT实战应用》本文详解MQTT协议,涵盖其发布/订阅机制、低功耗高效特性、三种服务质量等级(QoS0/1/2),以及客户端、代理、主题的核心概念,最后提供Linux部署教程、Sprin... 目录一、MQTT协议二、MQTT优点三、三种服务质量等级四、客户端、代理、主题1. 客户端(Clien

MyBatisPlus如何优化千万级数据的CRUD

《MyBatisPlus如何优化千万级数据的CRUD》最近负责的一个项目,数据库表量级破千万,每次执行CRUD都像走钢丝,稍有不慎就引起数据库报警,本文就结合这个项目的实战经验,聊聊MyBatisPl... 目录背景一、MyBATis Plus 简介二、千万级数据的挑战三、优化 CRUD 的关键策略1. 查

python实现对数据公钥加密与私钥解密

《python实现对数据公钥加密与私钥解密》这篇文章主要为大家详细介绍了如何使用python实现对数据公钥加密与私钥解密,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录公钥私钥的生成使用公钥加密使用私钥解密公钥私钥的生成这一部分,使用python生成公钥与私钥,然后保存在两个文

mysql中的数据目录用法及说明

《mysql中的数据目录用法及说明》:本文主要介绍mysql中的数据目录用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、版本3、数据目录4、总结1、背景安装mysql之后,在安装目录下会有一个data目录,我们创建的数据库、创建的表、插入的

Navicat数据表的数据添加,删除及使用sql完成数据的添加过程

《Navicat数据表的数据添加,删除及使用sql完成数据的添加过程》:本文主要介绍Navicat数据表的数据添加,删除及使用sql完成数据的添加过程,具有很好的参考价值,希望对大家有所帮助,如有... 目录Navicat数据表数据添加,删除及使用sql完成数据添加选中操作的表则出现如下界面,查看左下角从左