基于专家系统的个性化推荐系统的设计与实现

2016-05-14 08:11郭青孙健
软件工程 2016年6期
关键词:分布式计算协同过滤推荐系统

郭青 孙健

摘 要:随着互联网及物流运输行业的快速发展,越来越多的人选择在网上挑选服饰类商品。基于服饰类商品具有重复购买率低、搭配性强、受当季流行因素影响大等特点,提出了一种基于协同过滤与专家推荐的混合推荐策略,在为商品引入流行因子的基础之上,为用户提供了一种更为个性化、时尚化的推荐结果。由于业务系统涵盖了海量的商品及用户数据,单机计算系统难以满足推荐系统对计算资源的需求,在基于Hadoop平台的基础之上,构建了一套离线分布式推荐系统,为解决大数据应用背景下的数据计算问题提供了可行性案例。

关键词:推荐系统;专家推荐;协同过滤;Hadoop;分布式计算

中图分类号:TP311.5 文献标识码:A

文章编号:2096-1472(2016)-06-22-06

Abstract:With the rapid development of the internet and the logistics industry,more and more people choose to buy clothes on the internet.Base on the features of apparel goods,such as the low repurchase rate,the high matching requirements,the high dependence on seasonal fashion,the paper proposes a mixed recommendation strategy based on collaborative filtering and expert recommending.The new strategy recommends users with more personalized and more fashionable results by introducing fashion elements in the system.Because of the massive data of goods and users covered in the system,stand-alone operating systems are apparently unable to meet the requirements.The paper constructs a distributed offline computing system based on the Hadoop platform,which provides a feasible case of computing in the application of big data.

Keywords:the recommendation system;experts recommending;collaborative filtering;distributed computing;Hadoop;the mixed recommendation strategy

1 引言(Introduction)

随着互联网的不断发展,市面上出现了越来越多的垂直类服装电子商务平台,极大的丰富了人们购买服饰类商品的选择。然而,随着商品数量的逐渐增多,信息冗余给用户带来了极大的选择困难。如何帮助用户从海量的商品中,筛选出用户喜欢且满意的商品,以提高用户的购买率,成为当下服饰类电商平台面临的一大严峻考验。

当前,电商推荐系统的推荐策略,一般可分为以下几类:协同过滤推荐、基于内容的推荐[1,2]。前者又可分为基于商品的协同过滤推荐和基于用户的协同过滤推荐,其本质是在商品集中寻找相似的商品,为目标用户予以推荐,或寻找兴趣、行为相似的用户,根据相似用户的购买行为,为目标用户做推荐。

上述的推荐策略在电影、图书等商品类目应用较为成熟,但是在服饰类电商中,效果不够理想,原因如下:(1)对于用户已经购买过的服饰,与其相似的商品,用户再次购买的概率极低;(2)服饰类商品,更注重商品间的搭配;(3)服饰类商品,除了受用户兴趣、品味影响外,更易受到时尚潮流的驱动。

为适应服饰类电商的用户消费特点,以及服饰搭配的时效性,本文提供了一种基于多种推荐方法的混合推荐策略。首先,提供了一种基于SVD分解的协同过滤推荐,该推荐方法能较快得寻找到与目标用户最为相似的用户群,从该用户群的历史购买行为中,挖掘目标用户可能喜欢的商品,予以推荐。然后,根据时尚达人、一线设计师等领域内专家提供的当季时尚搭配数据集,结合用户已经存在的购买行为,为用户提供当季流行的潮流搭配。同时定义商品的流行因子,将专家推荐与商品的流行因子相结合,达成专家推荐结果。

将协同过滤推荐数据集,以及专家推荐数据集二者加权、排序、筛选,获得最终的推荐结果。

本文为某服装类电商设计了一套基于Hadoop技术的推荐系统。该系统通过对用户的行为进行分析,根据协同过滤以及专家推荐的计算,并将二者结果加权、排序、筛选等计算,获得最终的推荐结果,并将最终的离线计算结果,存储在分布式存储系统文件中。业务系统通过接口访问的形式,将推荐数据推送至指定页面。

2 推荐系统的推荐策略(Strategy of the recommend system )

2.1 基于用户的系统过滤推荐

基于用户(User-based)的协同过滤就是利用用户历史行为数据集,根据用户历史购买行为数据、用户历史浏览行为数据,挖掘出与目标用户的相似度最大的若干用户,从该用户群中,分析出用户可能感兴趣的商品[3-5]。

基于用户的协同过滤推荐算法步骤如下:

第一步,建立用户—商品评价矩阵。

根据用户历史购买行为,构建用户与商品之间购买关系的矩阵,该矩阵中,数字1代表某用户曾购买过某商品,数字0代表某用户未曾购买过该商品。该表示方法虽然较简单,但并不能准确的表示出用户对于未购买的商品的兴趣程度。用户购买被标记为0的商品,可能是用户不感兴趣的商品,也可能是用户感兴趣但并没有看到的商品。所以,有必要在用户购买矩阵中,引入负评分,即标记出用户不感兴趣的商品。引入负评分的具体方法如下:

(1)在目标用户浏览商品集中,剔除用户已购买的商品,得到浏览未购买商品集S。

(2)从商品集S中,随机选择和用户已购买商品集N数量相等的商品,作为负评分商品。

(3)如果商品集S的数量小于商品集N的数量,则差额从系统商品库中,剔除N和S集后随机挑选。

(4)将负评分的商品评分置为数字“-1”,得到新的评分矩阵R。

在完成负评分的引入后,用户—商品的评分矩阵变为一个由“-1”“0”“1”组成的矩阵。

第二步,挖掘目标用户的相似用户群。

系统以余弦相似性作为用户与用户之间相似度的计算方法。假设用户i和j对商品的评分向量为I、J,则用户i和j的余弦相似性为:

但由于在系统中,用户有购买行为的商品,只占商品总数极小一部分,故整个用户—商品的评分矩阵是一个以数字“0”为主的稀疏矩阵。绝大多数用户之间的相似度为0,故需要将稀疏矩阵,进行相似矩阵变换,以得到低稀疏度的关系矩阵,从而计算用户之间的相似度。

本文采用奇异值分解(SVD)的方法[6,7],求得用户—商品评分矩阵的相似矩阵。奇异值分解是一种求矩阵近似矩阵的方法,对于一个的矩阵R,通过SVD后可以分为三个矩阵:

利用奇异值分解,降低用户—商品评分矩阵稀疏度的步骤如下:

(1)将矩阵R进行奇异值分解,得到三个矩阵。

(2)将矩阵对角线上小于1的值置为0,并将值全为0的行或列删去,得到一个m维的矩阵。

(3)近似后的矩阵

经过奇异值分解之后,原用户—商品评分矩阵的稀疏性大大降低。

由于系统内用户众多,逐一计算用户间相似度,将大大增加系统的运算资源开销,难以满足实际系统对于运算效率的要求。本系统采用常见的k-means聚类的方法[8,9],先将用户聚为少数几类,在聚类结果中,寻找目标用户的相似用户群。

k-means聚类算法的实现步骤如下:

(1)先选取k个点作为所有用户的聚类的中心。

(2)然后计算每个用户到聚类中心的距离(欧氏距离),将每个用户划分到距离它最近的聚类中心所在的类。

(3)一次划分结束后,以一个类中的点的平均值作为新的聚类中心。

(4)重复迭代,直至聚类中心不在改变为止。

完成用户聚类之后,即可在目标用户所在的聚类群中,利用余弦相似性寻找与该用户相似度最高的TOP-N用户,将其作为目标用户的相似用户群。

第三步,基于相似用户的推荐商品集。

在获得目标用户的相似用户群TOP-N后,任意商品的推荐系数为:

其中,为用户对商品的评分,为用户和用户之间的余弦相似度。

商品集中,剔除用户已购买和浏览过的商品,在剩下的商品集中,取推荐系数最高的N见商品,作为基于用户的协同过滤推荐商品集。具体流程如图1所示。

2.2 基于专家推荐的推荐策略

由于服饰类商品具有不同于其他商品的一些特殊性质,例如受当季潮流影响较大、搭配属性强、重复购买率低等特点,所以简单的协同过滤,推荐效果可能并不显著。为了适应上述特点,提高推荐结果的可解释度,本系统引入了基于专家推荐的推荐策略。

专家推荐就是服饰搭配领域内的专业人士例如设计师、明星、网络红人根据不同时期的流行趋势,提供各类型的搭配案例,推荐系统根据目标用户已购买的商品,自动适配最相似的搭配案例,并将搭配案例中,用户尚未购买的商品,推荐给用户。同时,为商品引入流行因子,以提高热门商品在系统内的推荐强度。另外,专家可根据当前潮流的变化,动态的修改搭配方案。

基于专家推荐的推荐策略,算法流程如图2所示,实现步骤如下:

第一步,专家提供搭配案例。

领域内专家,能把握和引导当前的时尚潮流,从而影响用户的选择。将领域专家的搭配意见,作为推荐结果,具有更强的可解释性。本系统采集了包括设计师、时尚达人、网络红人、明星等在内的上千位领域内专家提供的针对不同群体的上万套搭配方案。每套搭配方案内,包含了一整套不同类型的若干件商品,例如为校园男生提供一套搭配方案就包括V领毛衣、格子衬衫、呢子外套、长裤、大头鞋等。搭配方案内的每件商品,都是系统内具有唯一ID。第n套搭配方案可表示为:

其中表示类别的推荐商品。由此,得到了专家搭配数据集:

第二步,计算商品间相似性。

商品信息可分为结构化的信息和非结构化的描述性信息。本系统将从结构化和非结构化信息两个方面,来计算商品的相似性。

首先,利用商品的基本录入信息,例如类别、适用人群等结构化信息,将商品进行分类。

然后,将商品的展示标题按关键词分词,得到商品的描述词向量,例如某款女士风衣,关键词分词的结果为“2016春装、新款、欧美、双排扣、韩版、修身、中长款、女士、风衣、外套、长袖”。建立商品的描述词向量矩阵。

最后,在目标商品的分类中,根据商品的描述词向量,利用Jaccard系数[10],来表示两件商品之间的相似性。

其中,表示商品i和j之间共有的描述词,表示商品i和j中,所有出现的描述词。由此,可得出商品的相似度矩阵。该矩阵是一个以“1”为对角线的对称矩阵。

第三步,推断目标用户的搭配方案。

将目标用户的历史购买行为向量为:

其中,表示为用户在商品类型中,购买的第件商品。将用户的购买行为向量与专家搭配方案矩阵做比较,利用商品相似性矩阵,按类别逐一计算与之间的相似度,计算方法可表示为:

据此,可以得到与之间的相似度向量:

从向量中,取相似度值最大搭配方案作为用户的推荐搭配方案。

第四步,根据用户的搭配方案结果,给出推荐商品集。

在给出推荐集之前,需要引入流行因子,来体现商品的受欢迎程度。通过在一定时间段内商品的被浏览次数以及被购买次数的加权,为每一种商品定义了一种反应热度值的评价指标。

根据用户的潮流分类的结果内,取与每件商品相似度最高的N件商品,得到推荐集。在用户未购买的品类中,从相似度最高的N件商品中,按照流行因子的大小,取流行因子最高的n(n

通过引入流行因子,可以根据用户的衣着风格,更好的推荐当前流行的服装款式。

2.3 推荐方案的选择及处理

基于用户的协同过滤可以挖掘用户与用户之间的相似性,利用用户间相似性,给用户提供个性化推荐,能够较好的解决长尾效应。用户行为越丰富,购买的商品品类和数量越齐全,则该推荐策略的效果越好。

专家推荐则在挖掘用户兴趣爱好的基础之上,引入流行因子,为用户寻找最匹配的搭配风格,并将搭配方案中,热度最高的商品,推荐给用户。该推荐策略在用户只购买了部分品类商品时,能为用户推荐未购买品类内流行的商品,满足用户的搭配需要。专家推荐策略,在用户购买商品品类不全的情况下,具有更好的推荐效果。

为了提高推荐效果,本系统将按照用户的历史购买行为,将用户进行分类。通过对用户的分类,选择合适的推荐策略,以提高推荐效果。

本系统将用户分为三类,第一类为新注册用户。这类用户的并没有历史行为数据,因而也无法利用协同过滤或者专家推荐。因此,对此类用户,将按照系统

内流行因子最高的N种商品中,随机挑选n(n

第二类用户为低频用户,该用户群的特点为,在系统内有历史行为数据,但购买的商品品类并未包含全品类商品。对于此类用户,将强化专家推荐的结果,以协同过滤推荐结果为辅。

第三类用户为高频用户,这类用户在系统内购买的商品分布在全品类,历史行为数据丰富,合适利用协同过滤的方法挖掘其可能的兴趣,将专家推荐的结果作为次要推荐。

对于第二、三类用户,本系统采用的加权因子的计算方法如下:

其中,为协同过滤推荐结果集,为专家推荐结果集,、为两者的权重因子,其表示方法为:

式中,为目标用户已购买的商品品类,为商品的品类总数。

3 推荐系统的设计与实现(Design and implementation of the recommend system)

该系统设计之初,即包含了大量的用户数据、商品数据以及专家搭配方案数据。且这些数据会随着时间迅速的积累,呈现出爆发式增长。并且,该推荐系统的推荐算法,涉及众多复杂数据运算,运算资源开销大。因此,选择一个合适的分布式系统,是实现该系统的技术基础。

Hadoop是一个由Apache基金会所开发的分布式系统基础架构[10,11]。用户可以通过分布式文件系统HDFS和并行数据处理模型MapReduce,能够快速地搭建计算集群,实现数据的分布式存储及分析,而无需考虑分布式底层的技术细节[12]。

由于Hadoop因其高效、可靠的性能,灵活的可拓展性,低廉的成本从而被广泛的应用于大规模数据的运算。更因为其开源的商业模式,吸引了更多的项目开发者的关注。

3.1 系统的推荐流程设计

本推荐系统是服务于电商系统的一个子系统,具有一个完整的软件系统的结构。

为了保证推荐结果的时效性和运算速度的高效性,本系统可分为离线计算部分和在线计算部分。对于计算量较大的运算部分,一次计算可能耗时较久,短则数分钟,长则几十小时,这样的运算速度,难以保证用户的体验。另外,还有一些中间数据,短时间内,都维持在静态不变的,例如用户相似度矩阵、商品相似度矩阵、专家推荐搭配矩阵,这些矩阵,计算量大、耗时耗资源,且并非时时变动,只需要保持一定的更新频率即可。故可以将这类数据,离线计算,定时更新。

系统采用多方法混合的推荐策略。首先对业务系统的数据进行读取、转换、清理、存储等操作,从而获得原始业务的可用信息,提取用户行为数据、商品属性数据以及专家搭配方案数据这三大基础数据集。在获取基础数据集之后,利用这三大数据集,驱动包括协同过滤算法、专家推荐算法在内的推荐引擎,并获得对应的推荐商品集。获得推荐引擎对应的商品推荐结果,根据加权排名,得到初始推荐结果集。

在推荐系统的推荐结果中,往往需要加入一些商业推广,即向用户推荐一些定向商品。这些商品组成人工补充推荐集,再与初始推荐集按照一定的加权与排名,得到最终的推荐结果。系统的推荐流程如图3所示。

3.2 系统结构设计

作为电商系统的一个重要组成部分,推荐系统需要保证高稳定性、低耦合度、易扩展等特点。系统基于Hadoop平台构建了多层次分布式系统架构,采用纵向分层、横向模块化、基础功能组件化的设计模式,通过组合的形式,实现多种推荐策略的功能需求,极大地简化了系统结构,增强了系统的可拓展性。系统的整体结构如图4所示。

数据访问层:数据访问层主要承担从业务系统中,抽取相应的业务数据,如用户购买记录、浏览记录、商品属性数据、专家搭配方案数据等,经过清理、加工等处理之后,提供给Hadoop计算集群做数据计算。在Hadoop我们此过程利用Mapreduce任务实现,而该任务,可分为两个阶段,Map和Reduce。首先,Mapper类实例化map函数,将原始数据以key和value为键值的形式作为map函数的输入值。相类似,使用Reducer来定义reduce函数,并获得对应的以key和value为键值的输出函数。同时,数据访问层还负责对系统输出结果做解析。

数据模型层:数据模型层是对业务数据进行计算后得出的业务对象模型。数据模型可分为用户数据模型和商品数据模型,其中用户数据模型包含了用户的购买行为数据、浏览行为数据等;商品数据模型包含了商品属性数据、被购买和被浏览数据。利用数据模型,可以生成用户特征向量和商品特征向量,从而得到相似用户矩阵以及相似商品矩阵。

算法实现层:算法实现层是推荐策略层的基础。在经过算法实现层的计算后,得出一些中间数据,这些数据是推荐策略所必需的数据集,例如相似用户矩阵、相似商品矩阵、商品热度向量等。综合考虑系统的实际需求以及系统性能,算法层封装的算法包括jaccard相似性算法、余弦相似性算法、k-means聚类、SVD分解、协同过滤算法、流行因子权重算子等常见的数据挖掘算法。

推荐策略层:推荐策略层是系统架构中的核心。系统利用不同的推荐策略,驱动不同的算法组合,以实现不同的推荐方法。由于不用的推荐策略,具有不同的优缺点,故系统配备有系统过滤推荐及专家推荐两种推荐策略。由于系统采用分层的模块化设计,推荐策略层可采用不同的推荐策略及组合,具有很强的拓展性和灵活性。

在采用协同过滤推荐和专家推荐这两类动态推荐策略之外,考虑到系统的商业推广的需要,引入人工推荐作为补充,侧重于推荐系统中重点推广的商品。同时,人工推荐策略,能在一定程度上解决了系统冷启动的问题,为新用户或者新商品,做定向推荐。

应用层:应用层位于系统最顶层,为系统提供一整套的接口,供推荐系统与业务系统做数据交换;提供推荐方案的配置管理,方便灵活的调节方案的设置参数;对数据的干预及管理,如热门推荐商品标注、专家推荐方案的录入、编辑等功能。

3.3 系统数据库设计

系统所需的原始业务数据,具有多样性、非结构化等特点,且包含有大量的脏数据。HBase是一个分布式面向列的开源数据库,HBase—Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群[14]。

系统采用Native Java API访问和操作HBase数据库,适合Hadoop MapReduce Job并行批处理HBase表数据。

Sqoop为HBase提供了方便的RDBMS数据导入功能,将原始业务数据,从业务系统迁移至HBase[15]。

HBase建有用户购买行为记录表、用户浏览记录表、商品属性表、专家搭配方案表四个初始数据表,以及用户相似度分布表、商品相似度分布表、商品流行因子表、用户推荐结果表等。

对于协同过滤推荐集专家推荐的运算,采用分布式离线计算的方式,定期更新数据,并将计算结果存储到用户推荐结果表,供应用接口查询调用。

3.4 系统的配置及实现

本系统基于Hadoop平台搭建,能够灵活配置系统参数。初始状态配置参数如下:Hadoop集群配置有七个节点,包含一个Master节点,六个Slave节点,Hadoop版本为1.2.1,节点间使用网络连接。

4 结论(Conclusion)

本文提出了一种基于专家推荐与协同过滤算法的混合推荐策略,此策略能较好的适应服饰类商品其低重复购买率、强搭配性、受潮流影响较大等特点。同时,将上文的推荐策略,以基于Hadoop的分布式推荐系统予以实现。Hadoop平台能够灵活方便的配置分布式系统结构,从容应对大数据计算对计算集群的要求,具有较强的稳定性和可拓展性。在系统开发时,采用模块化开的设计模式,纵向分层,横向模块化、相同功能组件化,极大地简化了系统的结构,提高了系统的拓展的可能性、降低了系统的维护成本。该系统将为服饰类电商平台在大数据应用的背景下解决商品推荐问题,提供了一种可行的解决方案。

参考文献(References)

[1] Ricci F,Shapira B.Recommender system handbook[M].Springer,2011.Pu P,Chen L,Kumar P.Evaluation search and recommender system for E-commerce environments[J].Electronic Commerce Reseach,2008,8(1-2):1-27.

[2] You Wen,Ye Shui-sheng.A survey of collaborative filtering algorithm applied in E-commerce recommender system[J].Computer Technology and development,2006,16(9):70-72.

[3] Arwar B,et al.Item-based collaborative filtering recommendation algorithms[C].In Proceedings of the 10th International World Wide Web Conference,2001:285-295.

[4] Kim B M,et al.A new approach for combining content-based and collaborative filters[J].Journal of Intelligent Information System,2006,27(1):79-91.

[5] Jung K Y.User preference through Bayesian categorization for recommendation[C].In Pricai 2006:Trends in Artificial Intelligence,Proceedings,2006,4099:112-119.

[6] Zhang S,et al.Using singular value decomposition approximation for collaborative filtering[C].In:Proceedings of 7th IEEE International Conference on Ecommerce Technology,2005:257-264.

[7] Vozalis M G,Margaritis K G.Applying SVD on item-based filtering[C].In:Proceedings of 5th International Conference on Intelligent Systems Design and Applications(ISDA'05) 2005:464-469.

[8] Kohrs A,Merialdo B.Cluster for collaborative filtering application[C].In:Proceedings of the International Conference on Computational Intelligence for Modelling Control and Automation. Amsterdam,Netherlands:IOS Press,1999:199-204.

[9] 夏培勇.个性化推荐技术中的协同过滤算法研究[D].青岛:中国海洋大学,2011:22-23.

[10] Dean J,Ghemawat S.MapReduce:Simplified data processing on large cluseters.Communications of the ACM,2005, 51(1):107-113.

[11] 林大云.基于Hadmp的微博信息挖掘叨.计算机光盘软件与应用,2012,0l:7-8.

[12] Tom Webite.Hadoop权威指南[M].北京:清华大学出版社,2015.

作者简介:

郭 青(1970-),女,博士,副教授.研究领域:流程工业建 模,控制与优化.

孙 健(1989-),男,硕士生.研究领域:分布式计算应用,计 算机仿真.

猜你喜欢
分布式计算协同过滤推荐系统
基于用户偏好的信任网络随机游走推荐模型
基于云计算的移动学习平台设计与实现
基于链式存储结构的协同过滤推荐算法设计与实现
基于相似传播和情景聚类的网络协同过滤推荐算法研究
基于个性化的协同过滤图书推荐算法研究
个性化推荐系统关键算法探讨
基于协同过滤算法的个性化图书推荐系统研究
混合推荐算法在电影推荐中的研究与评述
云计算中MapReduce分布式并行处理框架的研究与搭建
浅谈Mahout在个性化推荐系统中的应用