一种应用的推荐方法、装置及计算机可读介质与流程

文档序号:11199270阅读:231来源:国知局
一种应用的推荐方法、装置及计算机可读介质与流程

本发明涉及通信技术领域,尤其涉及一种应用的推荐方法、装置及计算机可读介质。



背景技术:

随着互联网信息量的膨胀以及电子商务的迅速发展,信息过载问题却愈发严重。无论是信息消费者还是信息生产者都遇到了很大的挑战:一方面,对于信息消费者来说,他们越来越难从海量的数据中快速准确的找到对自己有价值的信息;而另一方面,对于信息生产者来说,他们很难让自己生产的信息在海量数据中脱颖而出,让信息消费者关注到自己。

如何解决这个问题?推荐系统由此应运而生,它是解决这一类问题的重要工具。推荐系统的任务就是联系信息消费者和信息生产者,一方面帮助信息消费者发现对自己有用的信息,另一方面帮助信息生产者生产的信息能够方便快捷的展现在对该信息感兴趣的信息消费者面前,从而实现信息消费者和信息生产者两者的双赢局面。

slopeone算法两种常用的实现方式:weightedslopeone和bi-polarslopeone,其缺点在于算法在计算过程没有考虑到相似度问题。且根据文献的研究明,相较于传统的协同过滤算法,当数据变得比较稀疏时,slopeone算法并不算优秀。

此外,由于应用中心的数据量非常大,其包括应用名称,标签,应用描述,图标,下载量,以及用户的操作历史包括,下载,评论,评分以及热度排行等等。slopeone协同过滤是要将所有物品属性以及用户操作历史行为数据进行相应的矩阵运算,在数据不变的情况下,服务器集群要将所有数据计算出来有一定的困难。



技术实现要素:

本发明实施例提供了一种应用的推荐方法、装置及计算机可读介质,旨在无论数据稠密或稀疏,都能提高应用推荐的精度,提升用户体验。

有鉴于此,本发明实施例第一方面,提供了一种应用的推荐方法,所述应用的推荐方法包括以下步骤:

获取所有用户在应用中心的操作历史数据,并据此生成主矩阵a;

计算所述主矩阵a的近似矩阵ak;

通过所述近似矩阵ak获取用户相似度矩阵;

结合所述用户相似度矩阵和用基于阈值的动态邻居选择方法获取特定用户的邻居用户合集;

根据所述特定用户在应用中心的操作历史数据及所述邻居用户合集计算所述特定用户对目标应用的预测评分;

根据所述预测评分生成应用推荐列表。

在一种可能的设计中,所述计算所述主矩阵a的近似矩阵ak包括:

通过奇异值分解所述主矩阵a,得到第一矩阵u、第二矩阵∑、第三矩阵v;

计算维度k,并据此得到第一子矩阵uk、第二子矩阵∑k、第三子矩阵vk;

所述近似矩阵ak为所述第一子矩阵uk、第二子矩阵∑k及所述第三子矩阵vk的倒置矩阵的乘积。

在一种可能的设计中,所述计算维度k包括:若所述主矩阵a是一个n×m的矩阵,则k与n或m中值较小的一个相等。

在一种可能的设计中,所述通过所述近似矩阵ak获取用户相似度矩阵包括:

通过以下公式得到用户相似度矩阵:

其中,simij表示用户i和用户j的相似度。

在一种可能的设计中,所述通过所述近似矩阵ak获取用户相似度矩阵包括:

利用余弦相似度公式获取应用之间的相似度;

结合所述应用之间的相似度计算所述用户相似度矩阵。

在一种可能的设计中,所述根据所述特定用户在应用中心的操作历史数据及所述邻居用户合集计算所述特定用户对目标应用的预测评分包括:

定义所述特定用户的已评分应用集合为ru,所述主矩阵a中对应用itemi的评分为auseri;由以下公式计算集合ru中每个应用itemj和目标应用itemi的均差值disij;

计算预测评分reui,其中numij表示所述邻居用户合集中应用itemi和itemj均有评分的用户数目:

本发明实施例第二方面提供了一种应用的推荐装置,所述应用的推荐装置包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的应用的推荐程序,所述应用的推荐程序被所述处理器执行时实现如权利要求1至5中任一项所述的应用的推荐方法的步骤。

在一种可能的设计中,所述根据所述特定用户在应用中心的操作历史数据及所述邻居用户合集计算所述特定用户对目标应用的预测评分时,所述应用的推荐程序被所述处理器执行时以实现以下步骤:

定义所述特定用户的已评分应用集合为ru,所述主矩阵a中对应用itemi的评分为auseri;由以下公式计算集合ru中每个应用itemj和目标应用itemi的均差值disij;

计算预测评分reui,其中numij表示所述邻居用户合集中应用itemi和itemj均有评分的用户数目:

本发明实施例第三方面提供了一种计算机可读介质,所述计算机可读介质存储有应用的推荐程序,所述计算机可读存储介质上存储有应用的推荐程序,所述应用的推荐程序被处理器执行时实现如权利要求1至5中任一项所述的应用的推荐方法的步骤。

在一种可能的设计中,所述根据所述特定用户在应用中心的操作历史数据及所述邻居用户合集计算所述特定用户对目标应用的预测评分时,所述应用的推荐程序被所述处理器执行时以实现以下步骤:

定义所述特定用户的已评分应用集合为ru,所述主矩阵a中对应用itemi的评分为auseri;由以下公式计算集合ru中每个应用itemj和目标应用itemi的均差值disij;

计算预测评分reui,其中numij表示所述邻居用户合集中应用itemi和itemj均有评分的用户数目:

本发明提供的应用的推荐方法、装置及计算机可读介质能够在一定程度上解决大数据矩阵计算量的问题,同时提高推荐的精确度。

附图说明

图1为本发明一种应用的推荐方法一个实施例的示意图;

图2为本发明一种应用的推荐方法另一个实施例的示意图;

图3为本发明一种应用的推荐方法另一个实施例的示意图;

图4是本发明实施例的对某一特定用户预测评分排前十的应用的示意图;

图5是本发明实施例的对某一应用的预测得分和实际得分的方差结果示意图;

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本发明的说明,其本身没有特定的意义。因此,“模块”、“部件”或“单元”可以混合地使用。

请参阅图1,图1为本发明一种应用的推荐方法,所述应用的推荐方法包括以下步骤:

301、开始;

302、获取所有用户在应用中心的操作历史数据,并据此生成主矩阵a;

一般地,一个终端对应一个用户;当然若应用中心是设有账号的,也可以是一个终端对应多个用户;终端需要上传用户在应用中心的操作历史数据;用户的操作历史数据包括对应于的下载、评论、评分等;在具体实施时,将应用名称结合其对应的所有用户的操作历史数据生成主矩阵a即可;在本发明的另一实施例中主矩阵还可以加入应用标签、应用描述、图标、下载量以及热度排行等数据信息;

303、计算所述主矩阵a的近似矩阵ak;

304、通过所述近似矩阵ak获取用户相似度矩阵;

305、结合所述用户相似度矩阵和用基于阈值的动态邻居选择方法获取特定用户的邻居用户合集;

306、根据所述特定用户在应用中心的操作历史数据及所述邻居用户合集计算所述特定用户对目标应用的预测评分;

307、根据所述预测评分生成应用推荐列表;

308、结束。

可选地,在上述图1对应的实施例的基础上,本发明实施例提供的应用的推荐方法另一个可选实施例中,在执行计算所述主矩阵a的近似矩阵ak的步骤时,如图2所示,具体包括:

401、开始;

402、通过奇异值分解所述主矩阵a,得到第一矩阵u、第二矩阵∑、第三矩阵v;

矩阵的特征值分解可以得到特征值与特征向量,特征向量可以用来描述矩阵的特性,但是它只是对方阵而言的,在现实的世界中,大部分矩阵都不是方阵。而奇异值分解是一个能适用于任意的矩阵的一种分解的方法。

奇异值分解可以用如下公式表达:

a=uσvt

其中,a是一个n*m的矩阵,那么得到的u是一个n*n的方阵(里面的向量是正交的,u里面的向量称为左奇异向量),σ是一个n*m的矩阵(除了对角线的元素都是0,对角线上的元素称为奇异值),vt(v的转置)是一个n*n的矩阵,里面的向量也是正交的,v里面的向量称为右奇异向量);

在具体计算时,可以先将主矩阵a的进行转置得到at,将会得到一个方阵,我们用这个方阵求特征值可以得到:

(ata)vi=λvi

这里得到的v,就是我们上面的右奇异向量。此外我们还可以得到:

这里的σ就是上面说的奇异值;u就是左奇异向量;

403、计算维度k,并据此得到第一子矩阵uk、第二子矩阵∑k、第三子矩阵vk;

一般地,若所述主矩阵a是一个n×m的矩阵,则k与n或m中值较小的一个相等;

404、所述近似矩阵ak为所述第一子矩阵uk、第二子矩阵∑k及所述第三子矩阵vk的倒置矩阵的乘积;

对于第二矩阵σ,保留其中k个最大的奇异值,得到一个新的维度为k×k,k×n的第二子矩阵矩阵σk。相应的,通过删除第一矩阵u以及第三矩阵v相应的行或列,得到维度分别为m×k的第一子矩阵uk和第三子矩阵vk,然后对矩阵a重构;令然后生成了一个秩等于k的所有矩阵中与矩阵a最近似的矩阵ak;

405、结束。

通过上述分析可以得到,奇异值可以表示一个给定矩阵与比其秩低的矩阵的接近程度。通过这种矩阵的分解,可以找到矩阵a的一个近似简化矩阵。

可选地,在上述图1或图2对应的任一实施例的基础上,本发明实施例提供的应用的推荐方法另一个可选实施例中,在通过所述近似矩阵ak获取用户相似度矩阵时,包括:

通过以下公式得到用户相似度矩阵:

其中,simij表示用户i和用户j的相似度。

可选地,在上述图1或图2对应的任一实施例的基础上,本发明实施例提供的应用的推荐方法另一个可选实施例中,在通过所述近似矩阵ak获取用户相似度矩阵时,如图3所示,包括:

501、开始;

502、利用余弦相似度公式获取应用之间的相似度;

更具体地,可以采取以下公式获取应用之间的相似度:

503、结合所述应用之间的相似度计算所述用户相似度矩阵;

也就是说,在计算用户相似度矩阵时,需要考虑到应用之间的相似度;

504、结束。

需要说明的是,若主矩阵a是一个n*m的矩阵,则近似矩阵ak同样也是一个n*m的矩阵,如果将近似矩阵中的每一行作为对应用户的特征,利用余弦相似性,可以得到一个m*m的用户相似度矩阵。

可选地,在上述的任一实施例提供的应用的推荐方法的基础上,本发明实施例提供的应用的推荐方法另一个可选实施例中,在通过所述近似矩阵ak获取用户相似度矩阵时,包括:

定义所述特定用户的已评分应用集合为ru,所述主矩阵a中对应用itemi的评分为auseri;由以下公式计算集合ru中每个应用itemj和目标应用itemi的均差值disij;

计算预测评分reui,其中numij表示所述邻居用户合集中应用itemi和itemj均有评分的用户数目:

本发明还提供一种应用的推荐装置,所述应用的推荐装置包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的应用的推荐程序,所述应用的推荐程序被所述处理器执行时实现本发明任一实施例提供的应用的推荐方法的步骤。

更具体地,所述应用的推荐程序被所述处理器执行以实现以下步骤:

获取所有用户在应用中心的操作历史数据,并据此生成主矩阵a;

一般地,一个终端对应一个用户;当然若应用中心是设有账号的,也可以是一个终端对应多个用户;终端需要上传用户在应用中心的操作历史数据;用户的操作历史数据包括对应于的下载、评论、评分等;在具体实施时,将应用名称结合其对应的所有用户的操作历史数据生成主矩阵a即可;在本发明的另一实施例中主矩阵还可以加入应用标签、应用描述、图标、下载量以及热度排行等数据信息;

计算所述主矩阵a的近似矩阵ak;

通过所述近似矩阵ak获取用户相似度矩阵;

结合所述用户相似度矩阵和用基于阈值的动态邻居选择方法获取特定用户的邻居用户合集;

根据所述特定用户在应用中心的操作历史数据及所述邻居用户合集计算所述特定用户对目标应用的预测评分;

根据所述预测评分生成应用推荐列表。

在本发明的一个实施例中,当执行计算所述主矩阵a的近似矩阵ak时,所述应用的推荐程序被所述处理器执行以实现以下步骤:

通过奇异值分解所述主矩阵a,得到第一矩阵u、第二矩阵∑、第三矩阵v;

矩阵的特征值分解可以得到特征值与特征向量,特征向量可以用来描述矩阵的特性,但是它只是对方阵而言的,在现实的世界中,大部分矩阵都不是方阵。而奇异值分解是一个能适用于任意的矩阵的一种分解的方法。

奇异值分解可以用如下公式表达:

a=uσvt

其中,a是一个n*m的矩阵,那么得到的u是一个n*n的方阵(里面的向量是正交的,u里面的向量称为左奇异向量),σ是一个n*m的矩阵(除了对角线的元素都是0,对角线上的元素称为奇异值),vt(v的转置)是一个n*n的矩阵,里面的向量也是正交的,v里面的向量称为右奇异向量);

在具体计算时,可以先将主矩阵a的进行转置得到at,将会得到一个方阵,我们用这个方阵求特征值可以得到:

(ata)vi=λvi

这里得到的v,就是我们上面的右奇异向量。此外我们还可以得到:

这里的σ就是上面说的奇异值;u就是左奇异向量;

计算维度k,并据此得到第一子矩阵uk、第二子矩阵∑k、第三子矩阵vk;

一般地,若所述主矩阵a是一个n×m的矩阵,则k与n或m中值较小的一个相等;

所述近似矩阵ak为所述第一子矩阵uk、第二子矩阵∑k及所述第三子矩阵vk的倒置矩阵的乘积;

对于第二矩阵σ,保留其中k个最大的奇异值,得到一个新的维度为k×k,k×n的第二子矩阵矩阵σk。相应的,通过删除第一矩阵u以及第三矩阵v相应的行或列,得到维度分别为m×k的第一子矩阵uk和第三子矩阵vk,然后对矩阵a重构;令然后生成了一个秩等于k的所有矩阵中与矩阵a最近似的矩阵ak。

在本发明的一个实施例中,当通过所述近似矩阵ak获取用户相似度矩阵时,所述应用的推荐程序被所述处理器执行以实现以下步骤:

通过以下公式得到用户相似度矩阵:

其中,simij表示用户i和用户j的相似度。

在本发明的一个实施例中,当通过所述近似矩阵ak获取用户相似度矩阵时,所述应用的推荐程序被所述处理器执行以实现以下步骤:

利用余弦相似度公式获取应用之间的相似度;

更具体地,可以采取以下公式获取应用之间的相似度:

结合所述应用之间的相似度计算所述用户相似度矩阵;

也就是说,在计算用户相似度矩阵时,需要考虑到应用之间的相似度;

需要说明的是,若主矩阵a是一个n*m的矩阵,则近似矩阵ak同样也是一个n*m的矩阵,如果将近似矩阵中的每一行作为对应用户的特征,利用余弦相似性,可以得到一个m*m的用户相似度矩阵。

在本发明的一个实施例中,当通过所述近似矩阵ak获取用户相似度矩阵时,所述应用的推荐程序被所述处理器执行以实现以下步骤:

定义所述特定用户的已评分应用集合为ru,所述主矩阵a中对应用itemi的评分为auseri;由以下公式计算集合ru中每个应用itemj和目标应用itemi的均差值disij;

计算预测评分reui,其中numij表示所述邻居用户合集中应用itemi和itemj均有评分的用户数目:

本发明还提供一种计算机可读介质,其特征在于,所述计算机可读存储介质上存储有应用的推荐程序,所述应用的推荐程序被处理器执行时实现本发明任一实施例提供的应用的推荐方法的步骤。

更具体地,所述应用的推荐程序被所述处理器执行以实现以下步骤:

获取所有用户在应用中心的操作历史数据,并据此生成主矩阵a;

一般地,一个终端对应一个用户;当然若应用中心是设有账号的,也可以是一个终端对应多个用户;终端需要上传用户在应用中心的操作历史数据;用户的操作历史数据包括对应于的下载、评论、评分等;在具体实施时,将应用名称结合其对应的所有用户的操作历史数据生成主矩阵a即可;在本发明的另一实施例中主矩阵还可以加入应用标签、应用描述、图标、下载量以及热度排行等数据信息;

计算所述主矩阵a的近似矩阵ak;

通过所述近似矩阵ak获取用户相似度矩阵;

结合所述用户相似度矩阵和用基于阈值的动态邻居选择方法获取特定用户的邻居用户合集;

根据所述特定用户在应用中心的操作历史数据及所述邻居用户合集计算所述特定用户对目标应用的预测评分;

根据所述预测评分生成应用推荐列表。

在本发明的一个实施例中,当执行计算所述主矩阵a的近似矩阵ak时,所述应用的推荐程序被所述处理器执行以实现以下步骤:

通过奇异值分解所述主矩阵a,得到第一矩阵u、第二矩阵∑、第三矩阵v;

矩阵的特征值分解可以得到特征值与特征向量,特征向量可以用来描述矩阵的特性,但是它只是对方阵而言的,在现实的世界中,大部分矩阵都不是方阵。而奇异值分解是一个能适用于任意的矩阵的一种分解的方法。

奇异值分解可以用如下公式表达:

a=uσvt

其中,a是一个n*m的矩阵,那么得到的u是一个n*n的方阵(里面的向量是正交的,u里面的向量称为左奇异向量),σ是一个n*m的矩阵(除了对角线的元素都是0,对角线上的元素称为奇异值),vt(v的转置)是一个n*n的矩阵,里面的向量也是正交的,v里面的向量称为右奇异向量);

在具体计算时,可以先将主矩阵a的进行转置得到at,将会得到一个方阵,我们用这个方阵求特征值可以得到:

(ata)vi=λvi

这里得到的v,就是我们上面的右奇异向量。此外我们还可以得到:

这里的σ就是上面说的奇异值;u就是左奇异向量;

计算维度k,并据此得到第一子矩阵uk、第二子矩阵∑k、第三子矩阵vk;

一般地,若所述主矩阵a是一个n×m的矩阵,则k与n或m中值较小的一个相等;

所述近似矩阵ak为所述第一子矩阵uk、第二子矩阵∑k及所述第三子矩阵vk的倒置矩阵的乘积;

对于第二矩阵σ,保留其中k个最大的奇异值,得到一个新的维度为k×k,k×n的第二子矩阵矩阵σk。相应的,通过删除第一矩阵u以及第三矩阵v相应的行或列,得到维度分别为m×k的第一子矩阵uk和第三子矩阵vk,然后对矩阵a重构;令然后生成了一个秩等于k的所有矩阵中与矩阵a最近似的矩阵ak。

在本发明的一个实施例中,当通过所述近似矩阵ak获取用户相似度矩阵时,所述应用的推荐程序被所述处理器执行以实现以下步骤:

通过以下公式得到用户相似度矩阵:

其中,simij表示用户i和用户j的相似度。

在本发明的一个实施例中,当通过所述近似矩阵ak获取用户相似度矩阵时,所述应用的推荐程序被所述处理器执行以实现以下步骤:

利用余弦相似度公式获取应用之间的相似度;

更具体地,可以采取以下公式获取应用之间的相似度:

结合所述应用之间的相似度计算所述用户相似度矩阵;

也就是说,在计算用户相似度矩阵时,需要考虑到应用之间的相似度;

需要说明的是,若主矩阵a是一个n*m的矩阵,则近似矩阵ak同样也是一个n*m的矩阵,如果将近似矩阵中的每一行作为对应用户的特征,利用余弦相似性,可以得到一个m*m的用户相似度矩阵。

在本发明的一个实施例中,当通过所述近似矩阵ak获取用户相似度矩阵时,所述应用的推荐程序被所述处理器执行以实现以下步骤:

定义所述特定用户的已评分应用集合为ru,所述主矩阵a中对应用itemi的评分为auseri;由以下公式计算集合ru中每个应用itemj和目标应用itemi的均差值disij;

计算预测评分reui,其中numij表示所述邻居用户合集中应用itemi和itemj均有评分的用户数目:

需要说明的是,本发明中用户在应用中心的操作历史数据可以以评分的形式进行表现,用户在应用中心的操作历史数据包括用户停留该应用的时间、一天内开启的次数、对该应用进行的操作等。

下面结合具体的实例,进一步说明本发明:

在具体实施时,根据上述任一实施例提供的步骤构建模型,导入用户、用户在应用中心的操作历史数据;得出各应用的评分,并将排名在前的应用推荐给用户。请参照图4,图4是对某一特定用户预测评分排前十的应用;更具体地,第一列为用户编码,第二列为应用软件编码,第三列为预测用户得分;本实施例中,用户编码为65722,其对应的预测评分排前十的应用即为第二列编码对应的应用。

请参照图5,本发明将用户已安装的其中一个应用进行屏蔽后,实施本发明提供的技术方案,将屏蔽的应用的预测得分与根据用户历史操作数据得出的实际得分进行方差的计算,本实施例中得出的方差为4.10e-6,趋近于零;可见,本发明得出的预测得分具有较高的准确率。

本发明实施例提供的应用的推荐方法、装置及计算机可读介质,通过奇异值分解对用户评分矩阵进行降维,使得其在计算应用中心推荐超大数据量时能够占用较少的服务器资源,能够在一定程度上解决大数据矩阵计算量的问题,缩短计算时间,同时提高了应用推荐精度。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。

上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1