掌桥专利:专业的专利平台
掌桥专利
首页

一种融合协同过滤与Embedding技术的混合推荐方法

文献发布时间:2024-04-18 19:58:30


一种融合协同过滤与Embedding技术的混合推荐方法

技术领域

本发明属于机器学习、推荐系统技术,具体涉及一种融合协同过滤与Embedding技术的混合推荐方法。

背景技术

在现有技术中,已经存在一些与本发明密切相关的技术,例如协同过滤算法和Embedding技术等。

首先,基于协同过滤的推荐它不需要对物品或者用户进行严格的建模,而且这种方法计算出来的推荐是开放的,可以共用他人的经验,很好的支持用户发现潜在的兴趣偏好,从而为本发明提供了思维媒介。但是在大部分的实现中,用户历史偏好是用稀疏矩阵进行存储的,而稀疏矩阵上的计算有些明显的问题,包括可能少部分人的错误偏好会对推荐的准确度有很大的影响等等。

其次,现有的关于推荐算法主要聚集于深度学习中,将One-hot编码方式与神经网络模型相结合,通过搭建统计语言模型得到词向量的表达。但是该类方法的缺陷在于难以处理信息稀疏、数据量大、网络结构复杂的情况。

最后,在推荐算法应用于推荐系统过程中,时常伴随着上架新商品或者加入新用户的业务。这种情况下,系统中对由于缺少用户的属性信息和行为记录集数据,无法为用户画像建模,以至于无法向用户提供精准的推荐,这种启动情况就是冷启动问题。

发明内容

本发明设计了一种融合协同过滤与Embedding技术的混合推荐方法,选用ALS算法训练隐语义模型来进行协同过滤的目标:可以揭示隐藏的特征,这些特征能够解释为什么给出对应的预测评分,然后根据评分做出推荐。利用Embedding技术中的node2vec模型处理网络结构数据,其中node2vec模型加入了游走参数,有利于保存网络结构特征,使得向量值能够包含节点间的隐含关系,易于存储计算,存在自适应性。相比传统的推荐模型具备显而易见的优势。对代表商品的节点通过添加侧面补充信息,弥补无交互缺陷,解决冷启动问题。

本发明公开的技术方案如下:一种融合协同过滤与Embedding技术的混合推荐方法,包括步骤:

S1:数据预处理,先将数据进行处理,对数据进行清洗和将数据转化为指定的格式;

S2:用ALS算法训练隐语义模型,根据用户评分表和商品数据集计算用户商品推荐矩阵;

S3:网络节点的向量化,采用Embedding中的node2vec模型实现节点向量化,添加商品的侧面信息,完成了商品的向量化之后,计算商品对应特征向量间的余弦值,然后进行推荐,将距离目标商品最近的商品推荐给用户;

S4:对ALS算法和Node2vec算法的推荐结果进行加权组合,得到最终的混合推荐结果。

在上述方案的基础上,作为优选,步骤1.1:将用户—服饰评分数据集按照8:2的比例随机的分为训练集和测试集,训练集用于对ALS的模型进行训练,测试集用于计算RMSE和MAE的值和验证推荐算法的准确性;

步骤1.2:将训练集转换为一个Rating()类型的RDD,并保存在内存中,在训练ALS模型时使用,将数据集中的商品名提取出来,将所有的商品名保存在一个Array[]类型的RDD,并保存在内存中,在node2vec生成商品名对应的维度时使用。

在上述方案的基础上,作为优选,步骤2.1:从数据库的用户评分表中读取用户IDuid,商品ID pid作为用户评分数据集;

步骤2.2:通过ALS算法训练隐语义模型,首先进行模型的参数定义:隐特征向量的维度rank、迭代次数iterations、正则化系数λ,其中rank代表了模型的复杂度,是指每个用户特征和每个商品特征有几个特征值;iterations是模型训练的次数,给定一个训练上限;λ是防止过拟合参数;

步骤2.3:从数据库加载用户评分表,随机切分数据集划分为训练集和测试集,将80%的数据作为训练集,20%的数据作为测试集;

步骤2.4:使用均方根误差RMSE和平均绝对误差MAE作为模型的评估标准,即计算预测评分和真实评分之间的误差;

步骤2.5:通过ALS算法训练隐语义模型model并得到预测评分,分别往模型传入参数trainData、rank、iterations和λ,基于预测评分和真实评分之间的误差求RMSE和MAE;

步骤2.6:通过调整参数值,选取值RMSE和MAE最小的参数作为模型优化的选择,RMSE和MAE取值越小就代表在测试集上表现越好;

步骤2.7:经训练计算得到最佳参数,即隐语义模型优化完成;

步骤2.8:获取用户推荐矩阵,基于用户和商品的隐特征向量计算预测评分,根据评分高低得到用户的推荐列表;

步骤2.9:计算用户ID uid,商品ID pid的笛卡尔积,产生(uid,pid)的元组,得到用户-商品的空评分矩阵;

步骤2.10:调用通过ALS算法训练的隐语义模型中predict方法,将空评分矩阵传入得到用户-商品的预测评分;

步骤2.11:通过filter函数过滤出预测评分大于0的项,然后基于用户ID uid做分组聚合得到评分列表;

步骤2.12:对于列表里的预测结果按预测分值进行排序,返回值最大的K个商品作为当前用户的推荐结果。

在上述方案的基础上,作为优选,步骤3.1:构建网络结构,先根据商品浏览序列构造网络,由于浏览序列在时间上存在先后关系,所以形成的网络结构图是一个有向图,其中节点表示不同商品,边表示此对商品在同一序列中存在共现,箭头的指向表示浏览的顺序,边权重表示两者在所有序列中共现的次数;

步骤3.2:采用node2vec实现节点向量化,在网络结构图的基础上,运用node2vec算法对节点进行向量化,在此之前需要完成模型的参数设置,设置模型随机游走的步长walk length,对于每个节点的游走次数为numwalks,随机游走的两个转移概率分别设为q,r,节点向量的维数dim,向量训练时采用Skip-Gram模型,设置其训练窗口的大小windowsize,迭代次数iter,最终得到商品的向量表示;

步骤3.3:添加商品的侧面信息,侧面信息包括商品品牌、归属种类、线上评分,侧面信息是对商品信息的补充,将侧面信息加入到商品的向量表示中,如果原本的商品向量维数为X,加入的方式是采用不同的权值加入作为商品向量的新属性,通过比较聚类效果,最终将这三个指标以λ1、λ2、λ3的权值分别补充为商家的第X+1维、X+2维和X+3维,最终得到的商维数为X+3维,前X维表示商品的原有属性,后三维表示商品的侧面补充信息。

步骤3.4:匹配相似商品,完成了商品的向量化之后,针对商品间的相似性进行向量度量,在所构成的空间中实现相似商品的合并聚类,此时两个节点间的相似度便转化为两个向量之间相似度问题,在空间中,距离越近表示差异越小,距离越远表示差异越大,根据向量之间距离的度量标准,此处采用向量间的余弦值作为度量标准,通过测量两个向量间的夹角与矢量长度,该方法定义两个向量之间的余弦值为:

其中a、b表示两个不同的商品向量,Θ表示向量之间的夹角,

由以上公式刻画出的是两个商品向量在空间上的位置距离,两个商品向量之间的余弦值越大说明两者在空间上的距离越近,相似性越高,反之亦然,每个商品由此可以得到余弦值,每个值表示其余商品与该商品的相似度,最后筛选出每个商品对应余弦值排名前N的商品作为最相似商品的匹配序列,然后按照从小到大的顺序进行Top-N推荐。

在上述方案的基础上,作为优选,对ALS算法和Node2vec算法的推荐结果进行加权预测推荐,预测推荐的公式如下所示:

Result=αAresult+(1-α)Nresult

其中0≤α≤1,Aresult为基于ALS评分预测的推荐,Nresult为基于node2vec下商品间距离大小的推荐,α为基于ALS的推荐结果和基于Node2vc的推荐结果在最终的推荐结果中所占的比重,根据两种推荐结果所占的权重大小,得到两种推荐算法最终推荐结果。

与现有技术相比,本发明具有以下有益效果:

将node2vec图嵌入算法与推荐系统相融合,实现了实体对象的图嵌入。

node2vec模型是在DeepWalk模型的基础之上进行了改进,通过增加两个游走参数值,控制模型游走策略,较DeepWalk模型更易于捕捉网络结构的同质性与结构性。

在使用node2vec构建完网络结构图的后,对代表商品的节点添加侧面补充信息,弥补无交互缺陷,解决冷启动问题。由于电商平台的定时更新,导致不同时段新加入的商品群体和用户群体出现无交互信息或者信息稀疏的情况,此时便无法根据历史信息完成商品的针对性推荐。在本发明中针对此类推荐系统中商品的冷启动问题,采用商品的侧面信息作为补充,将这些指标作为新的维度值构成商品向量的补充描述,由此便较好的解决了商品无用户浏览信息的情况,同时也极大的提高了商品向量的代表性。

综上,本发明通过ALS算法训练隐语义模型来预测商品评分并根据评分来进行推荐。弥补了协同过滤算法的数据稀疏性。同时,通过采用Node2vec模型来构建网络结构,并且以添加侧面补充信息,来弥补无交互缺陷,解决冷启动问题。最后,对基于ALS算法和Node2vec两种算法的推荐结果进行加权组合,得到最终的混合推荐结果。考虑到不同的推荐算法的都有不同的优缺点,本发明综合各个算法的不同情况下的优势,提出了一种融合协同过滤与Embedding技术的混合推荐算法,在一定程度上解决了某些推荐算法的准确度较低、可扩展性较差、数据稀疏性以及推荐系统中容易存在冷启动问题的缺点。

附图说明

图1是ALS算法流程图;

图2是用户推荐矩阵流程图;

图3是商品网络结构图构造过程;

图4是混合推荐算法的流程图。

具体实施方式

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对照附图说明本发明的具体实施方式。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图,并获得其他的实施方式。

一种融合协同过滤与Embedding技术的混合推荐算法,包括如下几个步骤:

步骤1:数据预处理设计。在设计的算法实现之前,我们需要先将数据进行处理,对数据进行清洗和将数据转化为指定的格式。

步骤1.1:将用户—服饰评分数据集按照8:2的比例随机的分为训练集和测试集,训练集主要用于对ALS的模型进行训练。测试集用于计算RMSE和MAE的值和验证推荐算法的准确性。

步骤1.2:将训练集转换为一个Rating()类型的RDD,并保存在内存中。在训练ALS模型时使用。将数据集中的商品名提取出来,将所有的商品名保存在一个Array[]类型的RDD,并保存在内存中,在node2vec生成商品名对应的维度时使用。

步骤2:用ALS算法训练隐语义模型,本发明采用ALS作为协同过滤算法,分别根据用户评分表和商品数据集计算用户商品推荐矩阵。

步骤2.1:从数据库的用户评分表中读取用户ID uid,商品ID pid作为用户评分数据集。

步骤2.2:通过ALS算法训练隐语义模型,首先进行模型的参数定义:隐特征向量的维度rank、迭代次数iterations、正则化系数λ。其中rank代表了模型的复杂度,是指每个用户特征和每个商品特征有几个特征值;

iterations是模型训练的次数,给定一个训练上限;λ是防止过拟合参数。

步骤2.3:从数据库加载用户评分表,随机切分数据集划分为训练集和测试集,将80%的数据作为训练集,20%的数据作为测试集。

步骤2.4:使用均方根误差RMSE和平均绝对误差MAE作为模型的评估标准,即计算预测评分和真实评分之间的误差。

步骤2.5:通过ALS算法训练隐语义模型model并得到预测评分,分别往模型传入参数trainData、rank、iterations和λ,基于预测评分和真实评分之间的误差求RMSE和MAE。

步骤2.6:通过调整参数值,选取值RMSE和MAE最小的参数作为模型优化的选择,RMSE和MAE取值越小就代表在测试集上表现越好。

步骤2.7:经训练计算得到最佳参数,即隐语义模型优化完成,ALS模型训练过程由图1所示。

步骤2.8:获取用户推荐矩阵,基于用户和商品的隐特征向量计算预测评分,根据评分高低得到用户的推荐列表。

步骤2.9:计算用户ID uid,商品ID pid的笛卡尔积,产生(uid,pid)的元组,得到用户-商品的空评分矩阵。

步骤2.10:调用通过ALS算法训练的隐语义模型中predict方法,将空评分矩阵传入得到用户-商品的预测评分。

步骤2.11:通过filter函数过滤出预测评分大于0的项,然后基于用户ID uid做分组聚合得到评分列表。

步骤2.12:对于列表里的预测结果按预测分值进行排序,返回值最大的K个商品作为当前用户的推荐结果,推荐流程由图2所示。

步骤3:网络节点的向量化,采用Embedding技术中的node2vec模型实现节点向量化,添加商品的侧面信息,完成了商品的向量化之后,计算商品对应特征向量间的余弦值,然后进行推荐,将距离目标商品最近的商品推荐给用户。

步骤3.1:构建网络结构,采用Node2vec模型需要先根据商品浏览序列构造网络,由于浏览序列在时间上存在先后关系,所以形成的网络结构图是一个有向图。其中节点表示不同商品,边表示此对商品在同一序列中存在共现,箭头的指向表示浏览的顺序,边权重表示两者在所有序列中共现的次数,网络结构图构造过程由图3所示。

步骤3.2:采用node2vec实现节点向量化,在网络结构图的基础上,需要运用node2vec算法对节点进行向量化,在此之前需要完成模型的参数设置。设置模型随机游走的步长walk length,对于每个节点的游走次数为numwalks,随机游走的两个转移概率分别设为q,r,节点向量的维数dim。另外,向量训练时采用Skip-Gram模型,设置其训练窗口的大小window size,迭代次数iter。最终得到商品的向量表示。

步骤3.3:添加商品的侧面信息如商品品牌、归属种类、线上评分。侧面信息是对商品信息的补充,需要将其加入到商品的向量表示中,如果原本的商品向量维数为X,加入的方式是采用不同的权值加入作为商品向量的新属性。通过比较聚类效果,最终将这三个指标以λ1、λ2、λ3的权值分别补充为商家的第X+1维、X+2维和X+3维。所谓最终得到的商维数为X+3维,前X维表示商品的原有属性,后三维表示商品的侧面补充信息。

步骤3.4:匹配相似商品,完成了商品的向量化之后,针对商品间的相似性进行向量度量,在所构成的空间中实现相似商品的合并聚类。此时两个节点间的相似度便转化为两个向量之间相似度问题,在空间中,距离越近表示差异越小,距离越远表示差异越大。根据向量之间距离的度量标准,此处采用向量间的余弦值作为度量标准,通过测量两个向量间的夹角与矢量长度,该方法定义两个向量之间的余弦值为:

步骤4:对基于ALS算法和Node2vec两种算法的推荐结果进行加权组合,得到最终的混合推荐结果,混合推荐流程由图4所示。

具体的,此混合推荐算法是基于ALS模型的评分预测和Node2vec下Top-N进行推荐的,评分预测的目的是对用户可能喜好的商品给出可能的预测评分,在ALS的模型训练中,我们先根据RMSE和MAE的值来确定最优的ALS模型,在模型训练的时候,算法会对用户-评分矩阵进行填充,使矩阵尽可能的不再稀疏。在训练出的模型中,根据用户对未评分商品可能的评分来对用户进行商品推荐。在Node2vec的推荐中,主要根据商品对应特征向量间的余弦值进行推荐,将距离目标商品最近的商品推荐给用户。混合推荐算法根据二者的推荐结果进行加权预测推荐,其中预测推荐的公式如下所示:

Result=αAresult+(1-α)Nresult

其中0≤α≤1,Aresult为基于ALS评分预测的推荐,Nresult为基于node2vec下商品间距离大小的推荐,α为基于ALS的推荐结果和基于Node2vc的推荐结果在最终的推荐结果中所占的比重。根据两种推荐结果所占的权重大小,得到两种推荐算法最终推荐结果。

应当说明的是,上述实施例均可根据需要自由组合。以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不托离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

相关技术
  • 一种融合协同过滤和用户属性过滤的混合推荐方法
  • 面向移动订餐系统的内容推荐和协同过滤推荐的混合方法
技术分类

06120116502757