首页 / 专利库 / 人工智能 / 机器学习 / 人工神经网络 / 玻尔兹曼机 / 受限玻尔兹曼机 / 基于因子化条件受限玻尔兹曼机的混合推荐方法

基于因子化条件受限玻尔兹曼机的混合推荐方法

阅读:237发布:2020-11-16

专利汇可以提供基于因子化条件受限玻尔兹曼机的混合推荐方法专利检索,专利查询,专利分析的服务。并且本 发明 提出了一种基于因子化条件受限 玻尔兹曼机 的混合推荐方法,其包括:构造目标用户 特征向量 ;构建目标用户评分矩阵集合;构建目标用户训练样例;构建因子化条件 受限玻尔兹曼机 模型;进行评分预测,以向目标用户推荐结果。通过本发明有效地解决了纯粹基于内容的推荐带来的用户兴趣表达不精确以及基于行为的推荐存在的数据稀疏性问题。,下面是基于因子化条件受限玻尔兹曼机的混合推荐方法专利的具体信息内容。

1.一种基于因子化条件受限玻尔兹曼机的混合推荐方法,其包括以下步骤:
步骤一、从电商网站数据库获取用户行为数据和物品的描述文本,输入用户特征向量构造模从而构造目标用户特征向量,其中,所述用户行为指的是B2B电子商务网站上用户对物品的评分行为,物品的描述文本指的是B2B电子商务网站上物品详情页中的物品描述文本;
其具体包括:根据用户行为数据获取用户有过评分行为的物品集合,通过物品关联的描述文本将物品集合映射成物品描述文本的集合,将该集合中的文本首尾相接合并成长文本,这样每个目标用户便关联了一个长文本,使用统计词频以及逆文档频率TF-IDF的方法构造目标用户特征向量。
步骤二、获取电商网站数据库中用户对物品的行为数据,构建用户评分集合,对每个用户去除用户评分偏置,然后对用户评分集合进行离散化处理,构建目标用户评分矩阵集合;
步骤三、将所述步骤一获取的用户特征向量和步骤二中获取的目标用户评分矩阵集合输入训练样例构造模块,输出为目标用户五元组<目标用户,目标用户特征向量,目标用户特征向量有效单元标识,目标用户评分矩阵,目标用户评分矩阵有效行标识>的集合,所述目标用户五元组为目标用户训练样例。
步骤四、将构建好的目标用户训练样例输入模型训练模块,使用对比散度学习训练因子化条件受限玻尔兹曼机,构建因子化条件受限玻尔兹曼机模型;
其中,因子化条件受限玻尔兹曼机是对受限玻尔兹曼机的扩展,其将受限玻尔兹曼机的显层扩展成二维的计算单元矩阵,并且将显层和隐层之间的连接权重矩阵分解成两个矩阵的乘积形式,同时,用户特征向量被作为所述因子化条件受限玻尔兹曼机模型的条件层引入;
同时,因子化条件受限玻尔兹曼机模型训练过程中迭代的结束条件是在验证集上前后两次预测评分的均方根误差差值的绝对值小于预设值;
步骤五、将训练好的所述因子化条件受限玻尔兹曼机模型、目标用户训练样例输入评分预测模块,进行评分预测,以向目标用户推荐结果,其具体步骤如下:
步骤5.1:使用目标用户的训练样例初始化条件层和显层;
步骤5.2:使用给定显层R和条件层C时隐层H的条件概率分布P(H|R,C)计算隐层单元取值为1的条件概率;
步骤5.3:使用给定隐层H时显层R的概率分布P(R|H)计算显层的除了缺失单元以外的所有单元取值为1的概率;
步骤5.4:目标用户对物品i的预测评分值计算公式如下:
ri:目标用户对物品i的评分;
S:用户评分的取值集合;
P(ri=s|H):给定隐层H时目标用户对物品i的评分取值为s的概率。
2.如权利要求1所述基于因子化条件受限玻尔兹曼机的混合推荐方法,其中所述去除用户评分偏置是将目标用户评分减去目标用户评分的平均值。
3.如权利要求1所述基于因子化条件受限玻尔兹曼机的混合推荐方法,其中所述对用户评分集合进行离散化处理,构建目标用户评分矩阵集合包括以下步骤:
统一约定离散化后评分的取值为{1,...,S},假设电商网站的评分取值范围是[rl,rh],目标用户u对某物品的评分是ru,那么评分离散化的公式如下:
使用矩阵表示目标用户评分,其中矩阵的行是物品,列是预处理后的评分。这一步可以看作是将目标用户评分向量映射到二维的评分矩阵上,具体如下:
步骤2.1:对每一个用户构造S×I的评分矩阵RS×I,其中行S表示评分集合,列I表示物品集合,将RS×I所有元素初始化为0;
步骤2.2:对每一个用户,遍历该用户的所有行为,用户行为可以表示为三元组,其中u表示用户,i表示物品,s表示用户u对物品i的评分,当遍历到该行为时,就将用户u的评分矩阵第i行s列位置的值置为1。

说明书全文

基于因子化条件受限玻尔兹曼机的混合推荐方法

技术领域

[0001] 本发明涉及信息提取领域,尤其涉及基于因子化条件受限玻尔兹曼机的混合推荐方法。

背景技术

[0002] 随着信息技术和互联网的发展,人们逐渐从信息匮乏的时代走入了信息过载的时代。当前,无论是信息消费者还是信息生产者都遇到了很大的挑战:对于信息消费者,从大量信息中找到自己感兴趣的信息是一件非常困难的事情;对于信息生产者,让自己生产的信息脱颖而出,受到广大用户的关注,也是一件非常困难的事情。推荐系统是解决这一矛盾的重要工具。推荐系统的任务就是关联用户和信息,一方面帮助用户发现对自己有价值的信息,另一方面让信息能够展现在对它感兴趣的用户面前,从而实现信息消费者和信息生产者的双赢。推荐系统是一种帮助用户快速发现有用信息的工具,它不需要用户提供明确的需求,通过分析用户的历史行为给用户的兴趣建模,从而主动给用户推荐能够满足他们兴趣和需求的信息。
[0003] 推荐系统的数据来源主要是用户的行为数据,包括用户的浏览行为,用户的购买行为,用户自身以及物品的内容属性等,使用这些数据对推荐模型进行训练可以得到用户兴趣,根据用户兴趣便可以给用 户作出推荐。推荐算法可以划分成如下三类:1)基于内容的推荐2)协同过滤推荐3)基于内容和协同过滤的混合推荐。
[0004] 基于内容的推荐使用的数据主要是物品的属性,基本原理是根据用户的历史行为数据,获取用户有过行为的物品集合,再根据物品的描述信息,将用户表示成一个特征向量,用户的特征向量和物品的特征向量在相同的向量空间中,因此可以很方便的通过相似度计算获取用户最感兴趣的物品。协同过滤推荐是推荐系统中应用最早、研究最成熟的推荐算法,协同过滤算法分析用户的兴趣,在用户群中找到目标用户的相似用户,并且综合这些相似用户对某一物品的评价,最后形成目标用户对特定物品的喜好程度的预测。 [0005] 基于内容和协同过滤的混合推荐是对上述两种方法的综合,在模型训练过程中不仅使用用户的历史行为数据,而且还会结合用户访问过的物品集合的内容属性,使得方法兼具基于内容推荐和基于协同过滤的长处。混合推荐可以分为如下几类,分别是加权型、转换型、合并型、特征组合型、瀑布型、特征递增型、元层次型等,本发明属于的类型是特征组合型。所谓特征组合型指的是推荐模型可以结合用户行为信息以及内容属性信息给目标用户作出推荐。在基于因子化条件受限玻尔兹曼机的混合推荐方法和系统中,将物品的属性信息作为用户的行为信息的补充,有效地解决了纯粹基于内容的推荐带来的用户兴趣表达不精确以及基于行为的推荐存在的数据稀疏性问题。本发明提出了因子化条件受限玻尔兹曼机模型,该模型易于处理物品的内容属性,并且在模型表达能和训练收敛速度方面相较传统的协同过滤 方法有明显的提高。

发明内容

[0006] 针对传统推荐方法和系统不能有效的将用户行为数据以及物品内容属性等结合起来使用的问题,本发明将物品内容属性作为用户行为数据的信息补充,为电子商务网站提供一种基于内容和用户行为的混合推荐方法和系统。
[0007] 为了解决上述技术问题,本发明提出一种基于因子化条件受限玻尔兹曼机的混合推荐方法和系统,结合物品的描述信息以及目标用户对物品的评分对目标用户进行个性化推荐,其特征是将物品的描述作为因子化条件受限玻尔兹曼机的条件层引入,作为目标用户行为数据的信息补充,共同影响模型参数的更新。本系统可以划分成五个模,分别是用户特征向量构造模块,评分数据预处理模块,训练样例构造模块,模型训练模块,评分预测模块。模块之间的数据流动如附图1所示,下面对每个模块内部的数据处理方法做进一步说明。
[0008] 1.用户特征向量构造模块。该模块的输入是用户行为集合和物品的描述文本,输出是用户特征向量。用户行为指的是B2B(Business To Business)电子商务网站上用户对物品的评分行为,可以使用四元组<用户,物品,评分,发生时间>表示,物品的描述文本指的是B2B电子商务网站上物品详情页中的物品描述文本。上述数据可以从电子商务网站后台的数据库中获取。根据目标用户行为集合获取目标用户有过行为的物品集合,通过物品关联的描述文本将物品集合映射成物品 描述文本的集合,将该集合中的文本首尾相接合并成长文本,这样每个目标用户便关联了一个长文本,使用统计词频以及逆文档频率(TF-IDF)的方法可以很容易的构造目标用户特征向量。
[0009] 2.评分数据预处理模块。用户评分往往是有偏置的,有的用户偏向于打高分,有的用户偏向于打低分,评分偏置对系统的影响较大,因此必须被去除。此外,如果电子商务网站提供的评分机制是连续的或者评分的取值范围超出了模型所能处理的范围,必须将评分数据映射到模型所能处理的离散的评分范围上。
[0010] 去除目标用户的评分偏置的方法是将目标用户评分减去目标用户评分的平均值。 [0011] 统一约定离散化后评分的取值为{1,...,S},假设电商网站的评分取值范围是[rl,rh],目标用户u对某物品的评分是ru,那么评分离散化的公式如下:
[0012]
[0013] 如果目标用户的评分本身就是离散的,也可以按照上面的公式进行处理。 [0014] 接下来使用矩阵的形式表示目标用户评分数据,其中矩阵的行是物品,列是预处理后的评分。这一步可以看作是将目标用户评分向量映射到二维的评分矩阵上。具体的步骤如下:
[0015] 步骤2.1:对每一个用户构造S×I的评分矩阵RS×I,其中行S表示评分集合,列I表示物品集合,将RS×I所有元素初始化为0。
[0016] 步骤2.2:对每一个用户,遍历该用户的所有评分行为,假设评 分行为可以表示为三元组,其中u表示用户,i表示物品,s表示用户u对物品i的评分,当遍历到该行为时,就将用户u的评分矩阵第i行s列位置的值置为1。
[0017] 3.训练样例构造模块。模型的训练样例可以看作是五元组<目标用户,目标用户特征向量,目标用户特征向量有效单元标识,目标用户评分矩阵,目标用户评分矩阵有效行标识>,在目标用户特征向量中,并非所有单元都是有效的,这是因为数据经过用户特征向量构造模块处理后,仍然有单元的值可能是0,对于这些单元,统一当作缺失值来处理。目标用户评分矩阵有效行标识表示目标用户有过评分行为的物品在目标用户评分矩阵中的行标,没有被标识的行表示目标用户没有对此物品有过评分行为,也就是评分缺失。 [0018] 4.模型训练模块。在详述训练过程之前需要先说明因子化条件受限玻尔兹曼机的模型表示。
[0019] 4.1.模型表示
[0020] 因子化条件受限玻尔兹曼机由两个模块组成,分别是通信模块和隐藏编码模块,通信模块负责模型和外界的交互,包括接收外界的输入信号以及向外界输出信号,该模块由显层和条件层构成,它们的区别在于接收输入信号的类型不同,显层和条件层分别由若干计算单元组成。隐藏编码模块负责提取输入信号的结构特征,它仅包含单层的计算单元,即隐层。因子化条件受限玻尔兹曼机限制计算单元之间的连接只存在于隐层和显层、隐层和条件层之间,相同层的单元之间则不存在连接。在图1中可以看到因子化条件受限玻尔兹曼机的各个组 成部分。约定使用H表示隐层,R表示评分层,其中行S表示用户评分,列I表示物品,打叉号的列是评分缺失列,表示当前用户没有对该物品评分,C表示条件层,其中打叉号的单元表示用户特征向量中值为0的单元,即用户特征向量缺失单元,W表示显层和隐层的连接权重矩阵,D表示条件层和隐层的连接权重矩阵,在图中条件层和隐层之间的连接是有向箭头,表示在评分预测过程中条件层和隐层之间的信息传递是单向的。为了形式化因子化条件受限玻尔兹曼机模型,使用如下字母分别表示模型的各个部分: [0021] H:表示隐层
[0022] R:表示显层
[0023] C:表示条件层
[0024] b:表示每一层单元的偏置
[0025] WI×S×H:表示隐层和显层之间的连接权重
[0026] DC×H:表示隐层和条件层之间的连接权重
[0027] 其中b,WI×S×H,DC×H是模型的参数,需要通过训练来求解。
[0028] 显层和条件层在给定隐层的条件下分别满足条件概率分布P(R|H)、P(C|H),隐层在给定显层和条件层的情况下满足条件概率分布P(H|R,C),根据此条件假设,可以得到R、C、H满足的联合概率分布
[0029]
[0030] 其中能量函数如下:
[0031]
[0032] 评分R的边缘概率分布:
[0033]
[0034] 4.2.模型训练
[0035] 采用极大似然估计的思想,将最小化-P(R)作为优化目标,采用梯度下降法计算-logP(R)的最小值,其关键步骤是计算-logP(R)关于模型各个参数的偏导数。 [0036] 在训练之前,有以下三个问题需要解决,分别是模型参数过多、用户评分值缺失、条件层用户特征向量属性缺失。解决方法如下:
[0037] a)模型参数过多解决方法
[0038] 借鉴矩阵因子分解的思想,将权值矩阵W分解如下:
[0039]
[0040] F:矩阵分解选择的因子数量,F<<|I|,F<<|H|。
[0041] b)用户评分值缺失和条件层用户属性缺失的解决方法
[0042] 对某个训练样例,使用其初始化模型显层和条件层单元的取值,对于训练样例中的目标用户评分缺失值以及目标用户特征向量缺失值,模型中与缺失值对应的单元将被置成缺失状态。模型训练过程中,当迭代到该训练样例时,被置成缺失状态的单元不会被使用,该步迭代的参数更新也只更新没有被置成缺失状态的单元所关联的模型参数。 [0043] logP(ru)关于各个参数的偏导数如下所示:
[0044] Δwiks=data-model (6)
[0045] Δdjk=data-model (7)
[0046] Δbis=data-model (8)
[0047] Δbk=data-model (9)
[0048] Δbj=data-model (10)
[0049] <·>data:表示表达式“·”在数据上的期望。
[0050] <·>model:表示表达式“·”在模型上的期望。
[0051] 模型表达的概率分布很难精确的求解,这是因为概率分布的归一化项形式过于复杂,因此公式中的<·>model便无法给出精确解,本发明采用的近似求解方法是对比散度学习,即CD-Learning,采用T步CD-Learning将公式6~10重写为以下形式:
[0052] Δwiks≈data-T (11)
[0053] Δdjk≈data-T (12)
[0054] Δbis≈data-T (13)
[0055] Δbk≈data-T (14)
[0056] Δbj≈data-T (15)
[0057] 考虑到模型参数过多,按照公式(5)把W展开,公式(11)可以替换为以下两个式子:
[0058]
[0059]
[0060] 假设计算而得的偏导数统一使用 表示,使用P表示模型参数,对每一个训练样例模型参数更新的方法如下:
[0061] 首先确定惩罚参数λ、动量μ、学习率ξ。
[0062] 然后使用下面的公式计算模型参数增量
[0063]
[0064] 最后权值更新使用公式
[0065] P=P+Δparams
[0066] 初始时,ΔpreviousParams设置为0,每次权值更新结束后,将ΔpreviousParams相关的有效行设置为Δparams的相关有效行。
[0067] 每一轮训练结束后,在验证集上计算均方根误差(RMSE),并和前一轮的均方根误差对比,如果前后两次均方根误差差值的绝对值小于预设值,则停止训练,均方根误差的表达式如下:
[0068]
[0069] di是预测评分和实际评分的差值,n是被预测的评分的数量。
[0070] 5.评分预测模块
[0071] 给目标用户做出评分预测的过程本质上是对目标用户评分矩阵缺失值填充的过程。对目标用户,使用下面的方法进行评分预测:
[0072] 步骤5.1:使用目标用户的训练数据初始化条件层和显层。
[0073] 步骤5.2:使用P(H|R,C)计算隐层单元取值为1的条件概率。
[0074] 步骤5.3:使用P(R|H)计算显层的除了缺失单元以外的所有单元取值为1的概率。
[0075] 步骤5.4:目标用户对物品i的预测评分值计算公式如下:
[0076]
[0077] S:用户评分的取值集合
[0078] 本发明使用物品内容属性作为传统协同过滤的信息补充,并且借鉴了矩阵因子分解的思想,将受限玻尔兹曼机模型的参数大大减少。本发明具有较强的扩展能力,易于将用户的其它行为信息应用到模型上,并且在推荐结果的精确性上优于传统的协同过滤方法。 附图说明
[0079] 图1是本发明实施例的数据流图。
[0080] 图2是目标用户评分矩阵示例。
[0081] 图3是因子化条件受限玻尔兹曼机的结构图。
[0082] 图4是基于因子化条件受限玻尔兹曼机的混合推荐方法与基于矩阵因子分解的协同过滤方法实验结果的对比图。
[0083] 图5是使用用户特征向量对模型预测精度和收敛速度的影响对比图。

具体实施方式

[0084] 下面将根据附图和具体实施例对本发明做进一步的说明。
[0085] 如图2所示,假设物品数量为6,评分分成5个等级,矩阵的行表示评分,列表示物品,初始时图中的所有元素都是0,假设有目标用户行为集合{,,},于是将目标用户评分矩阵位置第1行第1列、第4行第4列、第2行第5列都置为1,此外图中第2、3、6列都是0表示目标用户未对物品2、3、6评分。
[0086] 如图3所示,在图中条件层和隐层之间的连接是有向箭头,表示 在评分预测过程中条件层和隐层之间的信息传递是单向的。
[0087] 本发明首先根据用户的行为记录以及物品属性信息,构造用户特征向量。其次是预处理用户评分数据,并将处理之后的评分数据使用矩阵方式表示,其中矩阵的行是预处理后的评分,列是物品,矩阵中的元素是二值的。上述步骤完成之后便可以构造因子化条件受限玻尔兹曼机的训练样例。接下来是使用构造好的训练样例训练模型,最后是评分预测。下面将结合附图1对本实施例作进一步说明:
[0088] 1)用户特征向量构造模块数据处理的具体实施方法
[0089] 该模块从电商网站数据库中获取用户行为集合以及物品描述文本,经过处理转换成模型易于处理的实数值向量,即用户特征向量。具体处理方法如下:
[0090] 步骤1.1:获取目标用户的历史行为数据,从而得到目标用户有过历史行为的物品集合。
[0091] 步骤1.2:通过物品关联的描述文本将物品集合映射成物品描述文本集合,将该集合中的文本首尾相接合并成长文本,这样每个目标用户便关联了一个长文本。 [0092] 步骤1.3:使用统计词频以及逆文档频率TF-IDF方法构造用户特征向量。 [0093] 2)评分数据预处理模块数据处理的具体实施方法
[0094] 每个用户的评分都有自己的偏置,有的用户偏向于打高分,有的用户偏向于打低分,这样的偏置需要被去除。此外,电商网站用户评分的取值范围可能是连续的或者大于模型预设的取值范 围,模型所能处理的评分必须是满足预设取值范围限制的离散的评分,因此用户评分数据必须经过预处理。具体处理方法如下:
[0095] 去除目标用户的评分偏置的方法是将目标用户评分减去目标用户评分的平均值。 [0096] 统一约定离散化后评分的取值为{1,...,S},假设电商网站的评分取值范围是[rl,rh],目标用户u对某物品的评分是ru,那么评分离散化的公式如下:
[0097]
[0098] 如果目标用户的评分本身就是离散的,也可以按照上面的公式进行处理。 [0099] 使用矩阵的形式表示目标用户评分数据,其中矩阵的行是物品,列是预处理后的评分。这一步可以看作是将目标用户评分向量映射到二维的评分矩阵上。具体的步骤如下:
[0100] 步骤2.1:对每一个用户构造S×I的评分矩阵RS×I,其中行S表示评分集合,列I表示物品集合,将RS×I所有元素初始化为0。
[0101] 步骤2.2:对每一个用户,遍历该用户的所有评分行为,假设评分行为可以表示为三元组,其中u表示用户,i表示物品,s表示用户u对物品i的评分,当遍历到该行为时,就将用户u的评分矩阵第i行s列位置的值置为1。
[0102] 3)训练样例构造模块数据处理的具体实施方法
[0103] 该模块将之前几个模块的输出数据,即用户特征向量和用户评分数据组织成五元组的形式用于模型训练。具体处理方法如下:
[0104] 模型的训练样例可以看作是五元组<目标用户,目标用户特征向量,目标用户特征向量有效单元标识,目标用户评分矩阵,目标用户评分矩阵有效行标识>,在目标用户特征向量中,并非所有单元都是有效的,有的单元的值是0,对于这些单元,统一当作缺失值来处理。目标用户评分矩阵有效行标识表示目标用户有过评分行为的物品在目标用户评分矩阵中的行标,没有被标识的行表示目标用户没有对此物品有过评分行为也就是评分缺失。 [0105] 4)模型训练模块数据处理的具体实施方法
[0106] 该模块使用对比散度学习方法训练模型,训练的结束条件是前后两次迭代模型均方根误差差值的绝对值小于预设值。训练之前需要解决的主要问题是训练样例中单元缺失值以及模型参数过多问题。
[0107] 模型表示
[0108] 因子化条件受限玻尔兹曼机由两个模块组成,分别是通信模块和隐藏编码模块,通信模块负责模型和外界的交互,包括接收外界的输入信号以及向外界输出信号,该模块由显层和条件层构成,它们的区别在于接收输入信号的类型不同,显层和条件层分别由若干计算单元组成。隐藏编码模块负责提取输入信号的结构特征,它仅包含单层的计算单元,即隐层。因子化条件受限玻尔兹曼机限制计算单元之间的连接只存在于隐层和显层、隐层和条件层之间,相同层的单元之间则不存在连接。在图1中可以看到因子化条件受限玻尔兹曼机的各个组成部分。约定使用H表示隐层,R 表示评分层,其中行S表示用户评分,列I表示物品,打叉号的列是评分缺失列,表示当前用户没有对该物品评分,C表示条件层,其中打叉号的单元表示用户特征向量中值为0的单元,即用户特征向量缺失单元,W表示显层和隐层的连接权重矩阵,D表示条件层和隐层的连接权重矩阵,在图中条件层和隐层之间的连接是有向箭头,表示在评分预测过程中条件层和隐层之间的信息传递是单向的。 [0109] 显层和条件层在给定隐层的条件下分别满足条件概率分布P(R|H)、P(C|H),隐层在给定显层和条件层的情况下满足条件概率分布P(H|R,C),根据此条件假设,可以得到R、C、H满足的联合概率分布
[0110]
[0111] 其中能量函数如下:
[0112]
[0113] 评分R的边缘概率分布:
[0114]
[0115] 上述公式中字母含义如下:
[0116] ri:表示目标用户对物品i的评分
[0117] bis:表示显层单元(i,s)的偏置
[0118] hk:表示隐层第k个单元的取值
[0119] wiks:表示显层单元(i,s)和隐层单元k的连接权重
[0120] p(cj=1):表示条件层第j个单元的取值为1的概率
[0121] bj:表示条件层第j个单元的偏置
[0122] djk:表示条件层第j个单元和隐层第k个单元的连接权重
[0123] bk:表示隐层第k个单元的偏置
[0124] Iu:表示用户u购买的物品集合
[0125] Cu:表示用户u的属性向量中不为0的位置集合
[0126] U:表示用户集合
[0127] 模型训练
[0128] 采用极大似然估计的思想,将最小化-P(R)作为优化目标,采用梯度下降法计算-logP(R)的最小值,其关键步骤是计算-logP(R)关于模型各个参数的偏导数。 [0129] 在训练之前,有以下三个问题需要解决,分别是模型参数过多、用户评分值缺失、条件层用户特征向量属性缺失。解决方法如下:
[0130] a)模型参数过多
[0131] 借鉴矩阵因子分解的思想,将权值矩阵W分解成三维矩阵P和二维矩阵Q的乘积: [0132]
[0133] wiks:表示显层单元(i,s)和隐层单元k的连接权重。
[0134] F:矩阵分解选择的因子数量,F<<|I|,F<<|H|。
[0135] b)用户评分值缺失和条件层用户属性缺失
[0136] 对某个训练样例,使用其初始化模型显层和条件层单元的取值,对于训练样例中的目标用户评分缺失值以及目标用户特征向量缺失值,模型中与缺失值对应的单元将被置成缺失状态。模型训练过程中,当迭代到该训练样例时,被置成缺失状态的单元不会被使用,该步迭代的参数更新也只更新没有被置成缺失状态的单元所关联的模型参数。 [0137] logP(ru)关于各个参数的偏导数如下所示:
[0138] Δwiks=data-model (6)
[0139] Δdjk=data-model (7)
[0140] Δbis=data-model (8)
[0141] Δbk=data-model (9)
[0142] Δbj=data-model (10)
[0143] <·>data:表示表达式“·”在数据上的期望。
[0144] <·>model:表示表达式“·”在模型上的期望。
[0145] 模型表达的概率分布很难精确的求解,这是因为概率分布的归一化项形式过于复杂,因此公式中的<·>model便无法给出精确解,本发明采用的近似求解方法是对比散度学习,即CD-Learning,采用T步CD-Learning将上面公式重写为以下形式:
[0146] Δwiks≈data-T (11)
[0147] Δdjk≈data-T (12)
[0148] Δbis≈data-T (13)
[0149] Δbk≈data-T (14)
[0150] Δbj≈data-T (15)
[0151] 考虑到模型参数过多,按照公式(5)把W展开,公式(11)可以替换为以下两个式子:
[0152]
[0153]
[0154] 假设计算而得的偏导数统一使用 表示,使用P表示模型参数,对每一个训练样例模型参数更新的方法如下:
[0155] 首先确定惩罚参数λ、动量μ、学习率ξ。
[0156] 然后使用下面的公式计算模型参数增量
[0157]
[0158] 最后权值更新使用公式
[0159] P=P+Δparams
[0160] 初始时,ΔpreviousParams设置为0,每次权值更新结束后,将ΔpreviousParams相关的有效行设置为Δparams的相关有效行。
[0161] 每一轮训练结束后,在验证集上计算均方根误差(RMSE),并和前一轮的均方根误差对比,如果前后两次均方根误差差值的绝对值小于预设值,则停止训练,均方根误差的表达式如下:
[0162]
[0163] di是预测评分和实际评分的差值,n是被预测的评分的数量。
[0164] 使用CD-Learning时,假设给定隐藏层H时显层R的条件概率 分布P(R|H)、给定隐藏层H时条件层C的条件概率分布P(C|H)、给定显层R和条件层C时隐藏层H的条件概率分布P(H|R,C)满足伯努利分布,公式分别如下:
[0165]
[0166]
[0167]
[0168] ris:表示显层评分矩阵位置(i,s)的取值
[0169] ri:表示目标用户对物品i的评分
[0170] bis:表示显层单元(i,s)的偏置
[0171] hk:表示隐层第k个单元的取值
[0172] wiks:表示显层单元(i,s)和隐层单元k的连接权重
[0173] p(cj=1):表示条件层第j个单元的取值为1的概率
[0174] bj:表示条件层第j个单元的偏置
[0175] djk:表示条件层第j个单元和隐层第k个单元的连接权重
[0176] bk:表示隐层第k个单元的偏置
[0177] Iu:表示用户u购买的物品集合
[0178] Cu:表示用户u的属性向量中不为0的位置集合
[0179] σ(·):表示sigmoid函数,其形式如下:
[0180]
[0181] 模型训练使用对比散度学习,即T步CD-Learning,训练过程如 下:
[0182] 步骤4.1:使用训练数据初始化显层和条件层单元的取值。
[0183] 步骤4.2:按照公式(22)计算出各隐藏单元被置为1的概率,并将概率赋值给隐藏单元。
[0184] 步骤4.3:将隐藏单元按照各自概率赋值为0或1。
[0185] 步骤4.4:使用步骤4.3中计算而得的隐藏单元的值按照公式(20)、(21)分别计算显层和条件层各单元的取值,并将显层和条件层单元各自赋值。
[0186] 步骤4.5:重复步骤4.2、步骤4.3、步骤4.4(T-1)次,接着重复步骤4.2一次。 [0187] 上述步骤完成之后,便可以使用模型中相关单元的值来计算<·>T。
[0188] 偏导数计算公式中,<·>data计算过程如下:
[0189] 步骤1:使用训练数据初始化显层和条件层单元的取值。
[0190] 步骤2:按照公式(22)计算出各隐藏单元被置为1的概率,并将概率赋值给隐藏单元。
[0191] 上述步骤完成之后,可以使用模型中相关单元的值来计算<·>data。
[0192] 整个训练过程的伪代码分为以下两部分:
[0193] (a)因子化条件受限玻尔兹曼机的训练过程
[0194]
[0195] (b)模型一个周期的训练过程
[0196]
[0197] 5)评分预测模块数据处理的具体实施方法
[0198] 给目标用户做出评分预测的过程本质上是对目标用户评分矩阵缺失值填充的过程。对目标用户,使用下面的方法进行评分预测:
[0199] 步骤5.1:使用目标用户的训练数据初始化条件层和显层。
[0200] 步骤5.2:使用P(H|R,C)计算隐层单元取值为1的条件概率。
[0201] 步骤5.3:使用P(R|H)计算显层的除了缺失单元以外的所有单元 取值为1的概率。
[0202] 步骤5.4:目标用户对物品i的预测评分值计算公式如下:
[0203]
[0204] ri:目标用户对物品i的评分
[0205] S:用户评分的取值集合
[0206] P(ri=s|H):给定隐层H时目标用户对物品i的评分取值为s的概率
[0207] 对目标用户做出推荐有两点需要注意:
[0208] a)评分预测依然可以借鉴T步CD-Learning的思想,在显层和隐层之间多次采样。 [0209] b)在显层和隐层之间多次采样并不意味着要在条件层和隐层之间多次采样,P(H|R,C)在多次采样过程中的计算只使用初始的条件层各单元取值,而显层单元取值使用每次的采样结果。
[0210] 6)在公开数据集上评估模型
[0211] 该部分使用公开数据集评估因子化条件受限玻尔兹曼机模型,以RMSE为评价指标,比较基于因子化条件受限玻尔兹曼机的混合推荐方法与基于矩阵因子分解的协同过滤方法的实验结果,并且对比了使用用户特征向量对模型预测精度和收敛速度的影响。 [0212] a)数据集准备
[0213] 使用MovieLens1M(http://www.grouplens.org/node/73)作为本实施例的实验数据集,MovieLens1M数据集包含6039个用户和3883部电影,总共999868个用户评价数据(取值范围1~ 5),除此以外还包含19种电影类别,每部电影属于若干个类别。 [0214] b)数据集预处理
[0215] 将每个用户的所有评分行为按照日期升序排列,取末尾1/10作为测试数据,其余作为训练数据。
[0216] c)构造用户特征向量
[0217] MovieLens1M数据集中每部电影都属于若干类别,特征向量取电影的类别,根据目标用户的行为集合可以获取目标用户访问所有电影类别的频次,通过归一化可以获得目标用户的特征向量。
[0218] d)评价指标
[0219] 采用均方根误差(RMSE)作为本实施例的评价指标。算法每次完成迭代后,计算当前模型在测试集上的均方根误差。
[0220] e)比较对象
[0221] 比较基于因子化条件受限玻尔兹曼机的混合推荐方法与基于矩阵因子分解的协同过滤方法的实验结果。其中隐藏层单元数量设置为100。此外,本发明对比了使用用户特征向量对模型预测精度和收敛速度的影响。
[0222] f)实验结果分析
[0223] 从图4可以看出基于因子化条件受限玻尔兹曼机的混合推荐优于基于矩阵因子分解的协同过滤方法,具体表现在推荐结果的精度以及训练的收敛速度上。
[0224] 从图5可以看出将用户特征向量作为条件层引入模型能够加 快模型的收敛速度,并且提高模型评分预测的准确性。
[0225] 以上所述仅是本发明的优选实施方式,应当指出:对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈