来源:《 计算机科学与应用》 ,作者程静文等

关键词: 推荐系统;知识图谱;深度神经网络

摘要:

摘要: 针对传统协同过滤存在的稀疏性和冷启动问题,通常使用深度神经网络(DNN)构建融合知识图谱和推荐系统的推荐任务。但目前的方法未曾考虑特征间的低阶线性关系,虽可加入因子分解机(FM),但不同的特征对模型的贡献不同,FM可能会因所有特征交互设置相同的权重而受到阻碍;DNN解决知识图谱这种具有不规则、可扩展、多重结构特性的数据结构不具普适性。针对以上问题,提出MKAFG模型,推荐部分加入具有注意力机制的FM,通过注意力网络区分不同特征交互的重要性,使FM提取到对目标预测起到重要作用的一阶、二阶线性交互特征。知识嵌入部分使用图卷积神经网络(GCN),提高推荐系统推荐效果。实验结果表明,MKAFG在MovieLens-1M数据集上的推荐效果优于主流推荐模型。

1. 引言

推荐系统旨在解决信息爆炸问题并解决用户的个性化需求。目前使用的协同过滤推荐算法使用用户–物品交互矩阵存在稀疏性和冷启动等问题。因此,通常在推荐系统中加入辅助信息来提高推荐性能。本文将知识图谱作为辅助信息,因其包含丰富的实体和关系。目前经常使用的知识图谱包括:NELL1、DBpedia2、Google Knowledge Graph3和Microsoft Satori4。由于知识图谱高维性和异构性,使用知识图谱嵌入(Knowledge Graph Embedding, KGE)将知识图谱中的实体和关系映射到低维向量中,并保持其原有的语义和结构 [1]。

文献 [2] 提出了CKE模型,将结构化、文本、视觉等知识输入到贝叶斯框架中,但推荐部分和知识嵌入部分在贝叶斯框架下是松散耦合的 [3],因此知识图谱对提高推荐系统的推荐效果起到的辅助性不太明显。文献 [4] 设计了基于内容的深度知识感知网络DKN,其结合了实体嵌入和文字嵌入进行新闻推荐。但其只针对文本数据,使用场景受限,也无法做到端到端的训练。文献 [5] 设计了RippleNet记忆网络的类似模型,在知识图谱中传播用户的潜在偏好,探索分级兴趣,但关系的嵌入矩阵很难捕捉关系的重要性。文献 [6] 设计了一个通用的端到端的深度推荐框架MKR,通过交叉压缩感知单元让推荐模块和知识嵌入模块进行交替学习,通过知识图谱提高推荐系统的性能。但在推荐过程中只考虑到了特征间的高阶非线性关系;在知识嵌入过程中,深度学习虽能够学习到更高效的特征与模式,但处理图数据结构不具普适性,使用深度神经网络存在一定的限制。

基于上述背景,本文的主要贡献如下:

a) 基于知识图谱的思想提出了基于注意力分解机和图卷积神经网络的知识图谱的多任务推荐模型(Multi-Task Recommendation of Knowledge Graph Based on Attention Factorization Machine and Graph Convolution Neural Network, MKAFG);

b) 本文将加入Attention [7] 思想的因子分解机(Factorization Machines, FM)引入到深度推荐模型中,Attention机制对目标有用的特征赋予更高的权重,提取对目标预测起到重要作用的低阶线性特征交互。

c) 使用图卷积神经网络(Graph Convolutional Networks, GCN) [8] 对知识图谱进行的知识嵌入,解决深度学习模型处理图数据结构不具有普适性的问题。

2. 相关理论

2.1. 基于因子分解机的深度神经网络推荐模型

在推荐领域中,对辅助信息进行One-hot编码时,会带来数据稀疏问题,而因子分解机(FM) [9] 是一种较好的特征组合的方法来构建新特征 [10]。FM只能构建特征之间的低阶线性关系。深度神经网络具有学习复杂特征的交互潜力,使用多层感知机(MLP) [11] 实现高阶非线性的特征组合,但无法实现低阶线性特征组合。针对以上Cheng等人提出了Wide & Deep [12],在FM的基础上引入了深度神经网络(Deep Neural Network, DNN),加强模型的非线性能力,但Wide & Deep没有将二阶交叉特征的信息完全表征出来,造成DNN部分学习更高阶交叉信息效率低下。因此,Xiang等人提出NFM [13],使用双向交互池结构对二阶交叉信息进行处理,使高阶交叉特征的信息能更好的被DNN学习。Guo等人提出了DeepFM [14],FM和Deep分别进行特征间低阶线性和高阶非线性组合,提高训练效果。为了提高预测性,阿里提出了融合Attention机制的Det Interest Network,在模型嵌入层和拼接层加入Attention单元,根据特征的贡献程度调整不同的特征权重,提高预测性 [15]。

本文提出将Attention机制的FM融入到基于知识图谱的推荐算法中,将具有Attention机制的FM与DNN相结合运用到推荐模块进行推荐。

2.2. 基于知识图谱的特征表示学习

知识图谱表示学习 [16],是知识图谱研究的重点。Mikolov等人提出了word2vec词表示学习模型,并发现词向量空间存在平移不变现象 [17]。针对上述的启发,Bordes等人提出了TransE [18] 模型,其便于计算、参数少,但TransE无法处理知识图谱复杂的实体和关系的建模。后人依次提出TransH [19]、TransR [20]。但这些模型虽然在低维空间中可以重构出原有的网络结构,但学习到的表征无法进一步学习。网络表示学习,代表有深度神经网络、卷积神经网络等。深度学习虽能够学习到更高效的特征与模式,但图数据结构,具有不规则、多重结构、可扩展性等特点,因此知识表示过程中深度神经网络存在一定的限制。

本文使用图卷积神经网络(GCN)对知识图谱进行嵌入。通过给边和节点赋予特征,不仅可以学习到知识图谱自身的关系和特征,在卷积层传播过程中,节点会接受邻居节点的信息不断更新自身的节点。

3. 方法的提出

本文提出了基于注意力分解机和图卷积神经网络的知识图谱的多任务推荐模型(Multi-Task Recommendation of Knowledge Graph Based on Attention Factorization Machine and Graph Convolution Neural Network, MKAFG)。由推荐部分、知识嵌入部分、交叉压缩感知部分组成。其中推荐部分由具有注意力机制的因子分解机(AFM)和深度神经网络(DNN)两块组成。

3.1. 问题的定义

在推荐场景中,假设有m位用户 U={u1,u2,⋯,um}U={u1,u2,⋯,um},n个物品 V={v1,v2,⋯,vn}V={v1,v2,⋯,vn}。组成用户–物品交互矩阵 Ym×nYm×n,并用隐式反馈。 yuv=1yuv=1 表示用户u对物品v有过历史行为,否则 yuv=0yuv=0。同时加入知识图谱G来提高推荐效果。G由头实体–关系–尾实体 (h,r,t)(h,r,t) 三元组组成。在很多推荐场景中, v∈Vv∈V 与知识图谱中一个或者多个实体有关联。

本文中,给定用户-物品交互矩阵 Ym×nYm×n 和知识图谱G,去预测用户u是否会对之前没有过交互的物品v产生兴趣。定义了预测函数 yˆuv=F(u,v|Θ,Y,G)y^uv=F(u,v|Θ,Y,G), yˆuvy^uv 表示用户u对物品v点击的概率, ΘΘ 为函数 FF 的参数。

3.2. MKAFG算法框架

MKAFG算法框架如图1所示。由推荐部分、知识嵌入部分、交叉压缩感知部分三个模块组成。左边的推荐模块以用户和物品作为输入,右边的知识嵌入模块以实体和关系作为输入。左右两部分使用One-hot编码,对输入的数据采用稀疏表示,通过嵌入层将每个非零特征嵌入到一个稠密向量中。

Figure 1. MKAFG algorithm recommendation framework

图1. MKAFG算法推荐框架

左边的推荐部分由具有注意力机制的因子分解机(Attentional Factorization Machines, AFM)与深度神经网络(DNN)组成。AFM部分如图2,通过Attention机制对目标有用的特征赋予更高的权重,从而使FM提取对目标预测起到重要作用的一阶和二阶线性交互特征;DNN部分,融合用户和物品特征向量之间高阶非线性关系。两部分学习到的特征输入到预测函数中,得到预测概率;右边的知识嵌入模块通过图卷积神经网络(GCN)从三元组的头实体和关系实体中提取特征,并在函数f和真实的尾实体t的监督下输出预测的尾部实体 tˆt^ ;推荐模块和知识嵌入模块通过交叉压缩单元连接,可以自动学习推荐系统中物品和知识图谱中实体的高阶特征交互。

Figure 2. FM based on attention mechanism

图2. 基于注意力机制的FM

3.3. 推荐部分

本文将注意力机制(Attention)与FM加入到文献 [6] 提出的MKR左边的推荐部分中,由具有注意力机制的因子分解机(AFM)与深度神经网络(DNN)两部分共享相同的输入和嵌入层的输出,模型输出见公式(1),用来预测用户u对物品v的点击概率。其中 yAFMyAFM 是AFM部分的输出, yDNNyDNN 为DNN部分的输出。

3.3.1. AFM模块

AFM是用来学习加权组合特征的,是具有注意力机制的FM [7]。AFM输入层将输入的物品和用户数据进行One-hot编码后,通过嵌入层,将每个向量投入到一个密集的向量中,得到如下公式:

其中 w0w0 代表全局偏差,n是经过One-hot编码后特征空间的维度, xixi 代表第i个特征。我们将上述 结果通过文献提出的成对交互层 [7],如图2,其是将m个向量扩展为 m(m−1)/2m(m−1)/2 个相互作用的向量,其中每个相互作用的向量是两个不同向量元素的点积,来编码它们的相互作用。模型表达式为:

p∈Rkp∈Rk 表示预测层的偏差, ⊙⊙ 为两个元素的点积, vivi 用于表达特征之间的相互作用。经过成对交互层,AFM学到了特征向量之间低阶线性组合特征。

并非所有的组合特征会对目标预测产生相同的作用,因此本文采用文献 [7] 提出的Attention机制,对越重要的特征赋予越高的权重。使用多层感知机参数化注意力得分。如图2,其由两个特征的交互向量 (vi⊙vi)xixj(vi⊙vi)xixj 作为输入,输入向量的加权算数平均值为输出。得到的权重代表特征各个组合特征的重要程度,权重函数为:

σσ 是激活函数, W′W′,W,b为模型学习的参数。对于输入的组合特征,其返回的是非标准化的权重分值 a′ija′ij。当得到所有组合特征的分值后,带入到公式(5)就可以得到标准化的权重分值 aijaij。将 aijaij 带入到公式(3)。AFM提取到对目标预测起到重要作用的一阶和二阶线性交互特征。AFM模型公式如下:

3.3.2. 深度神经网络(DNN)模块

给定用户u的原始特征向量u,经过特征嵌入后,使用一个L层MLP提取其隐性压缩特征,见公式(7)。其中 M(x)=σ(wx+b)M(x)=σ(wx+b) 为全连接的神经网络,w为权重(使用高斯分布初始化权重),b为偏差, σσ 为非线性激活函数。

3.4. 知识嵌入部分

知识图谱的嵌入,是将实体和关系嵌入到连续的向量空间中,同时保持它原有的信息和结构。本文使用GCN提取知识图谱的空间特征,利用边的信息对节点信息进行聚合从而生成新的节点表示,信息可沿着边直接从一个节点传递到另一个节点 [8]。

对于给定的知识三元组 (h,r,t)(h,r,t),首先对One-hot编码的特征进行嵌入操作。让头部实体h经过多个交叉压缩单元来学习深层次的特征,对于关系实体r使用L层的MLP提取隐性压缩特征。然后将 hLhL 和 rLrL 一起投入到图卷积神经网络中,来预测尾实体 tˆt^。见如下公式:

S(h)S(h) 是与头实体h相关联的物品集合, [h][h] 区分头实体向量的标志 [6]。 tˆt^ 是尾实体的预测向量。 FkgcnFgcnk 是k层的图卷积神经网络,本文设置k = 2,叠加两层GCN,每个节点可以把2-hops邻居的特征加以聚合,得到自身特征。 C˜=C+INC˜=C+IN,表示通过添加自环,把自身特征和邻居特征结合起来,更新自身节点。A为描述节点之间关系的邻接矩阵。 C∗=D˜−1/2C˜D˜−1/2C*=D˜−1/2C˜D˜−1/2 对自身节点和邻居节点所传播的信息进行归一化。 W(l)W(l) 为特定层的可训练权重矩阵。 σσ 为非线性激活函数。使用分数函数 fKGfKG 来计算三元组分数:

3.5. 交叉压缩部分

本文使用交叉压缩单元与MKR [6] 一致。物品v向量和实体h向量通过交叉特征共享单元进行信息交互,弥补自身信息稀疏性的不足 [6],如图3。

对于物品v与其相关联的实体h,其L层的隐特征分别为 vL∈RdvL∈Rd 和 hL∈RdhL∈Rd。通过计算 vLvL 与 hLhL 的外积,构建了一个 d×dd×d 维的隐特征成对相互作用的交叉特征矩阵。如下:

[v]和[h]分别表示物品向量和实体向量的输出,通过交叉压缩感知单元,MKAFG可以自适应地调整知识转移的权重,并学习两个任务之间的相关性 [6]。

Figure 3. Cross compression module

图3. 交叉压缩感知单元

3.6. 算法设计

MKAFG的损失函数如公式(18)。 LRSLRS 为推荐部分的损失函数, HH 为交叉熵函数; LKGLKG 为知识嵌入部分的计算损失,旨在提高正确三元组得分,降低错误三元组得分; LθLθ 为正则化项,用来防止过拟合,其中 λ1λ1 和 λ2λ2 表示平衡系数, λ1λ1 可视为两项任务的两个学习率之比,本文设置 λ1=0.5λ1=0.5, λ2=10−6λ2=10−6。上述公式遍历了所有可能的用户–交互矩阵和知识三元组。本文在训练过程中使用负采样策略 [21] 来提高计算的有效性。见“算法1”(表1),由推荐部分与知识嵌入部分联合训练。每次迭代过程中,更加倾向于提高推荐性能,所以RS训练t次(t是超参,t > 1)后,KGE训练1次。

算法1:MKAFG算法流程

输入:用户--物品交互矩阵 Y m × n ,知识图谱G

输出:预测函数: y ^ u v = F ( u , v | Θ , Y , G )

1. 初始化参数

2. for k do

//推荐部分(AFM模块+DNN模块)

3. fortstepsdo

4. 从Y中采集正负相互作用的小批量样本,得到物品v相关联的实体 h ∼ S ( v ) ;

5. 对输入的物品、用户数据进行One-hot编码;

6. One-hot编码后的用户和物品特征向量进行嵌入操作;

//AFM模块

7. 使用神经注意网络,公式(4)-(5),以不同的权重 a i j 对所有的特征建模后,再通过公式(6)

获取特征间的低阶线性交互关系。

//DNN模块

8. 获取用户和物品高阶组合特征,见公式(7)-(9);

9. 通过公式(1)预测用户u对物品v的点击概率;

10. 通过公式(18)更新推荐模块的所有参数;

11. endfor

//GCN知识嵌入部分

12. 从知识图谱G中采集正负相互作用的小批量样本,得到头实体h相关联的物品 v ∼ S ( h ) ;

13. 对输入的头实体、关系实体数据进行One-hot编码;

14. 头实体、关系实体特征向量进行嵌入操作;

15. 头实体h和关系实体r构建邻接矩阵,预测尾实体 t ^ ;

16. 通过等式上的梯度下降更新 F 参数,公式(13),(18);

17. endfor

Table 1. Model Training Structure about MKAFG

表1. MKAFG模型训练结构

4. 实验

4.1. 实验环境

本实验的运行环境为:Python3.6、TensorFlow2.1、32G内存、Intel Core i5CPU、GeForce GTX 1050 2G显卡。

4.2. 数据集及预处理

4.2.1. 数据集

推荐模块数据集:选用公开的MovieLens-1M数据集。其中评分数据集含有来自6036名用户对3952部电影约100万条显示评分数据(评分值从1~5,值越高表示用户对该电影越喜欢);用户数据集包含了用户属性信息(年龄、性别等);电影属性数据集包含了电影属性(类别、年代等)。

知识图谱数据集:使用Microsoft Satori来构建电影知识图谱。Microsoft Satori存储实体(真实世界中的人物、地点、事件等)的信息和关系,索引量并在不断增长。

4.2.2. 数据预处理

推荐模块数据预处理:在MovieLens-1M中需要将显示反馈数据转换为隐式反馈数据。用户对电影的评分为最高为5,最低为1。本文根据电影评分的经验,设阈值为4,当用户对某一部电影的评分>=4时,表示用户对该部电影很喜欢,是正反馈,用1表示;反之是负反馈,用0表示。0不只意味着用户不喜欢这个电影,它是用户不喜欢此电影和暂无交互(用户还未注意到此电影)的混合。

知识图谱数据预处理:电影知识图谱的构建与MKR [6] 中保持一致。先从整个Microsoft Satori中选出置信度大于0.9的三元组子集,进一步选择出关系名称为“电影”的三元组集合,来减少知识图谱的大小。在得到的子集中,通过将所有有效电影与三元组的尾部(head, film.film.name, tail)进行匹配来收集所有有效电影的ID标识,将没有匹配或多个匹配的实体ID删除,然后将剩下的ID集合与KG子集中的三元组头尾部进行匹配,从KG中选择能够匹配上的三元组 [6]。但用户、项目及交互的数量比原始数据集少,因为过滤掉了KG中没有对应到的实体的项目。

4.3. 衡量指标及实验结果

本文将MovieLens-1M数据集,按照6:2:2的比例划分为训练集、测试集、验证集。实验重复3次,计算3次平均的结果。

4.3.1. 衡量指标

使用ACC和AUC来评估点击率预估(CTR)预测MKAFG推荐框架的性能。其中ACC可以从混淆矩阵中导出,混淆矩阵见表2。

推荐框架

用户喜欢

用户不喜欢

推荐

TP

FP

未推荐

FN

TN

Table 2. Confusion Matrix

表2. 混淆矩阵

4.3.2. 实验结果

本实验使用Movielens-1M电影数据集进行了点击率预估任务。第一部分将MKAFG与主流推荐模型进行比较;第二部分是自身实验的比较,见表2。结果最好已经加粗表示。

PER在电影数据集上表现不佳,因为PER需要手动进行元路径的设计,手动设计很难使结果达到最佳。DKN在所有推荐模型中表现最差,可能是DKN主要应用在新闻领域的推荐,新闻文本的特点是语言高度浓缩,而电影名称较短无法提供有用的信息。RippleNet在所有模型中表现较好,说明通过兴趣点传播可以更好的捕获用户的兴趣偏好。MKR在所有模型中表现较佳,说明知识图谱作为辅助信息可以辅助推荐任务进行学习,其物品、实体通过交叉压缩单元共享信息表现出多任务学习的有效性。

自身实验的比较。MKFM表示在推荐模块加入FM,学习用户、物品的低阶交互特征。由表3可知,MKFM与基础模型相比要好,说明在推荐模块加入FM的有效性,但推荐效果不如 MKAFM,其是加入了具有Attention的FM,能更好的能获取到,起到重要作用的一阶二阶交互特征。推荐效果最好的是本文提出的MKAFG模型,AUC分别比MKR、MKFM、MKAFM提高了2.8%、1.1%、0.6%。说明加入的图卷积神经网络能更好的学习知识图谱的特征。因此,在电影推荐领域,本文提出的MKAFM效果最佳。

Approachs

Movielens-1M

AUC

ACC

PER

0.710

0.664

CKE

0.801

0.742

DKN

0.655

0.589

RippleNet

0.920

0.842

MKR

0.917

0.843

MKFM

0.934

0.858

MKAFM

0.939

0.866

MKAFG

0.945

0.876

Table 3. Click rate estimation results of the model

表3. 模型的点击率预估结果

4.4. 推荐模块超参数分析

本部分实验研究在推荐模块引入AFM机制后,推荐模块的DNN部分的激活函数、神经元数量、隐藏层数量使MKAFG达到推荐效果最佳。

4.4.1. 激活函数

此部分研究了ReLU和Tanh作为左侧推荐模块的激活函数时,对总体框架结果的影响。由图4可得ReLU比Tanh性能更好。

Figure 4. Influence of activation function on results

图4. 激活函数对结果的影响

4.4.2. 隐藏层数量

一般认为,隐藏层的个数越多,模型的学习能力越强。但随着隐藏层数量的不断增加,更容易产生过拟合,同时训练难度也不断加大。如图5,当神经网络隐藏层数为2时,模型的推荐效果最佳。

Figure 5. Influence of the number of hidden layers on the results

图5. 隐藏层的数量对结果的影响

4.4.3. 隐因子维度分析

如图6,研究了隐因子的个数对MKAFG模型的影响。此处隐藏层数设置为2。随着隐因子维度的增加,并不能总给推荐效果带来提升。当隐因子维度为128时,推荐效果最佳。

Figure 6. Influence of the number of hidden factors on experimental results

图6. 隐因子个数对实验结果的影响

4.5. MKAFG模型参数分析

4.5.1. 训练集稀疏程度分析

实验将MovieLens-1M的训练集大小设置为10%到100%。测试集和验证集不变。所有模型的AUC全部升高;同时r = 100%与r = 10%时,各个模型AUC差分别为:PER (11.2%)、CKE (12.7%)、DKN (7.6%)、RippleNet (7.7%)、MKR (5.5%)、MKAFG (5.1%)。如图7,MKAFG面对数据稀疏性问题时,依然保持良好的性能。

Figure 7. Analysis of sparsity of training set

图7. 训练集稀疏程度分析

4.5.2. 知识图谱KG大小分析

本部分研究辅助信息数据集的大小对推荐效果的影响。将知识图谱的大小设置为原来的0.1倍到1倍。由图8,随着知识图谱数据集增大,推荐效果不断上升。且AUC和ACC分别增加了14.1%、12.8%。说明引入辅助信息可以提高推荐效果,同时辅助信息数据集越大,推荐效果会越好。

Figure 8. Analysis of KG size

图8. 知识图谱大小分析

4.5.3. 推荐模块训练频次分析

每个epoch,推荐部分训练t次,知识嵌入部分训练1次。本文设计t (1 - 10),同时保持其他参数不变。如图9,当t = 4时,MKAFG性能最佳,当t > 4时,随着t的增大时,MKAFG性能降低。因为如果知识图谱嵌入模块训练频次太少,不能充分利用知识图谱的知识;训练频次过高,则会影响MKAFG的目标函数。

4.5.4. 嵌入维度分析

在嵌入层,用户、物品、实体、关系的嵌入维度会影响MKAFG的表现。当嵌入维度增加时,会带来更多的编码信息。如图10,当dim = 8时,MKAFG的推荐结果达到最优。原因是,随着嵌入维度的增加,会引入噪声,这会误导预测函数的预测。

Figure 9. Analysis of training frequency of recommendation module

图9. 推荐模块训练频次分析

Figure 10. Embedded dimension analysis

图10. 嵌入维度分析

5. 结束语

本文提出了融合知识图谱和用户行为信息的深度算法推荐模型。在推荐模块加入具有注意力机制的FM,通过注意力网络区分不同特征交互的重要性,使FM提取到对目标预测起到重要作用的一阶、二阶线性交互特征。在知识嵌入模块通过GCN学习知识图谱自身的关系和特征,还可以通过不断学习让每个节点接受邻居节点的信息从而更新自身的节点表示。通过实验表明,该模型的性能相比目前主流推荐模型有所提升。由于本文数据只在Movielens-1M电影数据集上进行研究,未来将应用到图书、新闻、音乐等领域进行推荐研究,以能在所有数据集上获取较好的效果。

融合知识图谱和用户行为信息的个性化推荐算法研究相关推荐

  1. 多模态信息抽取(一)——融合知识图谱和多模态的文本分类研究(论文研读)

    融合知识图谱和多模态的文本分类研究 引言: 1 相关工作 1.1文本分类 1.2知识融合 1.3多模态融合 2 融合知识图谱和多模态的文本分类模型 2.1文本特征表示 2.2实体特征表示 2.3图像特 ...

  2. 融合知识图谱的电影推荐_算法与交互界面的实现

    笔者的论文项目部分分享,主要内容为使用Neo4j构建知识图谱,使用python实现融合知识图谱推荐算法与相关的简单交互界面. 内容脑图如下图:主要学习自项亮的推荐系统实践与唐宇迪的推荐系统实战 其中不 ...

  3. 超融合知识图谱到底是什么 本文进行详解

    融合建模 多源.多维.多层次数据的融合建模是后续分析技术的核心基础.本节将重点介绍融合建模中的关 键技术趋势⸺ 超融合知识图谱. 4.1.1.1 定义内涵 超融合知识图谱的含义是以安全领域知识图谱为核 ...

  4. Python+Django+Mysql开发在线美食推荐网 协同过滤推荐算法在美食网站中的运用 基于用户、物品的协同过滤推荐算法 个性化推荐算法、机器学习、分布式大数据、人工智能开发

    Python+Django+Mysql开发在线美食推荐网 协同过滤推荐算法在美食网站中的运用 基于用户.物品的协同过滤推荐算法 个性化推荐算法.机器学习.分布式大数据.人工智能开发 FoodRecom ...

  5. Python+Django+Mysql开发在线购物推荐网 协同过滤推荐算法在购物网站中的运用 个性化推荐算法开发 基于用户、物品的协同过滤推荐算法 机器学习、分布式大数据、人工智能开发

    Python+Django+Mysql开发在线购物推荐网 协同过滤推荐算法在购物网站中的运用 个性化推荐算法开发 基于用户.物品的协同过滤推荐算法 机器学习.分布式大数据.人工智能开发 ShopRec ...

  6. 在线新闻推荐网 Python+Django+Mysql开发技术 基于用户、物品的协同过滤推荐算法 个性化新闻推荐系统 协同过滤推荐算法在新闻网站中的运用 个性化推荐算法、机器学习、分布式大数据、人工智

    在线新闻推荐网 Python+Django+Mysql开发技术 基于用户.物品的协同过滤推荐算法 个性化新闻推荐系统 协同过滤推荐算法在新闻网站中的运用 个性化推荐算法.机器学习.分布式大数据.人工智 ...

  7. 在线图书推荐网 Python+Django+Mysql开发技术 个性化图书推荐系统 协同过滤推荐算法在图书网站中的运用 基于用户、物品的协同过滤推荐算法 个性化推荐算法、机器学习、分布式大数据、人工智

    在线图书推荐网 Python+Django+Mysql开发技术 个性化图书推荐系统 协同过滤推荐算法在图书网站中的运用 基于用户.物品的协同过滤推荐算法 个性化推荐算法.机器学习.分布式大数据.人工智 ...

  8. 在线电影推荐网 使用Python+Django+Mysql开发技术 在线电影推荐系统 电影网站推荐系统 基于用户、物品的协同过滤推荐算法 个性化推荐算法开发 机器学习、人工智能、大数据分布式开发

    在线电影推荐网 使用Python+Django+Mysql开发技术 在线电影推荐系统 电影网站推荐系统 基于用户.物品的协同过滤推荐算法 个性化推荐算法开发 机器学习.人工智能.大数据分布式开发 Mo ...

  9. 如何使用Python+Django+Mysql开发特色美食推荐系统 个性化美食推荐网站 个性化推荐算法开发 基于用户、物品的协同过滤推荐算法 组合、混合推荐算法FoodRecommendSystem

    如何使用Python+Django+Mysql开发特色美食推荐系统 个性化美食推荐网站 个性化推荐算法开发 基于用户.物品的协同过滤推荐算法 组合.混合推荐算法FoodRecommendSystem ...

最新文章

  1. 牛客 2018年长沙理工大学第十三届程序设计竞赛 G-逃离迷宫
  2. Linux中vi的常用命令和快捷键使用
  3. rand(),srand()产生随机数
  4. tensorflow:Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2
  5. 全国计算机二级qq闪退,电脑上QQ闪退怎么回事?各个系统版本电脑QQ闪退现象的解决方法介绍...
  6. 如果有一天生你养你的两个人都走了
  7. 微型计算机接口技术2018真题,2018年微机原理及接口技术复习题.doc
  8. 使用Python批量提取并保存docx文档中的图片
  9. SQLServer数据库字典维护方法
  10. 项目采集自动刷新 php,PHP168 CMS自动采集-PHP168 CMS自动更新-齐博CMS站群管理系统...
  11. PIL (Python Imaging Library) 教程
  12. background 组合写法_css中background复合属性详解
  13. screenX、client X、pageX、offsetX、layerX
  14. 王的机器第一本书「快乐机器学习」飨你
  15. Python直角坐标系画图
  16. Unity资源加载简析(一)Resources
  17. 笔记本电脑触控板失灵解决办法
  18. 利用pdf2image,将pdf文件转换成图片
  19. I2C 连接 12864 OLED 屏幕
  20. 抓取前程无忧招聘信息

热门文章

  1. html在网页中内嵌百度搜索,如何在我的网页内嵌一个百度搜索的网页
  2. 以太坊合并升级全面解读:初级篇
  3. C语言,函数没有return,返回类型就是void的么?
  4. WEB端显示摄像头实时图像数据
  5. 古代日本人没有姓,只有名
  6. 小程序--时间处理(显示几分钟前,,几小时前,,几天前...)
  7. pwm的频率和占空比
  8. GAT - Graph Attention Network 图注意力网络 ICLR 2018
  9. 计算机选择u盘启动不了,win10系统u盘启动不了系统怎么办_win10无法进入u盘启动解决方法...
  10. CODEVS 1083 Cantor表