一种基于滑标评分的推荐系统及方法
技术领域
本发明涉及一种基于滑标评分的推荐系统及方法,实现在大数据上快速有效的推荐。
背景技术
随着网络的不断扩张,信息的共享变得原来越容易。由此,网络资源日益丰富,网络信息量不断膨胀。人们要在海量的数据中找到自己真正需要的信息犹如大海捞针,即出现了“信息过载”的现象。信息过载指的是信息总量超出了系统或个人处理的能力范围,并有时会造成损害的现象。为了解决信息过载,推荐系统应运而生。
推荐系统通过分析用户信息和物品信息或其他辅助信息,获得用户对物品的偏好特征,并据此进行推荐。
如今,推荐系统被广泛应用于Amazon、淘宝等电子商务网站和facebook、豆瓣等社会化推荐网站。这些网站利用推荐系统推荐商品或信息,以吸引用户或增加销量。据Amazon的前科学家Greg Linden所说,推荐系统对Amazon的销售额的贡献约为20%~30%。所以推荐系统作为网络营销的一种手段,能为电子商务网站带来庞大的商业利益,还能为社会化媒体网站吸引大量用户从而产生巨大的影响力。
推荐系统利用推荐算法,对用户的一些行为进行分析,通过一些数学算法,推测出用户可能喜欢的东西。推荐系统的架构与其采用的推荐算法和数据源息息相关。当前的推荐算法按照使用数据源的不同主要分为以下三类:
(1)基于内容的推荐算法的研究现状
基于内容的推荐最初是应用在信息检索领域,也是后来很早应用到推荐系统的方法。它的核心思想是从每个物品的内容属性抽取特征来描述该物品,通过用户过去所喜好的物品的特征描述用户偏好特征,通过计算用户与物品之间相关性进行推荐。
(2)基于协同过滤的推荐算法的研究
基于协同过滤的推荐有两种类型:一种是根据不同用户对相同物品的行为相似性找出相似邻居,利用相似邻居的偏好对该用户进行推荐,这种称为基于用户的协同过滤推荐;另外一种是根据相同用户对不同物品的行为相似性找出相似物品,利用相似物品为用户进行推荐,这种称为基于物品的协同过滤推荐。
(3)基于标签的推荐算法的研究
基于标签的方法的兴起得益于在Web 2.0环境下,社会化标签行为的流行(即用户使用一些关键字描述物品的特征)。这样将标签系统与推荐系统融合,形成用户-物品-标签三维关系,通过分析用户对标签的偏好信息以及物品的标签特征进行推荐。基于标签的方法可以依据大量用户的标签行为对物品进行分类组织,从而形成能反映大众兴趣的物品分类,为推荐提供有力的信息根据。推荐系统可以用标签表示用户的偏好特征,同时可以用标签描述物品的属性特征,基于这些特征信息,为指定用户推荐在标签特征上相似的物品,同时给予基于标签的推荐解释,增加用户满意度。可以看出,基于标签的推荐算法由于标签的加入,增加了推荐的依据来源,同时因为标签的生成根源于大众行为,所以更能准确反映物品真实的特征。
当前推荐算法主要存在以下问题:
(1)冷启动问题。即当推荐系统中加入了新的用户,由于没有该用户历史偏好数据(如CB和CF算法)或标签数据(如TB算法),以致无法对用户进行有效的推荐。
(2)可解释性问题。推荐系统解释推荐原因的方法和所采用的推荐算法有直接关系。当前推荐解释的方法有基于特征的解释、基于协同过滤的解释和基于标签的解释。其中,基于特征的解释继承了基于内容的推荐算法的缺陷,特征难以提取。基于协同过滤的解释的缺陷在于用户喜欢物品可能是基于不同的原因,因而不能简单的基于用户相似或物品相似来进行解释。对于基于标签的解释,标签是大众选择的结果,但是同一物品会有很多标签,仅仅枚举标签并不能准确地描述推荐原因。
(3)复杂兴趣推荐问题。即当用户兴趣突然发生变化或者不同用户共用一个账户时,用户兴趣会变得复杂,当前推荐算法会变得不够准确。这个问题当前推荐算法都无法很好的解决。
名词解释如下:
推荐系统:推荐系统是建立在海量数据挖掘基础上的一种高级商务智能平台,以帮助电子商务网站为其顾客购物提供完全个性化的决策支持和信息服务。
协同过滤:协同过滤推荐(Collaborative Filtering recommendation)是在信息过滤和信息系统中正迅速成为一项很受欢迎的技术。与传统的基于内容过滤直接分析内容进行推荐不同,协同过滤分析用户兴趣,在用户群中找到指定用户的相似(兴趣)用户,综合这些相似用户对某一信息的评价,形成系统对该指定用户对此信息的喜好程度预测。
冷启动:在网站初始阶段或者缺少用户行为数据的情况下,推荐系统面临着推荐不准或者不合格的问题,也就是冷启动的问题。
发明内容
针对现有技术存在的不足,本发明目的是提供一种基于滑标评分的推荐系统及方法,从数据源的获取上进行了优化,即通过以滑标评分的形式获取用户最准确的兴趣需求和偏好评价,从而提高了用户的满意度和推荐准确率。
为了实现上述目的,本发明是通过如下的技术方案来实现:
本发明的一种基于滑标评分的推荐系统,包括数据源模块、推荐引擎模块、推荐结果处理模块和用户反馈模块;数据源模块D包括用户信息集合U、物品信息集合I和用户对物品的偏好信息集合P;用户信息集合U包括注册用户的基本属性;用户对物品的偏好信息集合P包括用户对物品的评分信息,评分信息包括偏好评分R和滑标评分S,偏好评分R表示用户对物品的整体喜好评价,滑标评分S表示用户对物品的标签描述以及该物品在各个标签上的权重;推荐引擎模块包括为老用户推荐的离线计算模块、为新用户或兴趣变化用户推荐的在线计算模块和为反馈用户推荐的反馈计算模块;推荐引擎模块处理数据源模块D的信息,计算出为用户集合U推荐最需要的物品集合、为物品集合推荐滑标集合、为用户集合推荐滑标集合;推荐结果处理模块包括推荐过滤模块、推荐排名模块和推荐解释模块;推荐结果处理模块在推荐引擎模块依据用户的基本信息基于相似特征向量的匹配计算出对用户进行推荐的初始物品列表后,对推荐物品进行过滤、排名,以及配以相应的滑标向用户解释推荐这些物品的原因;解释后,通过用户反馈模块收集并根据用户反馈的信息快速更新推荐结果(因为用户反馈的信息量通常比较小,所以可以实现实时的在线推荐),并传送给推荐引擎模块完成新一轮的推荐。
注册用户的基本属性是在用户注册时获得的,通过数据预处理,构造用户的空间特征向量,进而用于用户相似度的计算,从而为相似用户的聚类和邻居的推荐提供依据;基本属性包括性别、年龄、职业、学历和兴趣描述信息。
推荐物品的过滤是指过滤掉不符合要求的物品,具体包括用户已经产生过行为的物品和候选物品以外的物品;解释是基于滑标评分形式的,即给出物品的整体评分以及物品的滑标特征;排名按照整体评分排名或者按照用户的滑标特征进行排名。
上述离线计算模块具体的计算方法如下:
在获得用户的基本信息和偏好数据后,数据源模块首先进行预处理,然后调用离线推荐算法进行计算,离线推荐算法即计算用户相似度,根据用户相似度找到用户的K近邻,根据K近邻的信息填充评分矩阵,基于此评分矩阵选择最适合该用户的物品(在线推荐方法和离线推荐方法最本质的区别就是在线推荐不能处理过大的数据量,因此需要将数据经过离线预处理,然后选取很少的数据实现推荐);从而生成对每个用户的物品推荐、对每个物品的滑标推荐以及对每个用户的滑标推荐,并把结果存储起来,最后将推荐的物品通过推荐解释模块展示,并且将为物品推荐的滑标当作推荐解释。
上述在线计算模块具体的计算方法如下:
获得当前的偏好数据之后,数据源模块首先进行预处理,然后根据用户的选择是否依赖历史偏好数据,来决定是否获取离线计算的结果,然后调用在线推荐算法,在线推荐算法即根据用户注册信息,通过计算与各个粗粒度类代表的相似度找到所属粗粒度类,再根据标签权重特征,通过计算与各个细粒度代表的相似度找到所属的细粒度类,然后在细粒度内部找邻居,通过判定与类内用户的相似度,得出K个最近邻用户,并根据K近邻用户对物品的评分信息计算该用户的物品评分信息,最后根据该用户的评分数据进行物品推荐;从而生成用户的滑标推荐以及物品的滑标推荐,并把结果存储起来,最后将推荐的物品通过推荐解释模块展示,最后将在线计算的结果通过计算加入到用户的历史偏好数据中。
上述反馈计算模块具体的计算方法如下:
在获得用户的反馈数据后,把反馈数据更新到该用户相关的历史数据中去,然后数据源模块首先进行预处理,然后根据用户的选择是否依赖历史偏好数据,来决定是否获取离线计算的结果,然后调用在线推荐算法,从而生成用户的物品推荐、用户的滑标推荐以及物品的滑标推荐;最后将在线计算的结果通过计算加入到用户的历史偏好数据中。
本发明的基于滑标评分的推荐系统的推荐方法,具体包括以下几个步骤:
(1)数据源模块基于滑标评分获得数据源,并作相应的预处理:获得一系列用户u对物品i的偏好评分以及滑标评分,D={y∈Y|y=(u,i,r,s)};
(2)推荐引擎模块E根据用户u对物品的偏好评分和滑标评分,通过离线计算为用户u进行物品推荐为物品i推荐滑标 为用户u推荐滑标
(3)用户反馈模块收到用户对推荐的物品做出的基于滑标评分的反馈数据为D′={y′|y′=(u,i,r,s)∈Y},通过反馈在线计算进行新一轮的推荐;
(4)推荐结果处理模块将推荐引擎模块的物品推荐结果I(u),进行过滤、排名,并且为每个被推荐的物品i的提供滑标解释S(i)。
(1)对新用户不必要求历史偏好数据,只要获取用户的滑标评分数据就可以得到用户感兴趣物品的标签以及每个标签的重要性,从而进行较为准确的推荐,在很大程度上缓解了冷启动问题。
(2)当用户兴趣突然发生变化时,可以选择不依赖自己的历史偏好数据,而通过滑标评分来表达自己当前的兴趣,即从自己的标签池中选择能表示自己当前兴趣的标签或者使用新的标签,并赋予标签以相应的评分,这就形成了滑标评分数据。系统获得这种这些新的偏好数据进行处理推荐。这也适用于不同用户共用一个账户的情况。从而解决了复杂兴趣推荐问题。
(3)本方法的推荐方法实现了对用户的潜在兴趣的挖掘,并能作出准确的推荐。在推荐的同时,以滑标评分的形式给予解释,即每个被推荐的物品有若干描述性标签,每个标签都会有相应的评分来表示该物品在该标签上的权重。实验及调查结果表明,这种解释清晰而准确,更能使用户明白推荐原因,提高用户满意度。
附图说明
图1为本发明的推荐系统原理框图;
图2为离线计算推荐工作流程图;
图3为在线计算推荐工作流程图;
图4为反馈计算推荐工作流程图。
具体实施方式
为使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,下面结合具体实施方式,进一步阐述本发明。
本方法基于滑标评分的推荐系统模型。该模型包括数据表示、系统架构以及该架构下用于解决上述三个缺陷的三种推荐流程。算法则包括应用在三种推荐流程中的离线计算推荐算法、在线计算推荐算法和反馈计算推荐算法。其中,滑标是对传统标签的一种扩展,我们通过为每个标签配以相应的评分,来描述该物品或用户在该标签上的权重。通过使用滑标评分,系统提高了获取的用户兴趣需求和评分数据的准确性,同时也能更能精准地说明推荐物品的原因。
参见图1,本发明的推荐系统包括如下模块:
(1)数据源模块
数据源D是推荐系统进行推荐的依据来源。主要包括对用户信息集合U、物品信息集合I和用户对物品的偏好信息集合P这些数据的获取以及预处理。
用户信息集合U描述了注册用户的基本属性,如性别、年龄、职业、学历等,还有一些简单的兴趣描述信息。这些基本信息可以是在用户注册时获得,通过数据预处理,构造成用户的空间特征向量,进而用于用户相似度的计算,从而为相似用户的聚类和邻居的推荐提供依据。
用户对物品的偏好信息集合P描述了用户对物品的一些评分信息,在本方法提出的基于滑标评分的推荐系统模型中主要有两种评分信息:偏好评分R和滑标评分S。偏好评分R表示用户对物品的整体喜好评价。滑标评分S表示用户对物品的标签描述以及认为该物品在各个标签上的权重。
(2)推荐引擎模块
推荐引擎E是推荐系统的核心,其主要作用是使用推荐算法A处理分析来自数据源D的信息,为用户U推荐最需要的物品集合I(U)、为物品集合推荐滑标集合S(I)、为用户集合推荐滑标集合S(U)。
基于滑标评分的离线、在线、反馈推荐算法步骤如下:
(a)统计根据用户的偏好评分以及滑标评分,分析出用户的滑标特征
(b)统计物品的滑标评分,分析物品的滑标特征
(c)根据用户的滑标特征于物品的滑标特征之间的相似度,为用户进行推荐。
推荐引擎的推荐任务有:为用户集合U选择推荐物品集合I(U)、为物品集合推荐滑标集合S(I)、为用户集合推荐滑标集合S(U)。
离线、在线、反馈推荐算法方法步骤是相同的,但是所依据的数据不同,离线方法依据的是全部数据,在线方法依据的是经过离线筛选的少部分数据,反馈方法依据的是用户反馈数据。
(3)推荐结果处理模块
在推荐引擎计算出对用户进行推荐的初始物品列表后,我们要对推荐物品进行过滤、排名,以及配以相应的滑标向用户解释推荐这些物品的原因。
1)过滤
推荐物品的过滤是要过滤掉那些不符合要求的物品,比如:
(a)用户已经产生过行为的物品。因为推荐系统的目的是帮助用户发现物品,因此没必要为用户推荐他们已经知道的物品,这样可以保证推荐结果的新颖性。
(b)候选物品以外的物品。候选物品是用户给出了一些限制条件后的物品。
2)解释
在为用户推荐物品时,为了提高用户满意度,系统会为用户提供推荐解释。本方法采用的解释是基于滑标评分形式的,即给出物品的整体评分以及物品的滑标特征。
3)排名
为用户推荐的物品简单地罗列给用户也无可厚非。但是凡事都有个先来后到,给用户的物品列表中的物品按照一定的规则进行排名,有时更能提高用户满意度。比如按照整体评分排名,或者按照用户的滑标特征进行排名等等。
本方法在为用户推荐物品的同时,除了给出物品的整体评分,还为每个物品配以相应的若干滑标评分给出解释,滑标的表示物品的特征,评分表示系统预测的用户对物品的评分。这些物品的排列顺序根据用户的滑标特征的接近程度来定。
(4)用户反馈模块
用户在看到推荐系统提供的推荐的物品以及推荐解释后,可以进行相应的用户信息反馈,用户反馈模块收集并处理反馈信息,并传送给推荐引擎模块完成新一轮的推荐。
数据处理流程
上述系统框架下需要应对三种推荐情况。
(1)为老用户推荐——推荐系统核心任务。老用户在使用推荐系统时进行及时推荐物品及给予滑标解释。老用户是指在系统中有诸如基本用户信息、访问乃至评分信息等历史数据的用户。为这些用户进行推荐的工作可以通过离线计算完成,以便为用户能及时进行推荐。
(2)为新用户或兴趣变化用户推荐——需要解决冷启动和复杂兴趣推荐问题。当用户兴趣突然发生变化或者多个用户共用一个账号或者用户是个新用户时,当前的推荐系统很难适应这种变化,也就不能进行有效的推荐。为这样的新老用户进行推荐,我们允许用户把当前兴趣通过滑标评分机制准确地表达出来,然后经过推荐引擎的在线计算进行推荐。
(3)为反馈用户推荐——需要解决可解释性差问题。当用户收到推荐系统的推荐时,可以给系统作出反馈。推荐系统收到用户反馈信息后,进行相应的反馈计算,然后为用户给出下一轮的推荐。其中,为了让用户更好地理解推荐原因而且作出恰当的反馈,我们需要为用户提供清晰准确的推荐解释。
如上所述,为了应对上面三种推荐情况,本方法提供了三种推荐方式:离线计算推荐、在线计算推荐和反馈计算推荐。它们的含义及其数据处理流程如下:
(1)离线计算推荐
离线计算推荐,指的是在获得大量用户偏好评分数据后,进行离线计算,然后在用户登陆系统时进行结果展示。这种情况把大量计算放在线下,避免了让用户长时间等待。
参见图2,离线计算推荐具体流程分析:在获得用户的基本信息和偏好数据后,数据源模块首先进行预处理,然后调用相应的推荐算法进行计算,生成对每个用户的物品推荐、对每个物品的滑标推荐以及对每个用户的滑标推荐,并把结果存储起来。最后在用户使用推荐系统是将推荐的物品通过推荐解释模块展示,并且将为物品推荐的滑标当作推荐解释。
(2)在线计算推荐
在线计算推荐,指的是用户在登录推荐系统后,以滑标评分的形式表达出当前的兴趣需求,系统获取当前用户偏好数据,结合离线计算的结果,进行在线计算,并将推荐结果进行展示。
参见图3,在线计算推荐具体流程分析:不管是新用户还是老用户,都可以通过滑标评分表达当前的偏好需求。推荐系统获得当前的偏好数据之后首先进行预处理,然后根据用户的选择是否依赖历史偏好数据,来决定是否获取离线计算的结果,然后调用在线推荐算法,进行用户的物品推荐、用户的滑标推荐以及物品的滑标推荐。另外,在线计算的结果通过计算加入到用户的历史偏好数据中。
(3)反馈计算推荐
反馈计算推荐,指的是用户在看到推荐结果时可以给出反馈,即进行滑标评分,系统获得反馈后,获取并更新与该用户相关的离线数据,结合离线计算结果形成新一轮的推荐。
参见图4,反馈计算推荐具体流程分析:反馈计算推荐的整个过程与在线计算推荐是相似的,不同的地方是,在获得用户的反馈数据后,为了进行更好地推荐需要把反馈数据更新到于该用户相关的历史数据中去,然后根据更新后的数据,结合离线计算的结果进行推荐任务。
系统架构及数据处理流程的形式化描述
基于上面提出的滑标评分数据表示,我们对本方法中基于滑标评分的推荐系统架构及其数据处理流程给予形式化的描述如下:
(1)数据源模块基于滑标评分获得数据源,并作相应的预处理:获得一系列用户u对物品i的偏好评分以及滑标评分,D={y∈Y|y=(u,i,r,s)}。
(2)推荐引擎模块E根据用户u对物品的评分数据(包括偏好评分和滑标评分),通过离线计算为用户u进行物品推荐为物品i推荐滑标 为用户u推荐滑标
(3)用户反馈模块收到用户对推荐的物品做出的基于滑标评分的反馈数据为D′={y′|y′=(u,i,r,s)∈Y},通过反馈在线计算进行新一轮的推荐。
(4)推荐结果处理模块将推荐引擎模块的物品推荐结果I(u),进行过滤、排名,并且为每个被推荐的物品i的提供滑标解释S(i)。
以上显示和描述了本发明的基本原理和主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。