信息推荐方法和装置
技术领域
本公开涉及信息推荐技术领域,尤其是涉及一种信息推荐方法和装置。
背景技术
当今时代,商品经济繁荣,商品的种类繁多,数量巨大,电商平台都具备推荐系统。推荐系统用来为用户推荐商品。往往根据用户的兴趣进行个性化推荐。协同过滤算法是推荐系统中使用最广泛的算法。它被应用在各大平台的推荐系统中。现有的协同过滤算法没有考虑用户的兴趣转移模型,也没有考虑项目聚类方法,由于商品数量较大,计算开销较高推荐结果不准确,质量低。
发明内容
有鉴于此,本申请实施例提供一种信息推荐方法和装置,用以提高推荐质量。
第一方面,本申请实施例提供了一种信息推荐方法,包括:对项目所在的项目集合进行聚类,生成多个包括所述项目的类簇;计算用户对所述项目在每个类簇中的短期兴趣权重和长期兴趣权重;根据所述短期兴趣权重和长期兴趣权重计算用户对所述项目在每个类簇中的预测评分;获取所述项目与各个类簇的相似度;根据所述项目在每个类簇中的预测评分和所述项目与各个类簇的相似度计算得到所述项目的最终预测评分;根据所述项目的最终预测评分将所述项目加入推荐列表。
在本发明较佳的实施例中,计算用户对所述项目在每个类簇中的短期兴趣权重的步骤,包括:
其中,u代表用户,i代表项目;TS为用户u评价项目的平均时间间隔;Ti为用户u评价项目i的时间;T(last_C(i))是指用户在项目i所属的类簇C(i)中,评价与项目i相邻的上一个项目所用的时间;K是用户u对项目i所属的类簇中所有项目评价的总次数;
计算用户对所述项目在每个类簇中的长期兴趣权重的步骤包括:
Long(u,i)=rating(u,i)×time(u,i)
rating(u,i)代表用户u对项目i所属类簇中的项目的评分占所有类簇的所有项目评分的权重;
time(u,i)代表用户u对项目i的所属类簇中项目的评分次数占所有类簇中的所有项目的评分次数的权重;
其中,s代表项目i所属的类簇,A代表所有的类簇。
在本发明较佳的实施例中,根据所述短期兴趣权重和长期兴趣权重计算用户对所述项目在每个类簇中的预测评分的步骤,包括:
Drift(u,i)=λ×Short(u,i)+(1-λ)×Long(u,i);
其中,λ为控制参数,0≤λ≤1;是用户u在类别S中的平均评分,k是与本评分相关的与项目i相邻的项目j的个数;
SimS (i,j)表示类簇S中的项目i和与项目i相邻的项目j之间的相似度;
Ru,j表示用户u对与项目i相邻的项目j的评分。
在本发明较佳的实施例中,根据所述项目在每个类簇中的预测评分和所述项目与各个类簇的相似度计算得到所述项目的最终预测评分的步骤,包括:
Sim(i,μk)表示项目i与第k个类簇的相似度;
P(k)表示用户u对项目i在第k个类簇中的评分;
n为类簇的个数;
μk为第k个聚类中心点。
在本发明较佳的实施例中,根据所述项目的最终预测评分将所述项目加入推荐列表的步骤,包括:根据所述项目的最终预测评分决定所述项目在推荐列表中的位置。
与上述方法对应,本申请还提供了一种信息推荐装置,包括:聚类模块,用于对项目所在的项目集合进行聚类,生成多个包括所述项目的类簇;评分计算模块,用于计算用户对所述项目在每个类簇中的短期兴趣权重和长期兴趣权重;根据所述短期兴趣权重和长期兴趣权重计算用户对所述项目在每个类簇中的预测评分;获取所述项目与各个类簇的相似度;根据所述项目在每个类簇中的预测评分和所述项目与各个类簇的相似度计算得到最终预测评分;推荐列表生成模块,用于根据所述项目的最终预测评分将所述项目加入推荐列表。
在本发明较佳的实施例中,所述评分计算模块还用于:计算用户对所述项目在每个类簇中的短期兴趣权重,包括:
其中,u代表用户,i代表项目;TS为用户u评价项目的平均时间间隔;Ti为用户u评价项目i的时间;T(last_C(i))是指用户在项目i所属的类簇C(i)中,评价与项目i相邻的上一个项目所用的时间;K是用户u对项目i所属的类簇中所有项目评价的总次数;
计算用户对所述项目在每个类簇中的长期兴趣权重,包括:
Long(u,i)=rating(u,i)×time(u,i)
rating(u,i)代表用户u对项目i所属类簇中的项目的评分占所有类簇的所有项目评分的权重;
time(u,i)代表用户u对项目i的所属类簇中项目的评分次数占所有类簇中的所有项目的评分次数的权重;
其中,s代表项目i所属的类簇,A代表所有的类簇。
在本发明较佳的实施例中,所述评分计算模块还用于:根据所述短期兴趣权重和长期兴趣权重计算用户对所述项目在每个类簇中的预测评分,包括:
Drift(u,i)=λ×Short(u,i)+(1-λ)×Long(u,i);
其中,λ为控制参数,0≤λ≤1;是用户u在类别S中的平均评分,k是与本评分相关的与项目i相邻的项目j的个数;
SimS (i,j)表示类簇S中的项目i和与项目i相邻的项目j之间的相似度;
Ru,j表示用户u对与项目i相邻的项目j的评分。
在本发明较佳的实施例中,所述评分计算模块还用于:根据所述项目在每个类簇中的预测评分和所述项目与各个类簇的相似度计算得到所述项目的最终预测评分,包括:
Sim(i,μk)表示项目i与第k个类簇的相似度;
P(k)表示用户u对项目i在第k个类簇中的评分;
n为类簇的个数;
μk为第k个聚类中心点。
在本发明较佳的实施例中,所述推荐列表生成模块,还用于根据所述项目的最终预测评分决定所述项目在推荐列表中的位置。
采用上述方案,为了解决上述的问题,本发明研究了兴趣的特征,提出了将用户长期兴趣和短期兴趣分开识别的方法,结合聚类技术,提出一种新的协同过滤方法。该方法在计算时采用长期兴趣权重,短期兴趣权重和聚类权重来计算预测评分,根据预测评分确定推荐列表,可以有效捕捉用户兴趣,有助于提高推荐质量。
本公开的其他特征和优点将在随后的说明书中阐述,或者,部分特征和优点可以从说明书推知或毫无疑义地确定,或者通过实施本公开的上述技术即可得知。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施方式,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本公开具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本公开的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施方式提供的基于协同过滤算法的信息推荐方法流程图;
图2为本申请实施方式提供的生成聚类中心流程图;
图3为本申请实施方式提供的总体流程示意图;
图4为本申请实施方式提供的基于协同过滤算法的信息推荐装置示意图。
具体实施方式
为使本公开实施方式的目的、技术方案和优点更加清楚,下面将结合附图对本公开的技术方案进行清楚、完整地描述,显然,所描述的实施方式是本公开一部分实施方式,而不是全部的实施方式。基于本公开中的实施方式,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施方式,都属于本公开保护的范围。
随着电子商务平台的日新月异的飞速发展,各大电商网站都具有向用户自动推荐产品的功能。其中使用的算法为协同过滤算法。协同过滤算法是目前推荐系统中使用最广泛的算法。不同于传统的基于内容进行推荐的算法,但是目前的协同过滤算法没有考虑用户的兴趣转移模型,另一方面,未对商品聚类处理,由于商品的数量是巨大的,现有的协同过滤算法处理大量商品的时候,开销大,运算的速度慢;推荐的质量不高。
基于此,本申请实施例提出了一种基于协同过滤算法的信息推荐方法和装置,用以提升向用户推荐质量。
本申请提供了一种基于协同过滤算法的信息推荐方法,如图1所示的基于协同过滤算法的信息推荐方法流程图,该方法包括以下步骤:
步骤S102,对项目所在的项目集合进行聚类,生成多个包括该项目的类簇;
其中,举例说明,项目集合中包括多个项目。项目可以是商品,项目集合比如可以是电商平台中的各个商品的集合,比如衣服、家用电器等。把一个电商平台中的商品划分为多个不同的类,比如服装类、家电类、床上用品类。
在方法开始前,需要对数据进行预处理:获取用户项目评分数据,过滤掉异常值,生成用户项目评分矩阵,将项目评分矩阵作为本发明步骤的输入。具体地,Rij是用户i对项目j的评分。如果用户i没有评价过项目j,则Rij值设置为0。
本发明首先对于项目进行聚类,生成S个关联度较高的类簇;其中类别信息C={C1,C2,...CS},S是类别数量。
具体地,分为以下步骤:
1、确定S个初始聚类中心;
2、使用K-means算法对项目进行聚类;
3、根据类簇生成评分子矩阵;
每个步骤的具体说明如下所示。
步骤1具体包括:
(1)计算所有项目i,j之间的相似度;
(2)将相似度最低的两个项目i,j设置为两个初始的聚类中心;
(3)计算每个节点i到每个聚类中心μ1、μ2、…、μk之间的距离Sim(i,μ1)、Sim(i,μ2)、Sim(i,μ3)、…、Sim(i,μk);
(4)选取所有节点i到聚类中心μ1、μ2、…、μk,相似度的最大值作为节点i到聚类中心的距离,记录为Sim(i,u);
(5)选取所有非聚类中心的节点,选取到聚类中心的相似度最小值的节点j为新的中心节点μk+1;
(6)如果k+1<S则跳转到(3)继续寻找新的节点,否则完成S个聚类中心初始化。具体参见附图2所示的生成聚类中心流程图;包括:
开始;
初始化两个聚类中心;k=2;
判断聚类中心的数量k是否等于预设的数量k1,如果是,则结束;
如果否,则更新k=k+1;直到k与预设的数量k1相等;
计算每个节点到聚类中心的相似度;
找到所有结果中相似度最低的值,记录该节点;
结束。
步骤2具体为:
得到了S个初始化聚类中心,用K-means算法进行聚类。对于每一个非聚类中心节点i,有:
(1)C(i)=argmaxSim(i,μj)
对于每一个j,有
(2)
重复(1)和(2)操作直到收敛,生成S个类簇;
步骤3具体为:
根据类别信息,拆分评分矩阵Am,n,生成评分子矩阵
其中,s为类簇;
ms是评价过此类簇中项目的用户数;
ns是在聚类s中的项目数。
步骤S104,计算用户对该项目在每个类簇中的短期兴趣权重和长期兴趣权重;
其中,短期兴趣是随时间变化程度较大的一类兴趣,和长期兴趣相比具有不稳定性。短期兴趣权重是指在最近的一个时间阈值时间段之内的兴趣权重;长期兴趣权重是指在一个时间阈值时间段之外的兴趣权重。
步骤S106,根据所述短期兴趣权重和长期兴趣权重计算用户对该项目在每个类簇中的预测评分;
步骤S108,获取该项目与各个类簇的相似度;
具体实施时,可以计算该项目与每一个类簇的相似度;
可以采用如皮尔森相似度等方法来计算该项目与每一个类簇的相似度。
步骤S110,根据该项目在每个类簇中的预测评分和该项目与各个类簇的相似度计算得到该项目的最终预测评分;
具体实施时,可以计算完一个项目的最终预测评分,再计算另一个项目的最终预测评分;把项目集合中的每一个项目都采用本申请的方法计算出最终预测评分。
步骤S112,根据该项目的最终预测评分将该项目加入推荐列表。
其中,推荐列表中包括多个不同的项目,项目之间按照每一个项目的最终预测评分进行排序。
按照从高到低的顺序排序,取前N个项目生成推荐列表。可以将生成的推荐列表推送给用户的手机终端的界面上。
比如,电商平台可以根据该用户购物的短期兴趣、长期兴趣,来为该用户推荐用户感兴趣的商品。从而可以为用户推荐出使得用户更感兴趣的商品。提高自动推荐的质量和准确度。从而实现更加个性化的符合用户兴趣要求的高质量的推荐。
本申请通过计算用户对所述项目在每个类簇中的短期兴趣权重和长期兴趣权重;根据短期兴趣权重和长期兴趣权重计算用户对该项目在每个类簇中的预测评分,从而生成推荐列表推荐给用户,有效捕捉了用户兴趣,有助于提高推荐质量。
在一种可能的实施方式中,计算用户对该项目在每个类簇中的短期兴趣权重的步骤,包括:
其中,u代表用户,i代表项目;TS为用户u评价项目的平均时间间隔;Ti为用户u评价项目i的时间;T(last_C(i))是指用户在项目i所属的类簇C(i)中,评价与项目i相邻的上一个项目所用的时间;K是用户u对项目i所属的类簇中所有项目评价的总次数;
计算用户对所述项目在每个类簇中的长期兴趣权重的步骤包括:
Long(u,i)=rating(u,i)×time(u,i)
rating(u,i)代表用户u对项目i所属类簇中的项目的评分占所有类簇的所有项目评分的权重;
time(u,i)代表用户u对项目i的所属类簇中项目的评分次数占所有类簇中的所有项目的评分次数的权重;
其中,s代表项目i所属的类簇,A代表所有的类簇。
在一种可能的实施方式中,根据所述短期兴趣权重和长期兴趣权重计算用户对所述项目在每个类簇中的预测评分的步骤,包括:
Drift(u,i)=λ×Short(u,i)+(1-λ)×Long(u,i);
其中,λ为控制参数,0≤λ≤1;是用户u在类别S中的平均评分,k是与本评分相关的与项目i相邻的项目j的个数;
SimS (i,j)表示类簇S中的项目i和与项目i相邻的项目j之间的相似度;
Ru,j表示用户u对与项目i相邻的项目j的评分。
在一种可能的实施方式中,根据项目在每个类簇中的预测评分和该项目与各个类簇的相似度计算得到最终的预测评分的步骤,包括:
Sim(i,μk)表示项目i与第k个类簇的相似度;
P(k)表示用户u对项目i在第k个类簇中的评分;
n为类簇的个数;
μk为第k个聚类中心点。
在一种可能的实施方式中,根据所述项目的最终预测评分将所述项目加入推荐列表的步骤,包括:根据所述项目的最终预测评分决定所述项目在推荐列表中的位置。
其中,项目在推荐列表中的位置是由该项目的最终预测评分的高低决定的。是将该项目与其他项目放在一起,将所有项目的预测评分按照从高到低的顺序进行排序,如果该项目的预测评分最低,则该项目处于推荐列表的最底层;如果该项目的预测评分最高,则该项目处于推荐列表的顶层。
在一种可能的实施方式中,方法还包括采用MAE、Precision和Recall作为记录指标;MAE(mean absolute error)是平均绝对误差,如果有n个评分,{p1,p2,p3,...pn}和n个预测评分{q1,q2,q3,...qn},则有MAE越小,则预测越准确;
Ntp是算法推荐的项目中用户真实喜欢的数量,Nfp为方法推荐的项目用户不喜欢的数量;
Nfn用户喜欢而方法未推荐的项目数量。
本发明的目的是提供一种基于商品聚类与兴趣转移的协同过滤推荐方法。该方法将预测评分分为三个阶段,第一阶段对项目进行聚类,获取项目的类别属性,根据聚类结果生成评分子矩阵。第二阶段根据预测项目所属的类簇,在每一个子矩阵中计算短期兴趣权重和长期兴趣权重分别得到用户对项目在每个类簇中的预测评分。第三阶段根据项目与类簇的相似度和项目在各个类簇中的预测评分得到最终的预测评分并生成推荐列表。本发明将项目类簇信息和用户的长短期兴趣融入推荐算法,提高了用户兴趣的识别度,有助于推荐结果的提升。图3示出了本申请的整体流程示意图,该方法包括:
开始;
获取原始数据,生成用户评分矩阵;
商品聚类、生成类簇、拆分子矩阵;
计算用户的长期权重、短期权重;
根据长期权重和短期权重得到项目在每一个类簇内评分;
结合该项目在每一个类簇内的评分和该项目对每个类簇的相似度得到该项目的最终预测评分;
将多个项目进行排序,按照最终预测评分从高到低的顺序进行排序,生成Top-N推荐列表;
为用户显示上述Top-N推荐列表,或者推送Top-N推荐列表给用户。
结束。
与上述方法对应,本申请还提供了一种信息推荐装置,包括:
聚类模块41,用于对项目进行聚类,生成多个包括所述项目的类簇;
评分计算模块42,用于计算用户对所述项目在每个类簇中的短期兴趣权重和长期兴趣权重;根据所述短期兴趣权重和长期兴趣权重计算用户对所述项目在每个类簇中的预测评分;
获取所述项目与各个类簇的相似度;
根据所述项目在每个类簇中的预测评分和所述项目与各个类簇的相似度计算得到最终预测评分;
推荐列表生成模块43,用于根据所述项目的最终预测评分将所述项目加入推荐列表。
在本发明较佳的实施例中,所述评分计算模块42还用于:计算用户对所述项目在每个类簇中的短期兴趣权重,包括:
其中,u代表用户,i代表项目;TS为用户u评价项目的平均时间间隔;Ti为用户u评价项目i的时间;T(last_C(i))是指用户在项目i所属的类簇C(i)中,评价与项目i相邻的上一个项目所用的时间;K是用户u对项目i所属的类簇中所有项目评价的总次数;
计算用户对所述项目在每个类簇中的长期兴趣权重,包括:
Long(u,i)=rating(u,i)×time(u,i)
rating(u,i)代表用户u对项目i所属类簇中的项目的评分占所有类簇的所有项目评分的权重;
time(u,i)代表用户u对项目i的所属类簇中项目的评分次数占所有类簇中的所有项目的评分次数的权重;
其中,s代表项目i所属的类簇,A代表所有的类簇。
在本发明较佳的实施例中,所述评分计算模块42还用于:根据所述短期兴趣权重和长期兴趣权重计算用户对所述项目在每个类簇中的预测评分,包括:
Drift(u,i)=λ×Short(u,i)+(1-λ)×Long(u,i);
其中,λ为控制参数,0≤λ≤1;是用户u在类别S中的平均评分,k是与本评分相关的与项目i相邻的项目j的个数;
SimS (i,j)表示类簇S中的项目i和与项目i相邻的项目j之间的相似度;
Ru,j表示用户u对与项目i相邻的项目j的评分。
所述评分计算模块42还用于:获取所述项目与各个类簇的相似度;
具体实施时,可以采用如皮尔森相似度等方法来计算该项目与各个类簇的相似度;在本发明较佳的实施例中,所述评分计算模块42还用于:根据所述项目在每个类簇中的预测评分和所述项目与各个类簇的相似度计算得到该项目的最终预测评分,包括:
Sim(i,μk)表示项目i与第k个类簇的相似度;
P(k)表示用户u对项目i在第k个类簇中的评分;
n为类簇的个数;
μk为第k个聚类中心点。
在本发明较佳的实施例中,所述推荐列表生成模块43,还用于根据所述项目的最终预测评分决定所述项目在推荐列表中的位置。
本发明研究了兴趣的特征,提出了将用户长期兴趣和短期兴趣分开识别的方法,结合商品聚类技术,给出一种新的协同过滤方法。该方法在计算时采用长期兴趣权重,短期兴趣权重和聚类权重来计算预测评分。该方法有效捕捉了用户兴趣,有助于提高推荐质量。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。