APP下载

基于Hadoop-Mahout的分布式课程推荐算法

2018-04-18徐文健刘青昆郑晓薇李永波

计算机应用与软件 2018年3期
关键词:参与度分布式向量

徐文健 刘青昆 郑晓薇 李永波

1(辽宁师范大学计算机与信息技术学院 辽宁 大连 116081) 2(瓦房店市第八高级中学 辽宁 大连 116300)

0 引 言

2012年是大规模开放在线课程MOOC元年,随着MOOC的全球化,MOOC的学习者和课程规模都在不断扩大,并且逐渐在各个高校的教育方式中发挥着重要的作用。

MOOC的全新学习模式的优点十分突出,然而在这种自由选课和自主学习的学习模式下,不可避免地会出现传统学习模式下未曾遇到的一些问题:比如在线课程种类繁多、鱼龙混杂,学习者很多时候并不能找到真正适合自己的课程。当学习者发现课程并不适合自己时,学习时间已经过半,在不停的切换课程后可能会对课程学习失去耐心。而随着学习过程的进行,学习者对课程表现出的忠诚度也会发生变化,最终能坚持将课程学习完成的只是一小部分[1]。以上问题的出现导致了在线学习者的学习效率降低、学习质量难以保证。在有些MOOC平台上为学习者提供了相应的课程推荐功能,通过对学习者的学习记录等信息来分析用户或课程之间相似程度以及课程的热门程度。但随着MOOC学习者的人数逐渐增加,大量学习者的数据加大了服务器的负载和工作压力;同时目前的推荐算法不能针对性地给学习者个性化推荐,推荐结果往往并不尽如人意。

利用Apache-Mahout机器学习框架中的协同过滤推荐算法可对在线课程进行评价,得到相应的推荐值矩阵。但这种算法对课程的评价仅考虑了学习这门课程的人数的多少以及部分读者的评论,没有将课程本身的质量因素和适用性加入到对学习者进行推荐的过程中。本文从对在线课程作综合评价的角度提出IRS课程评价方法,以交互度I、评价率R、用户评分S等参数作为评价指标。在进行个性化推荐时,将用户的偏好与IRS结合形成新的推荐算法。本文在Hadoop分布式云计算环境下,以慕课网学习者的学习数据为实验样本,Hadoop集群中各个节点对数据进行并行处理,处理速度快、延迟低且易于操作。实验结果表明本文的IRS推荐算法所推荐的课程更适合学习者的个性化学习。实验数据体现了在Hadoop集群下IRS并行推荐算法对大数据量处理的高效性,同时验证了该推荐算法的可行性。

1 IRS课程评价方法

1.1 学习参与度与交互度

参与度的概念在传统课堂教学的研究中已经有很多成果,早期研究中将学习参与度定义为学生关注,并完成一定学习任务的学习参与行为表现。之后学者不断对学习参与度的概念提出新的内容和新的定义,现在的学习参与度的概念在原有概念的基础上加入了学习者情感方面的内容,不仅指学生完成学习任务,同时在学习的过程中的积极认知、行为、情感等表现[2]。

在线学习参与度与传统课堂教学的参与度最大的不同在于学习环境的不同,而两种环境下学习者学习参与的实质是相同的。同样是在完成学习任务时,表现于努力理解学习内容,花费精力解决学习中出现的问题,反复观看课程视频、反复研读课程资料课件、积极与老师同学进行交流探讨、认真完成作业、分享学习成果、帮助学习者解决难题等[3]。由此可见,学习者对于一门课程的参与度很大程度上影响了学习者对该课程感兴趣的程度,因而可以将其作为评价该门课程的一项指标。为了更合理地描述学习者对课程的认可程度,基于学习参与度的定义,本文提出交互度I的概念,指学习者对于所学习的某门课程,单位时间内与该课程的平均交互的次数。其量化公式为:

(1)

式中:Q代表交互数,指学习者在学习一门课程中,做笔记、问答、评论、作业、观看视频等动作的总次数;RC代表完成率,表示某人学习此门课程的进度,即当前已完成课程量与课程总量的比值;T代表课程时长;n为学习者样本的数量。

1.2 IRS评价指标

慕课网是垂直的互联网IT技能免费培训的网站,网站中有涵盖IT领域各方面超多700个课程,数以百万计的学习者。在用户对于课程的学习中,学习者可对内容是否充实、逻辑是否清晰,是否简单易懂进行打分。经统计,截至2017年3月30日之前,在慕课网已有的课程评分中,学习者对内容充实、逻辑清晰、简单易懂的平均评分分别为9.79、9.57、9.50(10满分),学习者的综合平均评分为9.60分(10满分)。从各个课程来看,绝大多数课程的评分均高于9.0分,由此可看出,参与评价的学习者对课程表示认可的程度很高。但由于参与评价的学习者在总学习人数中不足百分之一,仅凭少数学习者的评分并不能全面评价一门课程。

为了更客观、合理地评价一门在线课程,本文提出一个评价对象基于课程的IRS指标评价方法,用于评价一门课程是否具有传统意义上较高的参与度,对学习者有较大的吸引力,使其更好地参与到课程学习当中。IRS指标中:I为交互度;评价率R为参与该课程评价的总人数与参加该课程学习的总人数的比值,该数值越高,体现出越多学习者愿意为该课程进行评价,为保证数据可用性,采用千分数记录数据,见式(2)。评分S为参与评价的所有用户根据各个方面对该课程的主观打分的平均值。

(2)

IRS指标评价量化公式为:

IRS=α1I·+α2R·+α3S·

(3)

式中:α1、α2、α3为I、R、S各个指标的权重,通过熵值法确定。I·、R·、S·为各个课程所对应指标的真实值。表1列举出了IRS评价指标中各个指标的含义。

表1 IRS各个指标的含义

IRS评价指标权衡影响学习者学习质量的三个因素,综合并客观地对一门课程进行量化,从而进行课程评价。

本文爬取并计算Java入门、Ajax全接触、C语言入门等15门课程的各个指标的数据,得到各指标的权重:α1=0.662、α2=0.205、α3=0.133,由此可见交互度在IRS指标系列中所占比重较大,学习者在学习的过程中是否能够更多地参与到课程中去,对于评价一门课程有着重要的参考意义。

2 分布式云计算推荐服务与算法

推荐系统的作用在于通过数据挖掘等技术,找到用户与物品等信息上的联系,通过对信息的分析与计算,发现适合用户或用户更感兴趣的信息,结合这些信息对用户做出相应的推荐[4]。在实际应用中,系统在对用户进行推荐时,需要实时处理大量数据,为了保证推荐系统能够高效地处理海量数据,分布式云计算能出色地完成任务。

2.1 Hadoop与Mahout简介

作为目前应用广泛的云计算平台,Hadoop具有计算效率高、稳定性好、开源等特点。Hadoop的核心:HDFS(分布式文件系统),实现对分布式存储的底层支持[5];MapReduce是云计算并行框架,Map(拆分映射)和Reduce(化简规约),其思想是:Map函数将数据切割为独立的数据块,分配给Hadoop集群做并行计算,再通过Reduce函数将结果汇总,输出需要的结果[6]。其函数式编程思想的概念表达可表示为:

Maplist;Reducelist(v2)

Mahout是ASF(Apache Software Foundation)旗下的一个开源项目,提供了可扩展的机器学习领域经典算法的实现。其主要部分为协同过滤(CF)、推荐引擎(recommender)、聚类(clusting)和分类(classification)[7]。通过Apache Hadoop库,可以将Mahout扩展至分布式云计算平台,并进行相应的计算功能。

2.2 Mahout推荐算法

2.2.1共现矩阵

在Mahout协同过滤推荐算法中,用到共现矩阵M。共现矩阵中的元素为在某些用户偏好值列表中每个项目对共同出现的次数,即用户对两种项目同时偏好的次数,矩阵中对角线上的元素无效。

2.2.2计算用户向量

在进行个性化推荐时,将每一个用户的偏好视为一个向量,这些用户偏好被视为n维空间中的点,每个维度代表一个项目,用户对项目的偏好值为此向量中的值,用户没有表达偏好的项目映射维向量中的0值。由于用户通常情况下只对一小部分项目表达过偏好,所以用户向量中的值大多为零,是一个系数矩阵。

2.2.3产生推荐结果

将共现矩阵M和用户向量U相乘得到推荐结果R,如下式所示:

(4)

式中:对于课程x,uix代表用户i对应的偏好值,Rix为推荐值,在得到的推荐值矩阵R中,矩阵R对应的值为相应课程的推荐值,将这些值从大到小进行排序即为所求推荐结果[8]。

2.3 IRS在线课程推荐算法

2.3.1IRS推荐算法

基于原始的Mahout推荐方法,引入IRS指标评价,将学习者对已学习过的课程的评分作为用户偏好值构成向量,得到改进后的推荐方法。如下式所示:

(5)

2.3.2算法实现

在Mahout工具中,org.apache.mahout.cf.taste.hadoop.item.RecommenderJob

将推荐过程中各种Mapper和Reducer组件粘连在一起,将原封装代码中偏好值的计算方式按照式(5)进行更改,在HDFS中得到改进后的偏好值和偏好向量。

2.4 IRS分布式推荐算法流程

本文通过网络爬虫从慕课网得到学习者的数据,包括学习者学习过的课程和对应的评分,在Mahout的RecommenderJob作业下,进行分布式计算,其推荐算法的基本流程为:

(1) 生成用户向量:map函数解析每一个用户ID和若干个课程ID,实现一一对应的关系;Reduce函数利用全部课程ID,与用户的偏好值对应,构造用户向量。

(2) 计算共现关系:将流程(1)的输出结果作为输入,通过第二个MapReduce函数,循环遍历非零元素进行累计,统计课程共现的次数,得到共现矩阵。

(3) 计算用户偏好向量:将预计算的k值与学习者对应的偏好值做乘积,构成用户偏好向量;对流程(2)得到的共现矩阵的每一列的列向量与用户向量的对应元素相乘,将结果保存至推荐向量R中。

(4) 计算矩阵乘:通过两个MapReduce函数将共现矩阵与用户向量归并为一条输出记录并存储下来。

(5) 形成推荐:算法为每个用户合并推荐向量,将推荐值按从大到小的顺序进行排序,除去学习者已经学习过的课程,找到N个最大值(为方便计算和统计,本文实验中N取值为3),输出得到推荐结果。

3 实验及结果分析

3.1 实验环境

本文中实验使用的硬件平台由三台CPU Inter(R) E5-2609 四核2.40 GHz、8 GB的惠普PC构建,其中一台Hadoop3作为主机来分配任务,其余两台Hadoop2、Hadoop1作为从机来实现计算任务。搭载Ubuntu 14.04操作系统,安装JDK1.7.0_25、Hadoop-2.7.3、mahout-0.12.0和Eclipse java EE IDE集成开发环境。设定分布式环境Hadoop和mahout环境存放目录为/usr/hadoop。

3.2 实验内容

本次实验分别选取了1.5 MB(18 600条记录)、3.0 MB(37 306条记录)、6.0 MB(74 512条记录)、12.0 MB(149 024条记录)四种数据量大小不同的学习者信息,数据文件表(部分)内容为不同的学习者所学习过的课程及课程编号,如图1所示。在Hadoop-Mahout环境下通过单个节点、双节点和三节点分别对这些数据表进行实验。

图1 userID-itemID数据文件

以1.5 MB大小的数据文件表的分布式计算为例,输出的推荐结果如图2所示,输出格式为:userID [itemID:R1,itemID2:R2,itemID3:R3]。

图2 1.5 MB文件推荐结果

从输出结果看出,对用户1的推荐课程为2号、11号、12号课程,推荐指数分别为1 824 365,1 043 211,775 426。图中其他行是对其他用户的推荐结果。

并行加速比用来衡量并行机工作的速度,即顺序执行时间与并行执行时间的比值;并行效率为加速比与节点个数的比值。本实验的评价数值计算如表2所示。

表2 并行执行效果对比

表2显示出在不同的数据规模中,随着数据量的增大,集群所承担的额外开销所占的比例变小,加速比和并行效率也相应增加。从而证明本文设计的推荐算法适用于分布式环境,并验证了分布式环境下并行计算的高效性。

通过实验可得出结论:在节点数目一定时,执行时间的缩短趋势随着数据规模的增加而加大;在数据规模一定时,执行时间随节点数的增加而相应大幅减少[9]。

3.3 推荐效果

本实验随机选取100名学习者的学习数据,抽取相关的在线课程作为测试数据集,对改进前后的推荐算法分别进行实验,计算分析两者的差别。

(6)

(7)

计算结果表明,虽然IRS推荐算法的推荐结果命中174门课程(共300门推荐课程)、命中率58%,相比较Mahout推荐算法的命中213门课程、命中率71%较低,但评分差为0.448。评分差为正值表明IRS推荐算法较Mahout推荐算法推荐了更多被学习者忽略或还没有被学到的高质量课程,且IRS推荐算法的推荐课程对于学习者来说评分更高,满意程度更好。所以本文的推荐算法更适合学习者的个性化学习。

4 结 语

本文提出的IRS在线课程分布式推荐算法,在机器学习框架Mahout协同过滤推荐算法的基础上,将评价对象基于课程的IRS指标评价方法与用户的偏好结合,形成更适合学习者个性化学习的推荐算法。本实验以Hadoop云计算平台的MapReduce为基础,将大量在线学习者的学习行为数据分配于集群的节点机,极大地加快了推荐算法的运行速度。新的推荐算法在Hadoop分布式云平台的运行,不仅解决了在线课程推荐系统的实时性需求,为学习者更加客观、科学地推荐课程;同时在大量数据的网络环境中,提高运行速度,减轻服务器的工作负载。在远程教育和在线教育领域的建设中,对提高网络课程的学习质量和工作效率具有较重要的参考意义。

[1] 魏玲,李阳. 基于RFL的MOOC学习者细分忠诚度研究——以“怪诞行为学”课程为例[J].现代教育技术.2016,26(11):67-73.

[2] Skinner E A, Belmont M J. Motivation in the classroom: Reciprocal effects of teacher behavior and student engagement across the school year.[J]. Journal of Educational Psychology, 1993, 85(4):571-581.

[3] 朱文辉,靳玉乐.网络化合作活动学习对教育硕士在线学习参与度影响的行动研究[J].中国电化教育,2013,319(8):48-54.

[4] 孟祥武,刘树栋,张玉洁,等.社会化推荐系统研究[J].软件学报,2016,26(6):1356-1372.

[5] 赵彦荣,王伟平,孟丹,等.基于Hadoop的高效连接查询处理算法CHMJ[J].软件学报,2012,23(8):2032-2041.

[6] 江务学,张璟,王志明.MapReduce并行编程架构模型研究[J].微电子学与计算机,2011,28(6):168-170.

[7] 刘刚. Hadoop应用开发技术详解[M].北京:机械工业出版社,2014.

[8] 李龙飞.基于Hadoop+Mahout的智能终端云应用推荐引擎的研究与实现[D].西安:电子科技大学,2013.

[9] 郑晓薇,马琳. 基于Hadoop集群的多表并行关联算法及应用[J].微型机与应用,2013,32(4):91-93.

猜你喜欢

参与度分布式向量
提高学生课堂参与度 激活珠心算生命力
向量的分解
聚焦“向量与三角”创新题
初中语文教学中如何有效提高学生的课堂参与度
浅析分布式发电对电力系统的影响
鼓励自主安全活动 提升员工参与度
基于预处理MUSIC算法的分布式阵列DOA估计
向量垂直在解析几何中的应用
分布式并联逆变器解耦电流下垂控制技术
向量五种“变身” 玩转圆锥曲线