[发明专利]一种基于随机梯度下降的在线协同排序方法有效
申请号: | 201610534947.X | 申请日: | 2016-07-08 |
公开(公告)号: | CN106202377B | 公开(公告)日: | 2019-09-13 |
发明(设计)人: | 林通;吕晋 | 申请(专利权)人: | 北京大学 |
主分类号: | G06F16/953 | 分类号: | G06F16/953;G06F16/9535;G06Q30/02 |
代理公司: | 北京万象新悦知识产权代理有限公司 11360 | 代理人: | 黄凤茹 |
地址: | 100871*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公布了一种在线协同排序方法,通过协同排序的方法建立目标函数,并使用随机梯度下降方法求解;通过建立在线协同排序的推荐系统进行增量训练,实时更新推荐列表,实现边训练边推荐;包括:取数据集S,将S随机分为一大一小两份;利用小比例的数据集的评分数据建立用户‑产品的评分矩阵X;分解为UVT模型;使用在线协同排序方法SGDRank和小比例的数据集对矩阵U和矩阵V进行离线更新,得到UVT模型;大比例数据作为在线样本加入到矩阵X中;对矩阵U、V进行在线训练,更新UVT模型,得到训练后的X矩阵,由此实现对数据的在线协同排序。本发明方法能够有效提升排序推荐效率。 | ||
搜索关键词: | 一种 基于 随机 梯度 下降 在线 协同 排序 方法 | ||
【主权项】:
1.一种在线协同排序方法,通过协同排序的方法建立目标函数,并使用随机梯度下降方法求解;通过建立在线协同排序的推荐系统进行增量训练,实时更新推荐列表,实现边训练边推荐,由此实现在线协同排序;包括以下步骤:步骤1:选取数据集S,数据集S包含用户数据、产品数据和用户对应产品的评分数据;将S随机分为比例一大一小的两份;步骤2:利用步骤1中的小比例的数据集的评分数据建立用户‑产品的评分矩阵X,评分矩阵X中的Xij表示用户i对于产品j的评分;将矩阵中的每一行的所有评分三元组(u,v,d)进行两两组合,其中d表示用户u对产品v的评分,组合成为训练数据三元组(u,v1,v2),训练数据三元组表示用户u相对于产品v2,更喜欢产品v1;步骤3:设定一共有m个用户和n个产品,将评分矩阵X分解为式14的形式:X=UVT (式14)其中,X为m×n的矩阵;U为m×r的矩阵;V为n×r的矩阵,其中r表示用户和产品的隐特征向量的维度;所述将评分矩阵X分解具体包括如下步骤:设定矩阵X是低秩的或者接近于低秩,将经验风险最小化描述为式1:式1中,用户‑产品的评分矩阵X,Xij表示用户i对于产品j的评分;用户的偏好关系值Yijk用{Yijk∈{1,‑1}:(i,j,k)∈Ω}来表示;Xik表示用户i对于产品k的喜好(评分);损失函数l以选取铰链损失平方为例:l(x)=max(0,1‑x)2;向损失函数中加入正则项,得到基于配对级排序学习方法的协同过滤算法的损失函数表达式,如式2所示:其中,λ表示正则项的权重参数;使用随机梯度下降方法求解单个损失函数,将原问题分解为求解U矩阵子问题和求解V矩阵子问题;将求解U矩阵的子问题定义为式3:再将求解矩阵的子问题转化为求解一维向量的子问题,对于每一个U矩阵的一维向量子问题描述为式4:其中,l(x)=max(0,1‑x)2;将V矩阵子问题描述为式7:通过分别求解U矩阵子问题和V矩阵子问题求解所述评分矩阵X矩阵;所述求解U矩阵子问题具体包括如下过程:设定每一个子问题的维度都是r,对于每一个用户i来说,样本的容量大小为Ω;利用铰链损失平方函数,使用随机梯度下降的方法来求解U矩阵的一维向量子问题:根据随机梯度下降的更新公式可以得到式5:其中,η表示学习速率,以铰链损失函数的平方为例,求解wu,包括如下过程:令f(u)=l(Yijk·uT(vj‑vk))=max{0,(1‑uT(vj‑vk))2},(1)当ut(vj‑vk)<1时,(2)当ut(vj‑vk)≥1时,wu=0所以得到u的更新公式为:以上过程完成求解U矩阵子问题;所述求解V矩阵子问题具体包括如下过程:V矩阵子问题含有两个向量vj和vk,首先固定vk,更新vj,求解vj问题分解为式8:根据随机梯度下降的更新公式得到式9:其中,利用铰链损失函数的平方通过以下过程求解令g(vj)=l(Yijk·uT(vj‑vk))=max{0,(1‑uT(vj‑vk))2}(1)当ut(vj‑vk)<1时,(2)当ut(vj‑vk)≥1时,所以得到vj的更新公式为式10:然后固定vj,更新vk,对于vk来说,将求解vk问题分解为式11:根据随机梯度下降的更新公式得到式12:其中,利用铰链损失函数的平方求解如下:令g(vk)=l(Yijk·uT(vj‑vk))=max{0,(1‑uT(vj‑vk))2}(1)当ut(vj‑vk)<1时,(2)当ut(vj‑vk)≥1时,得到vk的更新公式为式13:以上过程完成求解V矩阵子问题;步骤4:对于所有的训练数据三元组(ui,vj,vk),使用在线协同排序方法SGDRank和步骤1中小比例的数据集对矩阵U和矩阵V进行离线更新,得到UVT模型;所述在线协同排序方法SGDRank具体包括如下步骤:41)将用户的数量表示为d1,将产品的数量表示为d2,定义一个三元组的集合当(i,j,k)∈Ω时,表示用户i对于产品j和产品k的偏好关系;42)将用户的偏好关系值Yijk用{Yijk∈{1,‑1}:(i,j,k)∈Ω}来表示,当用户i对产品j的喜好大于对产品k的喜好时,Yijk=1,相反地,当用户i对产品j的喜好小于对产品k的喜好时,Yijk=‑1;用Ωi={(j,k):(i,j,k)∈Ω}来表示用户i对于产品喜好的集合;43)根据评分数据建立用户‑产品的评分矩阵X,Xij表示用户i对于产品j的评分,对于矩阵X进行基于偏好的变换,在初始的评分矩阵X中,矩阵值Xij的绝对值表示用户i对产品j的评分,对评分矩阵进行重新定义;重新定义为:当Xij>Xik时,表示用户i对于产品j的喜好要大于用户i对于产品k的喜好,反之,当Xij>Xik时,表示用户i对于产品j的喜好要小于用户i对于产品k的喜好;44)对于评分矩阵X的每一行,选取出未被用户u评分的所有产品,然后进行排序,排序的结果作为对该行用户的推荐产品的顺序;所述对矩阵U和矩阵V进行离线更新,具体利用式15~式17:其中,(ui,vj,vk)为所有的训练数据三元组;U为m×r的矩阵;V为n×r的矩阵,其中r表示用户和产品的隐特征向量的维度;步骤5:将步骤1中的离线数据集中的剩余样本数据作为在线样本(u,v,d)数据集,每当到来一个在线样本(u,v,d)时,将该样本加入到矩阵X中,判断获得该矩阵中是否含有用户u的评分;当矩阵X中含有用户u的评分时,把u的所有评分三元组(u,v,d)进行两两组合成为所有可能的训练数据三元组(u,v1,v2),作为在线训练数据;步骤6:使用在线协同排序方法SGDRank和步骤5所述离线数据集中的剩余样本数据对矩阵U和矩阵V进行在线训练,并且更新UVT模型,从而得到训练后的X矩阵,进而获取X矩阵的每一行用户的产品推荐,由此实现对数据的在线协同排序。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京大学,未经北京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201610534947.X/,转载请声明来源钻瓜专利网。