贝叶斯协同过滤推荐方法与流程

文档序号:17835453发布日期:2019-06-05 23:30阅读:223来源:国知局
贝叶斯协同过滤推荐方法与流程
本发明涉及互联网领域,具体涉及一种贝叶斯协同过滤推荐方法。
背景技术
:联网的出现和普及,我们可以轻松地获得大量的数据,但是大量的数据使得用户在搜索信息难以直接地获得有效信息,这样我们对信息的使用率是降低的。因此,使用推荐系统可以有效解决信息过载问题的方法是非常重要的,推荐系统往往会根据使用者的要求、爱好等等,来推荐内容。目前,推荐系统已经在诸如电影,音乐,购物,社交,书籍等很多领域中得到了广泛的应用。而其中应用最广泛,最有效的个性化推荐技术之一就是协同过滤推荐算法。协同过滤主要分为基于内存的方法和基于模型的方法这两类:1.基于内存的方法:主要分为基于用户的协同过滤和基于项目的协同过滤,一般是通过目标用户(或目标项目)的相似用户(或相似项目)进行预测。2.基于模型的方法:使用模型来预测用户评分,即先构建模型训练参数,一旦训练结束,基于模型的推荐系统就可以非常快速的预测用户的喜好。所以当存在大量用户和大量项目时,使用基于模型的推荐可扩展性强、预测速度快。基于模型的方法主要包括:决策树,基于规则的模型,贝叶斯方法和潜在因子模型。使用基于内存的方法虽然提供了可靠的建议,但是对于用户完全未接触过的关键字信息和新用户无法推荐,需要大量评级才可以做出可靠的预测,而现实数据往往非常稀疏。为此许多学者在基于模型的推荐系统上进行了更加深入的研究,提出了一些改进方法并取得了一些成就,例如在问答网站中使用基于概率潜在语义分析(plsa)进行自动问题推荐的增量推荐算法,使推荐系统的实时性不足的问题得到了改善;在博客中使用一种基于文档主题生成模型(lda)的推荐算法,提高了用户推荐的精度;在电子商务推荐系统中使用一种将聚类算法和svd算法结合的推荐算法,有效解决了数据稀疏问题等等。传统技术存在以下技术问题:在现有的诸多模型中,矩阵分解技术对稀疏矩阵有较高的准确率。在经典矩阵分解的模型中,把用户集对项目集的评分表示成一个评分矩阵rm×n,其中rij表示用户ui对物品vj的偏好,将矩阵分解为两个矩阵:一个与用户相关um×k,另一个与项目相关vk×n,使得它们的乘积近似于原始矩阵:rm×n≈um×k×vk×n。其核心思想是通过隐含的特征联系用户和项目,利用降维的方法来填充缺失的条目,该方法在推荐算法上已经证明优于传统的最近邻技术。该方法中每个物品不是硬性地被分到一个类目中,而是通过统计用户行为来决定物品在每个类中的权重,如果喜欢某个类的用户都喜欢某个物品,那么这个物品在这个类中的权重就可能较高。经典矩阵分解应用在协同过滤中,很好的解决了数据过于稀疏的问题。经典矩阵分解有两个主要缺点,其中一个为没有将分解的矩阵分量约束为非负,这就导致难以理解每个分量的预测含义,推荐系统没有可解释性。另一个缺点是一般的矩阵分解为非概率的,求解方法为最小化原始矩阵与近似矩阵之间的误差,即:这种方法会更容易导致过度拟合和忽略其不确定性,推荐效果不佳。基于模型的推荐系统存在一些固有缺点对于新项目或者项目评级极少时,单一的模型方法很难提供足够的证据,从而导致推荐质量受到很大的影响。技术实现要素:本发明要解决的技术问题是提供一种贝叶斯协同过滤推荐方法,对于分解矩阵中的负数难以解释其与预测结果的语义,非负矩阵分解很好的解决了这个问题,非负矩阵分解将元素约束为非负,可以将多变的数据集分解为有意义的非负矩阵。将贝叶斯概率方法纳入非负矩阵分解,该方法不同的是把两个较小的矩阵视为随机变量,再将先验分布置于它们之上,通过观察数据找到其值的后验分布,这样可以大大减少过拟合,节约收敛时间。因此,我们利用了评分矩阵中评分数据、用户、项目三者之间的隐藏关联关系,将基于变分贝叶斯概率模型的非负矩阵分解算法与改进的朴素贝叶斯分类相结合,提出了隐藏贝叶斯概率模型推荐算法。从变分贝叶斯非负矩阵分解(bnmf)中获得隐藏用户分组,以及对缺失值的初预测,在此基础上利用改进朴素贝叶斯进一步修正,产生推荐结果。由于此方法充分考虑了用户与用户,用户与项目和项目与项目之间的多重隐藏关系,解决了商品的冷启动问题,提高了预测结果的准确性。实验结果表明,该算法明显提高了推荐质量。为了解决上述技术问题,本发明提供了一种贝叶斯协同过滤推荐方法,包括:模型的输入为协同过滤推荐系统的评分矩阵分解为两个潜在矩阵其中对于m×k的矩阵uik表示用户i属于组k的概率,uik∈(0,1);对于n×k的矩阵vjk表示用户组k喜欢商品j的证据,即预测评分矩阵r'=uvt;由于数据集r比较稀疏,所以观察的条目可以用集合ω={(i,j)|rijisobserved};对这个问题采取概率方法;对观测数据表示一个似然函数,并将潜在矩阵作为随机变量来处理;当假设r的每个值来自u和v的乘积时,加上一些高斯噪声即:r=uvt+e,其中ui,vj表示u和v的第i行和第j行,rij服从精度为τ的高斯分布;我们模型的参数集表示为θ={u,v,τ};根据贝叶斯定理,将已观察到的数据集d={rij}i,j∈ω作为先验,然后找到关于参数θ的分布:p(θ|d)∝p(d|θ)p(θ),通常不能精确地计算后验p(θ|d),但是可以通过选择适合的先验得到一个很好的逼近;为了使分解后的矩阵数值有可解释的意义,所以将u,v约束为非负;用户与用户、商品与商品之间相互独立,所以在u和v选择选择指数先验,这样u和v中的每个元素都被假定为独立的指数分布且速率参数同时也能被约束为非负;即:对于精度τ采用ατ,βτ>0的伽马分布,即:变分贝叶斯中用近似q(θ)去逼近后验p(θ|d);根据平均场理论,假设变分分布q(θ)完全成立,因此所有变量在后验中都是独立的,即:利用贝叶斯定理得到以下分布:其中近似函数q(θi)服从以下分布:通过最小化kl散度,使近似函数q(θ)去近似后验p(θ|d):为了使kl散度最小,则只需要极大化证据下界(elbq)l(q),这样就可以得到后验p(θ|d)的近似解;即可以求得(对于某个常数c)找到第i个q*(θi)的最优分布,然后依次更新其他θi,最终相互迭代达到稳定,从而可以找到变分参数的最优更新,该算法保证了证据下界的最大化(elbo):添加自动相关性确定(ard)方法,不需要选择正确的k,而是给出一个上限,模型将自动确定要使用的因子数;将分解矩阵先验的各个参数替换为同一列中所有条目共享的一个,即为每个因子共享,并在λk上放置一个伽马先验;则先验分布变为:朴素贝叶斯分类:假设d是样本数据集,对于d中每个样本x的n个属性a1,a2,…an,用n维特征向量表示为x=[x1,x2,…,xn];假设样本有m个类别(如评分满分5,即有5个类别),每个类别分别用c1,c2,…cm表示;根据贝叶斯定理对于待分类的样本x,可以得出在x出现的条件下,d中各个的类别ci出现的概率;比较类别出现的后验概率,选择其中概率最大的类别;由于p(x)对于所有类别都是常数,当且仅当先验概率p(x|ci)p(ci)为最大时,后验概率p(ci|x)最大;为了降低开销,实现有效估算,假设各个类别、属性相互独立,即只需考虑:假设表示训练集d中的ci类样本的集合,可以得出类先验概率:对离散属性而言,假设表示中ak属性上取值为xk的样本组成的集合,则条件概率:对连续属性而言,可以考虑概率密度函数,把连续的属性离散化;根据重要性对不同的用户、属性采用相应的影响因子,在加权朴素贝叶斯模型上进行了改进:其中ρi表示用户ui的权重,ωk表示属性ak的权重;其权重值越大,即影响越大,利用信息熵计算该权值;hbpm中的“隐”体现在从bnmf中的u矩阵获得的隐藏用户组k;由u矩阵v矩阵相乘得到一个预测评分矩阵,从中获得了一部分隐藏但可靠预测评分;最后结合属性利用改进的朴素贝叶斯进行修正,得到最终预测结果。一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现任一项所述方法的步骤。一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现任一项所述方法的步骤。一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行任一项所述的方法。本发明的有益效果:现实中,用户的喜好多种多样,不会像小数据集中体现出口味较为一致。现实数据集中存在大量数据缺失问题,如果对证据不足难以预测的值,都预测为中值或者为平均值就失去了推荐的意义。我们做了一些测试发现对数据集中从未被用户评分过或者极少数用户评分的项目,矩阵分解方法找不到足够的证据预测为喜好或者不喜欢,这样就会导致商品的冷启动问题。所以我们充分考虑到用户商品之间的潜在联系和显在联系,添加了商品属性结合评分矩阵,对预测评分矩阵进行一定程度上的修正,这样既节省了时间,又提高了预测结果的准确度。附图说明图1是本发明贝叶斯协同过滤推荐方法中的bnmf概率模型示意图。图2是本发明贝叶斯协同过滤推荐方法中的hbpm概率模型示意图。具体实施方式下面结合附图和具体实施例对本发明作进一步说明,以使本领域的技术人员可以更好地理解本发明并能予以实施,但所举实施例不作为对本发明的限定。我们的模型主要由两部分组成。第一部分主要通过bnmf获取隐藏信息,第二部分结合隐藏信息和显式信息,使用改进的朴素贝叶斯分类器。变分贝叶斯非负矩阵分解模型的输入为协同过滤推荐系统的评分矩阵分解为两个潜在矩阵其中对于m×k的矩阵uik表示用户i属于组k的概率,uik∈(0,1);对于n×k的矩阵vjk表示用户组k喜欢商品j的证据,即预测评分矩阵r'=uvt。由于数据集r比较稀疏,所以观察的条目可以用集合ω={(i,j)|rijisobserved}。我们对这个问题采取概率方法。我们对观测数据表示一个似然函数,并将潜在矩阵作为随机变量来处理。当我们假设r的每个值来自u和v的乘积时,加上一些高斯噪声即:r=uvt+e,其中ui,vj表示u和v的第i行和第j行,rij服从精度为τ的高斯分布。我们模型的参数集表示为θ={u,v,τ}。根据贝叶斯定理,将已观察到的数据集d={rij}i,j∈ω作为先验,然后找到关于参数θ的分布:p(θ|d)∝p(d|θ)p(θ),通常不能精确地计算后验p(θ|d),但是可以通过选择适合的先验得到一个很好的逼近。为了使分解后的矩阵数值有可解释的意义,所以将u,v约束为非负。用户与用户、商品与商品之间相互独立,所以在u和v选择选择指数先验,这样u和v中的每个元素都被假定为独立的指数分布且速率参数同时也能被约束为非负。即:对于精度τ我们采用ατ,βτ>0的伽马分布,即:变分贝叶斯中用近似q(θ)去逼近后验p(θ|d)。根据平均场理论,我们假设变分分布q(θ)完全成立,因此所有变量在后验中都是独立的,即:利用贝叶斯定理我们得到了以下分布:其中近似函数q(θi)服从以下分布:通过最小化kl散度,使近似函数q(θ)去近似后验p(θ|d):为了使kl散度最小,则只需要极大化证据下界(elbq)l(q),这样就可以得到后验p(θ|d)的近似解。即可以求得(对于某个常数c)找到第i个q*(θi)的最优分布,然后依次更新其他θi,最终相互迭代达到稳定,从而可以找到变分参数的最优更新,该算法保证了证据下界的最大化(elbo):矩阵分解中潜在因子k的选取也会对结果的预测产生很大的影响,在这里我们添加了自动相关性确定(ard)方法,我们不需要选择正确的k,而是给出一个上限,模型将自动确定要使用的因子数。将分解矩阵先验的各个参数替换为同一列中所有条目共享的一个,即为每个因子共享,并在λk上放置一个伽马先验。则先验分布变为:如图1所示,bnmf的概率模型为:朴素贝叶斯分类假设d是样本数据集,对于d中每个样本x的n个属性a1,a2,…an,用n维特征向量表示为x=[x1,x2,…,xn]。假设样本有m个类别(如评分满分5,即有5个类别),每个类别分别用c1,c2,…cm表示。根据贝叶斯定理对于待分类的样本x,可以得出在x出现的条件下,d中各个的类别ci出现的概率。比较类别出现的后验概率,选择其中概率最大的类别。由于p(x)对于所有类别都是常数,当且仅当先验概率p(x|ci)p(ci)为最大时,后验概率p(ci|x)最大。为了降低开销,实现有效估算,假设各个类别、属性相互独立,即只需考虑:假设表示训练集d中的ci类样本的集合,可以得出类先验概率:对离散属性而言,假设表示中ak属性上取值为xk的样本组成的集合,则条件概率:对连续属性而言,可以考虑概率密度函数,把连续的属性离散化。如果直接使用朴素贝叶斯进行分类预测的效果不理想。第一原始数据过于稀疏,可靠数据不足;第二数据计算量大,对内存需求高;第三数据噪声过大鲁棒性不好。普通的朴素贝叶斯认为所有数据、条件属性对分类影响是一样的,实际上其他人的喜好或者类似用户的喜好的对分类的重要性不及本人自己喜好的重要性,不同用户属性和项目属性对分类的影响也是有差别的。为了减少不同用户、属性对分类的影响,可以根据重要性对不同的用户、属性采用相应的影响因子,在加权朴素贝叶斯模型上进行了改进:其中ρi表示用户ui的权重,ωk表示属性ak的权重。其权重值越大,即影响越大,我们利用信息熵计算该权值。我们的模型hbpm如图2所示,hbpm中的“隐”体现在从bnmf中的u矩阵获得的隐藏用户组k;由u矩阵v矩阵相乘得到一个预测评分矩阵,从中获得了一部分隐藏但可靠预测评分。最后结合属性利用改进的朴素贝叶斯进行修正,得到最终预测结果。hbpm的算法流程在算法1中显示。下面介绍本发明的一个具体应用场景:我们以简单直观的方式展示我们的模型。如表1所示,是一个小数据集评级矩阵,其中有11个用户和15种项目用户m=11和项目n=15。数字表示用户对项目的评分,评分越高表示越喜欢,‘*’表示尚未评分的缺失数据。从图中我们可以明显看出喜好相同的用户组为{u1、u2、u3、u10}、{u4、u5、u6、u11}、{u7、u8、u9}。我们可以从该评级矩阵中直观的观察到用户u5可能喜欢项目i8,但是无法直接观察到用户u5对i4的态度。表2是经过bnmf方法分解后的u矩阵(取潜在因子k=3),具有一定的可解释意义,该矩阵每个项uik表示用户i属于用户组k的证据,可以通过分解的子矩阵将用户组划分为3类:{u1、u2、u3、u10}、{u4、u5、u6、u11}、{u7、u8、u9},即使用子矩阵中的隐藏因子进行聚类,具有相似性喜好的用户被划分为一组。表1用户评分矩阵表3是经过bnmf方法分解后的v矩阵,该矩阵的每个项vjk表示第k组中的用户喜欢各个项目的证据,可以看出第一组中的用户喜欢项目{i1,i2,i3,i4,i5},组2中的用户喜欢项目{i6,i7,i8,i9,i10},组3中的用户喜欢{i7,i11,i12,i13,i14,i15}。表2bnmf分解后的u矩阵f1f2f3clusteru10.820.070.061u20.800.090.171u30.720.180.351u40.110.840.082u50.260.760.232u60.100.820.182u70.440.110.673u80.100.110.723u90.320.360.603u100.750.120.351u110.090.810.212表3bnmf分解后的v矩阵i1i2i3i4i5i6i7i8i9i10i11i12i13i14i15g15.616.045.735.585.820.641.770.730.594.500.740.961.351.390.91g22.310.730.712.260.755.784.805.585.864.902.270.704.212.302.31g31.570.841.861.701.431.044.891.720.732.216.405.825.685.596.31相比于经典矩阵分解的预测结果而言,除了将数据约束为非负,使预测更为合理,还对大部分缺失数据进行了很好的预测(加粗的地方为已知数据),例如经典矩阵分解中u9对项目{i1,i2,i3,i4,i5}都显示比较喜欢,但是没有足够的证据显示喜欢这些项目,而bnmf预测为3分(中间值)相对来说更为合理。但是如果推荐系统中为了提高mae都对这些证据不足的项目赋予平均值或者中间值,就失去了推荐的意义。再此基础上想要对u9对项目{i1,i2,i3,i4,i5}的喜好进行更准确的预测,需要看到项目之间潜在的联系。结合项目属性,观察u9对已评分项目中喜欢和不喜欢的区别和联系,引申为对属性的喜欢或不喜欢。这里利用改进的朴素贝叶斯分类,对用户对项目的喜好进行更准确的预测。我们的实验在真实数据集上,也进行了实验。我们使用movielens100k和movielens1m作为实验数据集,这两个数据集都是用户通过对电影的评分(分值范围:1~5的整数)来衡量对项目的喜爱度,其中每个注册用户至少对20部电影进行了评级。该数据集还提供了用户属性文件,包括性别、年龄、职业、邮政编码;电影属性文件,即电影的类型,一部电影至少拥有一个属性,最多拥有6个属性。本文实验使用了用户项目评分文件,以及电影属性文件来评估我们的技术,我们将实验数据集分为两组,其中80%作为训练集(使用hbpm),20%作为测试集,每组实验重复30次,取各性能指标的平均值来检测预测结果的准确性。对于预测准确率,我们采用平均绝对误差(mae)和均方根误差(rmse)作为评价我们预测准确性的性能指标,即通过计算我们模型预测的用户评分与实际评分之间的偏差来衡量预测的准确性。测试集实际用户评分为tij,对应的预测用户评分为pij,n为测试集的大小。验证对于测试集上的推荐准确率。当预测的项目评分pij≥4时,我们认为可以推荐给用户。pr={i,j|pij≥4}表示预测结果中可以推荐给用户的集合,tr={i,j|tij≥4}表示测试集中用户喜欢的集合,pd={i,j|pij≤3}表示预测结果中不可推荐的集合,td={i,j|tij≤3}测试集中不可推荐的集合。在表4中,我们对比了我们的实验与其他方法。不同的相似性度量会对k近邻推荐系统(knn)的结果有很大的影响,这里使用了皮尔森相关系数。可以看出,相比较只使用评分信息的knn,非负矩阵分解推荐系统(bnmf)和经典矩阵分解推荐系统(classicalmf),bnmf算法在mae和准确度上就明显有所提高。多级混合相似性推荐系统(usiccf),改进朴素贝叶斯推荐系统(inb-cf)和混合多标签推荐系统(dra-hmlf),都在使用评分信息的基础上添加了用户信息或项目信息。usiccf改进了相似度算法,利用了电影属性来预测用户兴趣,这样虽然能比knn的效果更加,但这样又忽略了用户之间的潜在联系。inb-cf算法利用用户和电影属性结合朴素贝叶斯分类,但是由于数据过于稀疏,证据不足,分类效果不佳。dra-hmlf算法虽然将相似度算法和矩阵分解相结合,仅通过用户属性进行聚类却忽略了用户评分行为。我们的方法,既融入了变分贝叶斯改进了经典矩阵分解,使得对评分矩阵的初预测更为稳定和准确,又对矩阵分解中证据不足无法准确预测的部分,融入了商品信息,使得推荐准确率提高。表4我们的实验与其他方法的对比以上所述实施例仅是为充分说明本发明而所举的较佳的实施例,本发明的保护范围不限于此。本
技术领域
的技术人员在本发明基础上所作的等同替代或变换,均在本发明的保护范围之内。本发明的保护范围以权利要求书为准。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1