著录项信息
专利名称 | 一种基于协同过滤的推荐方法和系统 |
申请号 | CN200810216517.9 | 申请日期 | 2008-09-27 |
法律状态 | 授权 | 申报国家 | 中国 |
公开/公告日 | 2010-03-31 | 公开/公告号 | CN101685458 |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F17/30 | IPC分类号 | G;0;6;F;1;7;/;3;0;;;G;0;6;Q;3;0;/;0;0查看分类表>
|
申请人 | 华为技术有限公司 | 申请人地址 | 广东省深圳市龙岗区坂田华为总部办公楼
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 华为技术有限公司 | 当前权利人 | 华为技术有限公司 |
发明人 | 杜家春;汪芳山;方琦;谭卫国;钟杰萍 |
代理机构 | 暂无 | 代理人 | 暂无 |
摘要
一种基于协同过滤的推荐方法,包括获取目标用户标识;查找该目标用户标识对应的用户群标识;获取根据所述用户群标识对应的用户-项目评分矩阵确定的项目间相似度;根据该项目间相似度,向目标用户推荐项目。采用本发明提供的推荐方法能提高项目推荐的准确度,提高用户体验。本发明同时提供一种基于协同过滤的推荐系统。
1.一种基于协同过滤的推荐方法,其特征在于,包括:
获取目标用户标识;查找所述目标用户标识对应的用户群标识;获取根据所述用户群标识对应的用户-项目评分矩阵确定的项目间相似度;根据所述项目间相似度,向目标用户推荐项目,其中,所述根据所述项目间相似度,向目标用户推荐项目,包括:
判断目标用户在所述用户群对应的用户-项目评分矩阵中是否有评分记录,若有,通过所述项目间相似度,确定与所述评分记录对应项目相似的项目作为待推荐集。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
根据用户对项目的评分,建立用户-项目评分矩阵;根据用户-项目评分矩阵进行用户间相似度计算,将用户进行分群;其中,每一用户群对应一用户群标识。
3.如权利要求2所述的方法,其特征在于,所述根据用户-项目评分矩阵进行用户间相似度计算采用k均值聚类算法(K-means算法),包括:随机选取k个用户作为初始群组中心;对每个用户,计算所述用户与各初始群组中心的距离,将所述用户分到与其距离最近的初始群组中心所在的群组中。
4.如权利要求3所述的方法,其特征在于,当所有用户分群完毕后,计算每个群组的新群组中心,所述新群组中心是对应群组中所有用户评分向量的单位向量的均值。
5.如权利要求2所述的方法,其特征在于,所述根据用户-项目评分矩阵进行用户间相似度计算,将用户进行分群采用人工分群、机器分群或人机结合分群。
6.如权利要求1所述的方法,其特征在于,所述获取根据所述用户群标识对应的用户-项目评分矩阵确定的项目间相似度,包括:获取用户群标识;根据所述用户群标识获取对应用户群中所有用户对应的用户-项目评分矩阵;计算所述用户-项目评分矩阵中项目间相似度。
7.如权利要求6所述的方法,其特征在于,所述计算所述用户-项目评分矩阵中项目间相似度采用余弦相似度、皮尔森(Pea r s on)相关系数或修正的余弦相似度计算。
8.如权利要求1所述的方法,其特征在于,若根据所述目标用户标识未查找到对应的用户群标识,包括:获取所述目标用户标识对应目标用户的基本属性;分类器根据所述目标用户基本属性将所述目标用户分到对应用户群,并获得所述用户群对应的用户标识。
9.如权利要求8所述的方法,其特征在于,所述分类器的建立方法包括:在所述每个用户群中随机选出占所述用户群用户总数a%的用户标识;获取所述a%的用户的基本属性;
根据所述a%的用户基本属性特征构建分类器,其中0<a<100。
10.如权利要求1所述的方法,其特征在于,所述根据所述项目间相似度,向目标用户推荐项目,包括:
判断目标用户在所述用户群对应的用户-项目评分矩阵中是否有评分记录,若没有,通过计算所述用户-项目评分矩阵中热点项目的评分预测,将热点项目作为待推荐集,其中,热点项目为被评分最多的前M个项目。
11.如权利要求10所述的方法,其特征在于,对所述用户-项目评分矩阵中热点项目计算基于热点项目的评分预测,包括:获取用户群标识;根据所述用户群标识获取对应用户群中所有用户对应的用户-项目评分矩阵;计算所述用户群对应用户-项目评分矩阵中热点项目热点度,热点项目热点度为所述项目所得评分的平均值,所述热点项目的热点度即为所述热点项目的评分预测。
12.如权利要求1所述的方法,其特征在于,所述方法进一步包括:判断所述待推荐集中项目数目是否不小于N,若小于,则在距离目标用户最近的其它用户群中获取待推荐集,与已确定的待推荐集取并集,直到推荐项目数大于或等于N,或者直到所有用户群遍历完毕为止。
13.如权利要求12所述的方法,其特征在于,所述方法进一步包括:判断所述推荐集中项目数目是否不小于N,若大于或等于,则计算所述推荐集中各项目的评分预测,将评分预测最高的前N个项目作为推荐项目向用户推荐。
14.如权利要求13所述的方法,其特征在于,计算所述推荐集中各项目的评分预测采用基于相似项目评分预测。
15.一种基于协同过滤的推荐系统,其特征在于,包括:
推荐控制模块,用于获取目标用户标识,调用确定待推荐集模块和生成模块向所述目标用户标识对应的目标用户推荐项目;
确定待推荐集模块,用于查找所述目标用户标识对应的用户群组标识,获取根据所述用户群标识对应的用户-项目评分矩阵确定的项目间相似度,根据所述项目间相似度确定待推荐集,或者获取根据所述用户群标识对应的用户-项目评分矩阵确定的热点项目集,将所述热点项目集作为待推荐集;
生成推荐模块,用于向用户推荐推荐集中的项目。
16.如权利要求15所述的系统,其特征在于,包括:数据库,所述数据库中进一步包括:
用户-项目评分矩阵,用于存储每一用户对各个项目的用户-项目评分矩阵。
17.如权利要求16所述的系统,其特征在于,包括:用户分群模块用于根据所述数据库中所述用户-项目评分矩阵库中存储的用户-项目评分矩阵对用户进行用户分群,每个用户群对应一用户群标识和群组中心,用户分群结果存储于所述数据库中的用户群库中。
18.如权利要求16所述的系统,其特征在于,所述数据库中进一步包括:用户基本信息库,用于存储每一用户的基本信息。
19.如权利要求18所述的系统,其特征在于,包括:分类器生成模块用于根据所述用户分群结果,将每一用户群中对应用户的基本信息作为分类特征,构建一个分类器。
20.如权利要求17所述的系统,其特征在于,包括:热点项目热点度计算模块,用于根据所述用户分群结果和与所述用户群对应的用户-项目评分矩阵,在每一个用户群中独立找出评分最多的若干项目作为热点项目,计算所述热点项目的评分均值得到热点项目的热点度。
21.如权利要求20所述的系统,其特征在于,所述数据库中进一步包括:用户群项目热点度库,用于存储所述用户群组对应的热点项目的热点度。
22.如权利要求20所述的系统,其特征在于,包括:项目相似度计算模块,用于根据所述用户分群结果和与所述用户群组对应的用户-项目评分矩阵,在每一个用户群组中独立计算项目间相似度。
23.如权利要求22所述的系统,其特征在于,所述数据库中进一步包括:用户群组项目相似度库,用于存储所述用户群组对应的所述项目间相似度。
24.如权利要求23所述的系统,其特征在于,所述确定待推荐集模块包括:
用户所属群组确定模块,用于在用户群库中根据所述目标用户标识确定对应的用户群标识;
待推荐项目集确定模块,用于根据所述用户群标识在用户项目相似度库中获取项目间相似度,根据所述项目间相似度确定待推荐集,或者获取根据所述用户群标识对应的用户-项目评分矩阵确定的热点项目集,将所述热点项目集作为待推荐集。
25.如权利要求15所述的系统,其特征在于,包括:评分预测模块,用于对所述待推荐集中各项目进行基于相似项目评分的预测或基于热点项目评分的预测,得出目标用户对于待推荐集中各项目的预测评分,将评分最高的N个项目向用户推荐。
26.如权利要求25所述的系统,其特征在于,所述评分预测模块包括:相似项目评分预测模块,用于对所述待推荐集中各项目进行基于相似项目评分的预测;或者,热点项目评分预测模块,用于对所述待推荐集中各项目进行基于热点项目评分的预测。
一种基于协同过滤的推荐方法和系统\n技术领域\n[0001] 本发明涉及网络通讯技术领域,尤其涉及一种基于协同过滤的推荐方法和系统。\n背景技术\n[0002] 推荐系统是为解决信息过载问题而提出的一种智能代理系统,能从大量信息中向用户自动推荐出符合其兴趣偏好或需求的资源。随着互联网的普及和飞速发展,推荐系统已经被广泛应用于各种领域,尤其在电子商务领域,推荐系统得到了越来越多的研究和应用。目前,几乎所有的大型电子商务网站都不同程度的使用了各种形式的推荐系统,比如Amazon、CDNOW、eBay和当当网上书店等。其中,协同过滤技术在当前推荐系统的应用中获得了较大的成功。\n[0003] 协同过滤算法主要有基于用户的协同过滤算法和基于项目的协同过滤算法。两种算法的输入都是用户对项目的评分矩阵,如表1所示:\n[0004] 表1用户对项目的评分矩阵\n[0005] \n[0006] 其中,用户对项目的评分可以显式获得,例如:通过用户对项目进行评分操作;也可隐式获得,例如:通过用户对项目的搜索、浏览、购买等行为构造评分函数计算得到。矩阵的每一行形成的向量表示该行对应用户的对各个项目的评分向量。\n[0007] 基于用户的协同过滤算法的基本原理是利用用户对项目评分的相似性来互相推荐用户可能感兴趣的项目。例如:对当前用户U,系统通过其评分记录及特定相似度函数,计算出与其评分行为最相近的k个用户作为用户U的最近邻居集,统计用户U的近邻用户评分过而用户U未评分的项目生成候选推荐集,然后计算用户U对候选推荐集中每个项目i的预测评分,取其中预测评分最高的N个项目作为用户U的Top-N推荐集。\n[0008] 基于项目的协同过滤算法则比较项目之间的相似性,根据当前用户已评分的项目集合推荐未评分的项目。由于项目之间的相似性比用户相似性稳定,因此可以离线进行计算存储并定期更新,所以基于项目的协同过滤算法相对于基于用户的协同过滤算法,推荐精度高,实时性好,对基于项目的协同过滤算法进行优化推荐准确度更高、效果更佳、更符合客户需求。\n[0009] 基于项目的协同推荐的基本处理流程,分为线下相似度计算和线上推荐两个部分。图1所示为基于项目的协同推荐方法中线下相似度计算流程,图2所示为基于项目的协同推荐方法中线上推荐流程。\n[0010] 图1中线下相似度计算流程用于计算并保存项目间的相似度。其中,步骤1:获取每一用户对每一项目的评分矩阵;步骤2:计算各个项目间相似度,可采用相似度函数为余弦相似度、皮尔森相似度(Pear son)等;步骤3、存储各个不同项目间相似度。\n[0011] 在预先计算存储了各个不同项目间相似度的基础上,如图2所示线上推荐流程如下:步骤11:获取待推荐的用户标识(ID),即目标用户标识(ID);步骤12:获取目标用户ID对应的目标用户已经评分的项目集合;步骤13:根据预先存储的项目相似度数据,获取与目标用户已经评分的项目集合中各项目相似度高的项目,形成该目标用户的待推荐项目集;步骤14:根据项目间相似度,进一步计算目标用户对待推荐项目集中每个项目的预测评分,例如:根据如下公式计算预测评分: 其中,PU,i表示目标用户U对待项目i的预测评分,sim(j,i)表示项目j和项目i之间的相似度,RU,j表示用户U对项目j的实际评分;步骤15:根据预测评分结果取评分最高的前N项作为对目标用户的推荐结果。\n[0012] 在基于项目的协同过滤算法流程中,项目间的相似度对最终的推荐结果有着至关重要的影响。在传统的基于项目的协同过滤推荐算法中,项目之间相似度的计算并未考虑到不同偏好用户群之间的差异。项目间相似度基于用户评分矩阵计算得到,对所有的用户而言,同样两个项目,它们之间的相似度是相同的。而现实中,对同样两个项目的看法,不同偏好的用户群观点通常不同。这势必造成推荐准确度低,质量下降。\n发明内容\n[0013] 为了提高推荐的准确性,符合用户偏好,本发明实施例提供一种基于协同过滤的推荐方法和系统。\n[0014] 一种基于协同过滤的推荐方法,包括:获取目标用户标识;查找所述目标用户标识对应的用户群标识;获取根据所述用户群标识对应的用户-项目评分矩阵确定的项目间相似度;根据所述项目间相似度,向目标用户推荐项目。\n[0015] 一种基于协同过滤的推荐系统,包括:推荐控制模块,用于获取目标用户标识,调用确定待推荐集模块和生成模块向所述目标用户标识对应的目标用户推荐项目;确定待推荐集模块,用于查找所述目标用户标识对应的用户群组标识,获取根据所述用户群标识对应的用户-项目评分矩阵确定的项目间相似度,根据所述项目间相似度确定待推荐集,或者获取根据所述用户群标识对应的用户-项目评分矩阵确定的热点项目集,将所述热点项目集作为待推荐集;生成推荐模块,用于向用户推荐推荐集中的项目。\n[0016] 采用本发明实施例提供的基于协同过滤的推荐方法和系统,通过将用户分群,使得用户群中的每个用户偏好基本相同,利用这样的用户群所包含的项目相似度信息为用户推荐,提高了推荐的准确性,体现了个性化。\n附图说明\n[0017] 图1为现有技术基于项目的协同推荐方法中线下相似度计算流程;\n[0018] 图2为现有技术基于项目的协同推荐方法中线上推荐流程;\n[0019] 图3为本发明实施例一提供的一种基于协同过滤的推荐系统结构示意图;\n[0020] 图4为本发明实施例二提供的一种基于协同过滤的推荐方法流程中用户分群流程示意图;\n[0021] 图5为本发明实施例二提供的一种基于协同过滤的推荐方法流程中计算项目间相似度流程示意图;\n[0022] 图6为本发明实施例二提供的一种基于协同过滤的推荐方法流程中计算项目热点度流程示意图;\n[0023] 图7为本发明实施例二提供的一种基于协同过滤的推荐方法流程中建立分类器流程示意图;\n[0024] 图8为本发明实施例二提供的一种基于协同过滤的推荐方法流程中线上推荐流程示意图;\n[0025] 图9为为本发明实施例三提供的一种基于协同过滤的推荐方法流程示意图。\n具体实施方式\n[0026] 下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。\n[0027] 本发明实施例中提出了一种首先将用户基于用户-项目评分矩阵分群,每一个用户群仅包含该群中用户对所有项目的评分数据,然后在每一个用户群上独立计算项目间相似度,最后以目标用户所在群中计算得到的相似度作为依据对目标用户进行推荐。\n[0028] 如图3所示为本发明实施例一提供的一种基于协同过滤的推荐系统结构示意图。\n该推荐系统包括:推荐控制模块51、生成推荐模块52,确定待推荐集模块54、数据库55、评分预测模块53、以及定时器56、用户分群模块57、分类器生成模块58、项目热点度计算模块\n59和项目相似度计算模块60。其中、评分预测模块53中还包括相似项目评分预测模块531、热点项目评分预测模块532;确定待推荐集模块54中还包括用户所属群组确定模块541、待推荐项目集确定模块542;数据库55中还包括用户基本信息库551、用户群库552、用户群项目热点度库553、用户项目评分矩阵库555和用户群项目相似度库554。运算过程中出现并进行了五个部分数据的存储和提取,其中包括系统基础数据集和系统运算数据集。\n[0029] 系统基础数据集主要包括:用户-项目评分矩阵数据,具体为每一用户在业务使用过程中产生的对不同项目的评分数据;用户基本信息数据,具体为描述了用户本身的基本属性信息,包括地域、职业、性别、年龄、教育程度等。\n[0030] 系统运算数据集主要包括:用户群数据,包含用户基于用户-项目评分矩阵数据分群的结果,每一个用户对应一个群组,每一个群组对应一个群组中心;用户群项目热点度数据库,用于记录基于用户分群结果生成的每个用户群对应的热点项目以及热点度,其中,热点项目为被评分最多的前M(M不小于N)个项目,热点项目热点度为所述项目所得评分的平均值;用户群项目相似度数据库,用于记录基于用户分群结果生成的每个用户群对应的项目之间相似度的情况。\n[0031] 如下详细介绍该推荐系统中每一模块的功能及模块间的交互。该推荐系统中各个模块并非全部必要,可以根据功能或性能的强弱需要,相应增减部分模块。\n[0032] 推荐控制模块51为在线推荐部分的主控模块,在接收到待推荐用户ID(即目标用户ID)之后,具有调用其他各模块能力,完成整个推荐处理流程。\n[0033] 确定待推荐集模块54用于根据待推荐用户ID确定对应目标用户之后,通过定位目标用户所属用户群,找到目标用户评分项目的邻居项目的集合,或者所述用户群对应的热点项目集,得到待推荐集,将此集合作为下一步评分预测模块53的运算基础。确定待推荐集模块可进一步细分为用户所属群组确定模块541、待推荐项目集确定模块542。其中,用户所属群组确定模块541用于确定用户所属的用户群,可以根据目标用户ID定位目标用户所属用户群,或者根据分类器确定目标用户所属用户群;待推荐项目集确定模块542用于在目标用户所属群中确定待推荐项目集合,可以通过目标用户评分项目的邻居项目的集合,或者所述用户群对应的热点项目集,得到待推荐集。如果待推荐集合中项目个数小于N,则计算目标用户与其他群组的距离,在距离最近的群组中继续上述确定待推荐集的过程,直到推荐项目数大于或等于N,或者直到所有用户群遍历完毕为止。\n[0034] 评分预测模块53,主要用于在确定待推荐集模块54得到的待推荐项目集合中进行基于相似项目评分的预测或基于热点项目评分的预测,得出目标用户对于待推荐项目的预测评分。此模块可进一步细分为相似项目评分预测模块531、热点项目评分预测模块\n532。其中,相似项目评分预测模块531根据相似项目间的相似度计算预测评分,例如:根据如下公式计算预测评分: 其中,PU,i表示目标用户U对待项目i的预\n测评分,sim(j,i)表示项目j和项目i之间的相似度,RU,j表示用户U对项目j的实际评分;热点项目评分预测模块532用于计算基于热点项目的预测评分,例如:计算热点项目的热点度作为热点项目的预测评分。在本发明的其他实施例中也可不需要进行待推荐项目集合的进一步预测评分而直接推荐给用户。\n[0035] 生成推荐模块52,主要用于根据评分预测模块53对待推荐项目集合中各项目的预测评分,将评分最高的前N个项目作为对目标用户的推荐结果。\n[0036] 用户分群模块57,用于根据数据库55中用户-项目评分矩阵库555中存储的全部用户的用户-项目评分矩阵进行用户分群,得到全体用户的分群结果,以及每个群组的群组中心,存储在数据库55的用户群库552中。\n[0037] 分类器生成模块58,用于根据用户分群结果,以数据库55中用户基本信息库551中每一用户群中各个用户基本信息为分类特征,构建一个分类器并存储。在本发明的其他实施例中,分类训练集也可以是根据已有用户数量大小取一个合适的百分比,以此百分比为要求在每一个用户群中随机选出若干用户基本信息作为分类训练集数据。\n[0038] 项目热点度计算模块59,用于根据用户分群结果和用户-项目评分矩阵,在每一个用户群中独立找出评分最多的若干项目,即热点项目,计算所得评分均值,即热点度,并存储在数据库55的用户群项目热点度库553中。\n[0039] 项目相似度计算模块60,用于根据用户分群结果和用户-项目评分矩阵,在每一个用户群中独立计算项目间相似度并存储在数据库55的用户群项目相似度库554中。\n[0040] 在本发明其他实施例中,待推荐项目集确定模块542可以同时使用项目热点度计算模块59及项目相似度计算模块60中存储数据确定针对目标用户所在用户群确定待推荐项目集,也可以根据需要采用二者其中任一模块中存储的数据确定针对目标用户所在用户群确定待推荐项目集。\n[0041] 定时器56,用于定时触发用户分群模块57、分类器生成模块58、项目热点度计算模块、项目相似度计算模块60对基础数据集进行处理,包括更新后的基础数据集。在本发明的其他实施例中该模块为可选模块。\n[0042] 根据上述对推荐系统的描述可知,推荐系统在执行具体操作时可以分为线下和线上两部分组成。其中,线下部分由定时器56定时触发用户分群模块57、分类器生成模块58、项目热点度计算模块59及项目相似度计算模块60,也可通过手动触发,主要为线上部分的运算提供数据,减轻线上计算量,提高推荐速率,以达到实时推荐目的。所需数据存储于数据库55中。线上部分主要完成的是对目标用户的在线推荐工作。获得目标用户所在群组、待推荐项目集合和对待推荐项目的评分预测是线上部分的重要过程,其主要任务是在推荐前为目标用户寻找与其兴趣度最类似的项目集合并预测其评分。\n[0043] 图4所示为本发明实施例二提供的一种基于协同过滤的推荐方法流程中用户分群流程详细示意图。步骤S101,获取每一用户对各个项目的评分;步骤S102,根据用户项目评分,建立用户-项目评分矩阵,如表2所示;\n[0044] 表2用户-项目评分矩阵\n[0045] \n[0046] 步骤S103,对用户分群,得到若干用户群和每个用户群的群组中心。本实施例中提供一种基于用户间相似度的均值聚类算法(k-means)对所有用户进行分群。在本发明的其他实施例中可采用多种分群的方法,如人工分群、机器分群、人机结合等。\n[0047] 其中,基于用户间相似度的k-means聚类算法对所有用户进行分群,包括:\n1 2\n(1)定义类别个数k和误差精度e,随机选取k个用户M,M,…,Mk作为初始群组\n1 2\n中心,分别对应类别C,C,…,Ck;(2)对每个用户U,计算所述用户与各初始群组中心的距离d(U,Mi)=1-sim(U,Mi),i=1,2,…,k,sim(U,Mi)指用户U与群组中心Mi的相似度。将所述用户分到与其距离最近的初始群组中心所在的群组中,并计算分散度 t指迭代次数;(3)计算新的聚类中心\n其中‖U‖指用户U的评分向量的模长,‖Ci‖指类别Ci中用户的总\n数;(4)重复(2)、(3)直到|E(t+1)-E(t)|
法律信息
- 2012-09-19
- 2011-03-16
实质审查的生效
IPC(主分类): G06F 17/30
专利申请号: 200810216517.9
申请日: 2008.09.27
- 2010-03-31
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2008-10-15
|
2008-05-16
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |