基于Mahout的高校学生食堂就餐窗口推荐算法研究

2015-09-26 07:46严水歌付珍珍南通大学现代教育技术中心南通226000
现代计算机 2015年23期
关键词:查准率物品协同

严水歌,付珍珍(南通大学现代教育技术中心,南通 226000)

基于Mahout的高校学生食堂就餐窗口推荐算法研究

严水歌,付珍珍
(南通大学现代教育技术中心,南通226000)

0 引言

从2011年开始,中国进入大数据风起云涌的时代,以Hadoop[1]为代表的家族软件,占据了大数据处理的广阔地盘。开源界及厂商,所有数据软件,无一不向Hadoop靠拢。Hadoop逐步变成了大数据开发的标准。在Hadoop原有技术基础之上,出现了Hadoop家族产品,常用的项目包括Hadoop,Hive,Pig,HBase,Sqoop,Mahout,Zookeeper,Avro,Ambari,Chukwa等。通过“大数据”概念不断创新,推出科技进步。Mahout是Hadoop家族中与众不同的一个成员,是一个基于Hadoop的机器学习和数据挖掘的分布式计算框架。Mahout为数据分析人员解决了大数据的门槛;同时为算法工程师提供了基础的算法库;对于Hadoop开发人员而言提供了数据建模的标准;对于运维人员而言,为其打通了和Hadoop的连接渠道。Mahout完整地封装了“协同过滤”算法,并实现了并行化,提供了非常简单的API接口,本文用Mahout来构建推荐系统,抽样统计我校学生对学校食堂各就餐窗口进行评分,得到一个数据集,采用基于Mahout推荐算法API对数据集进行分析,能得到非常高效的结果。

1 协同过滤[2]推荐算法

协同过滤推荐算法主要有基于用户的协同过滤,基于item的协同过滤以及SlopeOne推荐算法。基于用户的协同过滤,通过不同用户对物品的评分来评测用户之间的相似性,基于用户之间的相似性做出推荐。简单来讲就是:给用户推荐和他兴趣相似的其他用户喜欢的物品。计算上,就是将一个用户对所有物品的偏好作为一个向量来计算用户之间的相似度,找到K邻居后,根据邻居的相似度权重以及他们对物品的偏好,预测当前用户没有偏好的未涉及物品,计算得到一个排序的物品列表作为推荐。基于item的协同过滤,通过用户对不同item的评分来评测item之间的相似性,基于item之间的相似性做出推荐。简单来讲就是:给用户推荐和他之前喜欢的物品相似的物品。基于ItemCF的原理和基于UserCF类似,只是在计算邻居时采用物品本身,而不是从用户的角度,即基于用户对物品的偏好找到相似的物品,然后根据用户的历史偏好,推荐相似的物品给他。从计算的角度看,就是将所有用户对某个物品的偏好作为一个向量来计算物品之间的相似度,得到物品的相似物品后,根据用户历史的偏好预测当前用户还没有表示偏好的物品,计算得到一个排序的物品列表作为推荐。基于物品的协同过滤算法可分为三个步骤,步骤1:建立物品的同现矩阵,按用户分组,找到每个用户所选的物品,单独出现计数及两两一组计数。步骤2:建立用户对物品的评分矩阵,按用户分组,找到每个用户所选的物品及评分。步骤3:矩阵计算推荐结果,推荐结果是同现矩阵和评分矩阵的乘积,即同现矩阵×评分矩阵=推荐结果。SlopeOne是一种简单高效的协同过滤算法。通过均差计算进行评分。其基本思想是采用平均加权计算。Slope One的核心优势是在大规模的数据上,它依然能保证良好的计算速度和推荐效果。

2 构造自己的推荐系统

基于Mahout环境开发,官方建议我们的标准化的程序开发过程可以参见图1。

图1 一个简单的基于用户推荐的插图[3]

图1清晰展现了基于Mahout开发推荐系统的完整流转过程。从图中我们可以粗略地看出推荐引擎分为5个主要部分组成,分别是数据模型,相似度算法,近邻算法,推荐算法以及算法评分器。Mahout框架里面的接口包cf.taste包实现了推荐算法引擎,它提供了一套完整的推荐算法工具集,同时规范了数据结构,并标准化了程序开发过程。根据Mahout推荐引擎,我们可以创建自己的推荐引擎构造器,主要用到的关键API接口列举如下:recommend(long userID,int howMany),该方法获得推荐结果,给指定userID推荐howMany个Item。推荐算法实现类主要有GenericUserBasedRecommender,该实现类是基于用户的推荐算法的。GenericItemBasedRecommender类是基于物品的推荐算法的。构造自己的推荐系统,具体步骤可归结如下:

①构造数据模型

②构造相似度算法模型,该步骤需要计算用户相似度距离,衡量用户相似度距离可以用欧氏距离相似度 (EuclideanDistanceSimilarity)和对数似然相似度(LogLikelihoodSimilarity)。其中欧式距离d可表示如下:

利用欧氏距离d定义的相似度s,s=1/(1+d)。由表达式可以得知其范围介于0与1之间,欧氏距离相似度的值越大,说明d越小,也就是距离越近,则相似度越大。

③构造近邻算法模型

近邻算法给相似的用户进行排序,选出前N个最相似的,作为最终推荐的参考的用户。近邻算法分为2种,即 NearestNUserNeighborhood算法[4]和 Threshold UserNeighborhood算法。NearestNUserNeighborhood算法指定最近邻用户N的个数。例如选出前10最相似的用户。ThresholdUserNeighborhood算法指定最近邻用户的比例。例如选择前10%最相似的用户。

④构造推荐算法模型

⑤构造算法评估模型

⑥推荐结果输出

3 实验

3.1搭建开发环境

本次实验所需要的实验环境列举见表1。

表1 实验环境

3.2实验数据说明

本次实验选取我校主校区学生对两个学生食堂各窗口的服务,就餐等各方面进行综合评分。根据该调查,对实验数据集进行以下阐述:第一个数据集以rating2.csv命名,见图所示。第二个数据集是学校学生食堂的窗口组别,见图2所示。

rating.csv文件是一个行为数据集,该数据集有3列数据,第一列是学生ID,标识每个学生,为了更加清晰表达含义,选取自增的数据来标识每个学生,其中增量选取为1,这种表示方式跟用学生学号标识学生具有同样意义。第二列是POS机ID,该ID标识每个食堂窗口,第三列是具体某个学生对各个窗口的评分。测试集的记录数是4000,代表学生对窗口的评分次数。统计的学生数为200个,选取100个窗口进行评分。评分值用1-10表示。

图2 实验数据集截图

图3 食堂窗口组别截图

该截图所列出的记录是我校主校区两个学生食堂的窗口组别,每个食堂的每个组别下面有若干个窗口,实验数据集里的每个窗口号都在这组别里。也就是说数据集中的窗口号与该记录是多对一的关系。

3.3实验过程

我们选择了基于用户的协同过滤(UserCF),基于物品的协同过滤ItemCF以及SlopeOne算法共3种推荐算法,本实验进行了7种组合的测试,主要是针对相似度算法模型和推荐算法的不同组合,其中基于用户的协同过滤算法有三种组合,采用欧氏距离用户相似度或对数似然用户相似度,最近邻算法以及基于用户的有评分和无评分的推荐算法组合。基于物品的协同过滤算法也有三种组合,其组成部分也采用欧氏距离用户相似度或对数似然用户相似度,最近邻算法以及基于用户的有评分和无评分的推荐算法组合,详见表2列举如下:

表2 推荐算法组合测试

3.4算法评估

算法评判标准:召回率(recall)与查准率[5](precision)。Mahout提供了2个评估推荐器的指标,查准率和召回率(查全率),这两个指标是搜索引擎中经典的度量方法[6]。结果集按检索到的以及未检索到的,相关性与不相关性可以有4种组合,这4种组合用一个表格展示,请参见表3。

表3 算法评判标准

表格中A表示检索到的,而且是相关的,即结果集是搜到的也是想要的。B表示未检索到的,但是相关的,即结果集是没搜到,然而实际上想要的。C表示检索到的,但是不相关的,即结果集是搜到的,但是没用的。D表示结果集是未检索到的,也是不相关的,即结果集没搜到也没用的。查准率用P表示,P=A/(A+C)。被检索到的结果集相关得越多越好,不相关的越少越好,这是追求“查准率”,即A/(A+C)的值越大越好。召回率用R表示,R=A/(A+B)。结果集被检索得越多越好,这是追求“查全率”,即A/(A+B),其值越大越好。

3.5实验结果

经过7种算法组合的测试,用查准率和召回率两个指标对7种算法组合进行评估,形成如下结果集,具体参见表4。

为了得到差异化结果,我们分别取4个算法:userEuclidean,itemEuclidean,userEuclideanNoPref,item EuclideanNoPref,也就是采用欧氏距离用户相似度,基于用户和物品的推荐算法,并且采用有评分和无评分,对推荐结果进行比较,形成如下推荐结果,对推荐结果进行一个截图,见图所示。

图4中左列列出的是算法名称,右列是针对4种推荐算法形成的实验结果,针对每一种推荐算法,根据每个学生已有的一些评分,给每一个学生推荐三个窗口。实验所得到的结果集是综合各方面所得到的最佳推荐结果。

图4 实验结果集截图

表4 实验结果

[1]邓雄杰.基于Hadoop的推荐系统的设计与实现[D].华南理工大学,2013

[2]周涛,李华.基于用户情景的协同过滤推荐[J].计算机应用,2010(04).

[3]S.Owen,R.Anil,T.Dunning,E.Friedman.Mahout in action,2011

[4]M.Deshpande,G.Karypis.Item-based top-n recommendation algorithms.ACM Transactions on Information Systems,2004

[5]李文海,许舒人.基于Hadoop的电子商务推荐系统的设计与实现[J].计算机工程与设计,2014(01).

[6]Shlomo Berkovsky,Tsvi Kuflik,Francesco Ricci.Mediation of user models for enhanced personalization in recommender systems[J]. User Modeling and User-Adapted Interaction,2008(3).

Mahout;Collaborative Filtering;Recommendation System;Precision;Recall

Research on Dining Windows Recommendation Algorithm for Students in Higher Education Based on Mahout

YAN Shui-ge,FU Zhen-zhen
(Modern Educational Technology Centre,Nantong University,Nantong 226000)

1007-1423(2015)23-0024-05

10.3969/j.issn.1007-1423.2015.23.005

2015-06-09

2015-07-31

讨论基于Mahout的推荐系统开发过程,以我校学生对学校食堂各就餐窗口进行评分为例,通过建立实验系统,利用Mahout推荐系统引擎提供的API分析实验数据。该实验样例完整地阐述创建自己的推荐引擎构造器的过程。本实验采用常用的协同过滤推荐算法,协同过滤推荐算法主要包括基于用户的协同过滤,基于物品的协同过滤以及Slope-One推荐算法。搭建自己的开发环境,基于相似度算法模型和推荐算法,使用7种不同组合进行对比实验。使用查准率和召回率两个指标对7种算法组合进行评估。采用欧氏距离用户相似度,基于用户和物品的推荐算法,并且采用有评分和无评分的方法对推荐结果进行比较,由实验得知,基于Mahout的推荐系统能快速高效地给学生推荐相似的就餐窗口。

Mahout;协同过滤;推荐系统;查准率;召回率

严水歌,男,硕士,初级实验师,研究方向为数据挖掘

付珍珍,女,硕士,初级实验师,研究方向为数据挖掘

Constructs an experimental system based on the deep discussion on development process of Mahout recommended system and empirical researches on scoring all dining windows by students.Furthermore,conducts a deep analysis on experimental data through API provided by Mahout recommended system engine.This experimental sample completely narrates the process to create its own recommended engine constructor.The commonly-used collaborative filtering recommendation algorithm is adopted by this experiment which includes collaborative filtering of users,collaborative filtering of articles and recommendation algorithm of SlopeOne.Under construction of its own development environment,adopts seven different combinations to conduct contrast experiment based on similarity algorithm model and recommended algorithm.Precision ratio and recall rate are applied to evaluate the seven algorithm combinations.Compares these recommended results through Euclidean distance similarity of users,collaborative filtering of users,collaborative filtering of articles,scoring method and non-scoring method.From the experimental results,it can be concluded that recommended system of Mahout can efficiently and rapidly recommend similar dining windows to students.

猜你喜欢
查准率物品协同
称物品
家校社协同育人 共赢美好未来
“双十一”,你抢到了想要的物品吗?
蜀道难:车与路的协同进化
谁动了凡·高的物品
“四化”协同才有出路
基于数据挖掘技术的网络信息过滤系统设计
大数据环境下的文本信息挖掘方法
基于深度特征分析的双线性图像相似度匹配算法
三医联动 协同创新