基于协同过滤的学习资源推荐平台的设计与实现(共7篇)
篇1:基于协同过滤的学习资源推荐平台的设计与实现
基于协同过滤的学习资源推荐平台的设计与实现
摘要:在科技日新月异的时代人们需要了解技术发展趋势并获取精准有效的学习内容。学习资源推荐平台基于协同过滤技术预估用户偏好,提供个性化推荐。系统对于用户没有给予评分的资源采用隐式评分规则,降低评分矩阵的稀疏度,从而提高资源推荐的精度和效率。
关键词:推荐系统;协同过滤;隐式评分
中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2018)12-0074-02
1概述
随着互联网的快速发展,在线学习模式也应运而生。然而在信息爆炸的二十一世纪,“信息过载”的问题日趋显著,如何快速从纷繁众多、参差不齐的学习资源中快速发现适合自身的专业水平的高质量学习内容已成为一个普遍的难题。因此,学习资源推荐系统的出现是大势所趋。
本系统在通用的最新、最热、好评推荐之外,还试图通过用户基本信息和学习行为预测该用户的偏好,并匹配用户学习深度进行个性化推荐。如何将推荐技术为用户提供精确的、具有针对性的服务是本系统重要的研究内容。
2协同过滤算法
协同过滤技术的核心思想包括两部分:利用用户的历史评分记录计算用户之间的相似性;然后,基于相似性较高的邻居用户对项目的评分来预估目标用户对特定项目的评分。系统选取高评分的项目进行推荐。
对于协同推荐中的“冷启动”问题,本系统采用了新用户基于内容推荐策略,根据注册信息中的兴趣点来推荐对应的学习资源。而对于用户没有直接给予评分的项目,系统采用隐式评分策略,以此来解决评分矩?稀疏问题。
与基于项目的推荐相比,协同过滤方法的可以对视频类的非结构化对象进行推荐,并且突破了相似推荐的局限,可以启发用户的新兴趣点,进行更有价值的推荐。
3推荐策略和用户评分计算
3.1推荐策略
本学习资源平台支持以下四种推荐:
1)最热推荐:基于观看次数的推荐。
2)最新推荐:基于资源上线时间的推荐。
3)好评推荐:基于资源评分的推荐。
4)个性推荐:基于用户兴趣和学习行为的推荐。
其中,个性推荐仅针对系统注册用户。对于新用户,根据用户注册信息中的兴趣点,基于内容推荐。对于老用户,基于协同过滤技术预测用户评分,选取高评分的项目推荐。
此外,系统对所有类别下的学习资源进行深度级别的标记。在个性推荐时,若发现用户已经在进行高级别的学习时,不再推荐同类别下相对低级别的资源。
3.2 用户评分计算
在协同过滤推荐算法中,对相似用户的界定,依据用户对资源的已有评分情况。即两个用户对资源的评分越相近,则喜好越相似,即相似度越高。
对资源的评分,本系统分为显示评分和隐式评分两种。显示评分,即用户对资源的评分。然而某些用户没有评分习惯,则可以启动隐式评分机制。即根据用户的行为来给资源评分。系统对资源的评分采用10分制,最高10分。具体评分规则如表1,初始得分为0分。
当用户的打开视频浏览,即可评4分,当浏览时长超过3分钟,即评6分,如果用户将这个视频观看结束(可分多次),即评8分。若用户收藏该学习资源,无论浏览时长多少,直接评10分。用户取消收藏,评分不变。隐式评分仅用于用户没有显示评分的情况。
系统将根据用户对视频的评分来计算用户相似度,从而产生协同推荐。系统实现
整个系统的实现主要包括三个部分:基本的在线学习功能模块、收集用户行为模块和推荐生成模块。
系统前台提供在线学习服务,同时收集用户行为。后台启动定时任务,计算推荐资源列表。对于浏览资源少于20个的新用户,根据注册信息进行推荐。而对于老用户,根据评分矩阵计算相似用户集合,从而预估用户喜好。之后,过滤掉在同一类别下,难度级别低于当前学习级别的资源。从而生成最终的推荐列表
每次用户登录时,在首页显示个性化推荐学习资源。如图2所示。下一步工作
随着系统的用户和资源数目不断增加,计算量越来越庞大,考虑迁移到hadoop平台,借助高性能分布式计算,做到实时推荐。此当多个客户同时访问、高并发请求时系统能否承受高负载,应当从优化数据库的结构、查询语句,使用高效率的编程语言、高性能的Web容器等方面着手考虑。
推荐算法也可以在已有基础上进行优化,例如计算用户相似度时可以使用反差忽略部分用户。此外,本系统使用的推荐算法是基于用户的,同时也可以添加基于物品的推荐换个角度为用户推荐学习资源。
参考文献:
[1] 孙光浩,刘青丹,李梦云.个性化推荐算法综述[J].软件,2017(7).[2] 胡国强.基于协同过滤算法的MOOC个性化推荐系统[J].信息技术,2017(6).[3] 韩亚楠,曹菡,刘亮亮.基于评分矩阵填充与用户兴趣的协同过滤推荐算法[J].计算机工程,2016(1).[4] 于洪,李俊华.一种解决新项目冷启动问题的推荐算法[J].软件学报,2015(6).[5] 李宝,张文兰.智慧教育环境下学习资源推送服务模型的构建[J].远程教育杂志,2015(3).[6] 王宁.学习系统中基于用户行为分析的推荐算法研究[J].Computer Era,2015(11).[7] 叶树鑫,何聚厚.协作学习中基于协同过滤的学习资源推荐研究[J].计算机技术与发展,2014(10).[8] 刘建国,周涛,汪秉宏.个性化推荐系统的研究进展[J].自然科学进展,2009(1).[9] 吴颜,沈洁.协同过滤推荐系统中数据稀疏问题的解决[J].计算机应用研究,2007(6).
篇2:基于协同过滤的学习资源推荐平台的设计与实现
摘要:在现代教学过程中,师生之间经常需要交流大量的文件,如课件,作业等。传统的文件交流方式,如电子邮件,网站,专用软件,FTP等形式都有各自的缺点,效果不够理想。本文探讨改进基于FTP的教学资源管理平台,主要包括使用第三方软件搭建FTP服务器,使用ASP.Net编写的平台对用户帐户和发布的资源进行管理,以及使用VPN技术让校园外网用户访问校内的FTP服务。
关键字:FTP,教学资源,Serv-U
一、校园教学资源管理现状
在现代教学过程中,师生之间经常需要交流大量的教学资料:教师向学生发布的课件、教案、作业、习题、课程相关素材以及课外学习资料;而学生也需要向教师提交课堂练习、课后作业、实验报告等材料。目前,这个过程主要通过以下几种方式进行:
1、电子邮件:学生交作业时最常用。主要缺点:不易确认是否送达;容易出现重复邮件;不适合大文件传送。
2、HTTP方式:在建设精品课程时最为常见。主要缺点:需要事先准备网站并上传资源;一般只用于下载。
3、局域网内的C/S程序:各种机房教学软件一般自带作业收发功能。缺点:必需在同一机房内才能进行;容易出现数据包丢失,导致传送的文件损坏。
4、FTP方式:师生可快速上传和下载各种教学文件。而FTP的部署有很多选择,如Windows系统自带的组件、Serv-U、Home FTP Server和Gene6 FTP Server等。不足之处:需要配置大量帐户,否则管理困难。
二、部署基于FTP的教学资源站
1、选择部署FTP服务器的软件,需要满足以下要求软件:
1)可以配置足够多的用户帐户;
2)能够对各用户帐户进行配置,如主目录、文件访问权限、传输速度控制、限定用户可使用的磁盘空间大小等;
3)能够灵活地配置虚拟目录,使得当用户被隔离在自己的专用目录中的同时,还能够便捷地访问一部分存放其它文件夹中的公共资源,如教师发布的课件;
4)可以将用户分组进行管理,如:以班级为单位分组,然后统一配置权限;
5)能将用户及配置信息以数据库的形式保存和调用,方便我们对FTP站点的管理;
满足以上条件的FTP服务器软件有很多,即有收费的,也有免费的;其中,应用较为广泛,各类参考资料较多的是Rob Beckers公司开发的收费软件,Serv-U。这个软件目前的最高版本为11.x。
2、在Serv-U中创建域并配置数据库
Serv-U在安装完成后,先要添加一个域,然后为域指定侦听端口(默认21),接着是用户管理。用户相关的信息默认存放在工作目录中的配置文件里。为了方便管理和二次开发,我们在Windows中配置好使用SQL数据库的ODBC数据源,然后指定Serv-U使用这个ODBC数据源。
3、Serv-U的用户管理
创建域之后,首先应该先按照本单位的组织结构及角色分类创建相应的群组,如系部组、班级组、教师组、学生组等。其次是添加用户信息,主要有以下步骤:
1)为每个用户(学生、老师)创建一个帐户并设置“允许用户修改密码”;为了方便管理,帐户名通常为学号和工号;
2)设定用户的主目录和目录权限;通常用户在自己的主目录里有完整的权限(读、写、重命名、删除、创建子目录);
3)设定用户的磁盘配额(可以使用的磁盘空间大小)及文件传输时的速率(上行/下载);
4)将用户加入对应的群组,根据之前步骤创建的群组,5)设置用户密码并下发;以下是两种密码下发和管理的思路:
①Serv-U 11.X版在用户的WEB登陆界面中提供了“找回密码”功能,在配置好SMTP服务后,用户随时可通过自己的帐号和预设的邮箱重设自己的密码。
②采用Vs2008自行设计一个.net站点提供用户管理功能,使用Linq技术实现数据库的增删改查的操作。
应当注意的是,Serv-U的数据库中的用户密码是加密存储的,公式为: 存储密码= xy+MD5加密(xy+用户密码)
其中,xy为两个随机生成的小写字母。参考代码如下:
private string Encode(string strUserPsw){ //此方法将用户输入的密码加密为Serv-U的密码存储格式
Random R = new Random();string Head =((char)(97 + R.Next(25))).ToString()+((char)(97 + R.Next(25))).ToString();string UserPassword = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(Head + strUserPsw, “MD5”);return Head + UserPassword;} private bool CheckPassWord(string PswFromInput, string PswFromDB){ //此方法比较用户输入的密码与数据库中记录的密码是否一致
string Head = PswFromDB.Substring(0, 2);//Head=数据库中记录的用户密码前两位
string ePawFormInput = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(Head + PswFromInput, “MD5”);//将 Head+用户输入密码 进行MD5加密
return ePawFormInput==PswFromDB;}
4、虚拟目录和用户群组
虚拟目录是我们选择Ser-U的一个重要原因。我们的平台要求每个用户在使用前必需先登录,并锁定用户在各自独立的主目录内,这时若需要用户能够访问到一些在他们主目录之外的资源,就需要使用虚拟目录了。添加虚拟目录后,还需要对相关的用户群组设置目录权限。具体过程举例如下:
①假设整个FTP站点的工作目录为K:jtFTP;
②在站点工作目录下建立两个子目录:Teachers和Students,分别用于存放教师帐户和学生帐户对应的主目录;如教师帐户t0016对应的主目录是K:jtFTPTeachert0016;
③教师t0016需要向09软件班发布课堂练习素材时,先将文件上传到自己的FTP主目录的一个子目录(share)中,然后在当前FTP域内建立虚拟目录,主要包括:
物理路径: K:jtFTPTeachert0016share;
映射到: %HOME%(这是一个系统变量,指代用户的主目录); 虚拟名称: 张老师_课堂练习_0301;
④虚拟目录建立后,给对应的用户群组(09软件班)添加share目录的读取和列表权限;如果没有指定权限,学生的主目录中不会出现上一步骤中建立的虚拟目录;
⑤此班级学生登录FTP后,将在自己的主目录中看到一个新的子目录(张老师_课堂练习_0301),目录中的内容可以下载,但无法删除和修改;
⑥当需要学生提交作业时,教师t0016在自己的主目录新建一个子目录(stuWork),并确保这个子目录内已经为每个学生建立了一个与学生帐户同名的文件夹,然后在当前FTP域内建立虚拟目录,主要包括:
物理路径: 教师主目录stuWork20120301%user%;(%user%变量指代用户帐户,如学生s010901091访问的这个虚拟目录其物理路径为“20120301s010901091”) 映射到: %HOME%;
虚拟名称: 交作业0301;
⑦虚拟目录建立后,给班群组添加“教师主目录 stuWork 20120301”完整文件权限;
⑧此时学生的主目录中将出现名为“交作业0301”的新文件夹,学生可以在此目录内随时提交和修改文件;同时每个学生在此虚拟目录中的操作都是相对独立的,不会互相影响。
学生登录后的虚拟目录示意图,对用户来说和普通目录没有什么区别
⑨教师可以使用FlashFxp等FTP客户端工具将位于自己主目录下的作业目录快速地复制下来。
上述教师建立虚拟目录的过程可以通过自编写WEB站点来实现。教师只需要在WEB站点中填写新建虚拟目录的名称,选择对应的班级群组和权限即可;站点界面参考如下。
三、让外网用户访问FTP服务器
校园内网通常都会部署防火墙,如果想让外网访问内网的服务,一般需要在防火墙上开放一个对应的端口。
FTP服务工作时通常使用的是Pasv模式。这个模式一般需要两个连接。一个固定的侦听端口(默认为21),一个连接用的端口。当客户端向服务器进行连接时,服务器会在预先指定的端口范围中选中一个(如4068)并打开,然后告知客户端,客户端收到消息后,向服务端的这个端口发起连接,连接成功后才可以正常使用FTP服务。因此,同时在线的用户越多,开启的新端口就越多。如果要允许用户在外网直接以FTP方式访问,则需要在防火墙上开启一系列的端口,增加安全隐患。
目前比较常用的解决方法是通过VPN进行访问:校园内网的防火墙上只开启VPN服务;外网用户首先通过VPN拨号进入内网,然后就可以像在内网中一样正常使用内网服务了。至于VPN服务的部署有很多种方式,可以使用专门的VPN服务器,在防火墙开放VPN服务相关的几个端口;也可使用自带VPN服务的防火墙,如fortigate 1000A。
篇3:基于协同过滤的学习资源推荐平台的设计与实现
关键词:链式存储结构,协同过滤,兴趣模型,个性化推荐
1 协同过滤推荐算法
面对海量的数据信息,个性化推荐已成为用户在互联网中获取感兴趣内容的一种重要途径。通常,个性化推荐首先需从已知的用户行为中获得用户兴趣模型,然后预测用户可能感兴趣的其它行为,最后向用户提供推荐。协同过滤推荐是个性化推荐中的一种重要方法,它依据用户对项目的评分信息,而不依赖于推荐内容本身,因而对复杂对象的推荐具有重要意义。
传统的协同过滤推荐算法有基于用户(User-based)的协同过滤推荐[1]和基于项目(Item-based)的协同过滤推荐[2]。基于用户的协同过滤推荐算法的主要步骤为:首先,计算用户和用户之间的相似度;其次,利用相似度为目标用户寻找近邻;然后,根据近邻的评分来预测目标用户评分;最后,依据预测评分的高低产生推荐。基于项目的协同过滤推荐算法与之类似,其计算项目与项目之间的相似性,寻找项目近邻,并利用相似项目的评分来预测目标用户评分。从实现角度上看,两者操作步骤相似。
通常,协同过滤推荐的数据集分为训练集和测试集两部分。其中,训练集用来获取用户兴趣模型,测试集用来预测。一般情况下,数据集来自用户的评分行为,经过预处理后按照一定格式生成一个标准数据集。比如MovieLens数据集[3]即采用四元组形式存储用户对电影的评分,四元组的组成元素分别是user_id、item_id,rating和timestamp。MovieLens提供的数据集是常用的推荐算法测试数据集,本文也以此数据集作为数据对象。由于用户对项目的评分常常是稀疏的,比如用户能浏览并评分的商品往往十分有限。因此,在实现算法时要合理地考虑数据存储结构。
2 数据结构设计
在协同过滤推荐算法中需要存储的数据对象包括:从训练集和测试集中读取的用户评分数据、计算得到的用户或项目的相似度数据、向用户产生推荐的预测数据。
2.1 评分数据存储结构
协同过滤推荐中,处理的数据对象是用户对项目的评分。当然,这些数据是经过预处理的,比如去掉无效评分、采用统一的数据格式等。用户评分数据可看成一个评分矩阵,其中,行代表用户,列代表项目,第i行第j列的元素aij代表用户i对项目j的评分。评分数据有两种存储方法,顺序存储或链式存储。若采用顺序的二维数组存储,可以实现对数据元素aij的随机存取。但对数组而言,主要的操作是查找和修改,不易进行插入、删除操作。另外,由于用户对项目的评分是一个稀疏矩阵,最好对数据进行压缩处理。因此,采用十字链表作为数据存储结构不仅可以实现数据压缩,还能利用指针[4]灵活地进行结点的插入、删除操作。基于十字链表[5]存储的数据类型定义如下:
(1)评分结点类型定义:
(2)用户项目类型定义:
(3)U个用户的用户表,I个项目的项目表可定义为:
UIRate User[U],Item[I];
2.2 相似度存储结构
首先,分析用户(或项目)之间的相似度特点。在协同过滤推荐算法中,计算用户(或项目)的相似度有很多方法,方法不同得到的相似度值也不同。常见的相似度计算方法有余弦相似性、调整的余弦相似性和相关相似性。余弦相似性的取值范围为[0,1],调整的余弦相似性和相关相似性的取值范围为[-1,1]。因此,用户(或项目)的相似度值为一个实数,一般定义为float即可。为了满足应用需求,以用户相似度为例,假设用户数量为U,若计算出所有用户之间的相似度,则相似度矩阵大小为U*U。然而,不是每个用户之间都能计算出相似度值,若两个用户之间没有共同评分项目,无论采用以上哪一种相似度计算方法都无法计算。因此,用户相似度矩阵也可能是稀疏的。更重要的是,为了能依据相似度快速地查找到用户(或项目)的近邻,最好为每个用户(或项目)建立一个相似度表,并按相似度值从大到小降序排列。可采用类似图的邻接表的存储方式,为每一个用户(或项目)建立一个链表,链表中的结点包含近邻用户(或项目)号id、相似度值data以及指向下一个结点的指针next。其中,结点按相似度值降序排列。
(1)用户(或项目)相似度结点定义如下:
(2)用户或项目相似度表定义如下:
(3)U个用户,I个项目的相似度表定义为:
List UserSim[U],ItemSim[I];
2.3 用户推荐存储结构
为了实现推荐,需生成一个用户推荐表,推荐表中包含向用户推荐的项目以及对该项目的预测评分。同样,为方便查找,在存储时最好也按预测评分的高低排序。因此,推荐表的存储方式可以和相似度表相同,都为List类型。其中,每个用户有一个按预测评分降序排列的推荐链表,链表结点包含项目号id、预测评分值data以及指向下一个结点的指针next,结点类型与相似度结点类型相同,为Node类型。另外,推荐表中的用户和对应的项目信息来自于测试集中的数据,因此还需一个测试表来存储从测试集中读取的用户和待测项目信息。由于测试表存储的数据是产生推荐表时要读取的内容,因此测试表也定义为List类型。U个用户的推荐表和测试表可定义为:
List PreRem[U],TestRem[U];
2.4 协同过滤推荐类型定义
为实现协同过滤推荐,需要包含的数据信息有:用户数、项目数、记录数、用户表、项目表、用户或项目相似度表、测试表和推荐表。因此,定义协同过滤推荐类型CFR如下:
3 算法设计
协同过滤推荐算法3个主要步骤分别是计算相似度、寻找近邻和预测评分。获取用户近邻的方法有多种[6],如基于前k个近邻的计算方法、基于阈值的计算方法等。
在分析协同过滤推荐的数据特点并确定相应的链式存储结构后,设计算法详细实现步骤如下:首先,读入已格式化的用户评分训练集,生成以十字链表形式存储的用户项目评分矩阵;然后,利用某种相似度计算方法(如余弦相似性)计算用户(或项目)之间的相似度,为用户(或项目)创建一个按相似度值从高到低排序的最近邻表,以便快速找到与用户(或项目)相似的近邻(如前k个近邻);再次,读入测试集用户数据,创建测试表;最后,预测测试表中用户对项目的评分,并按预测评分的高低生成用户推荐表。算法流程如图1所示。
4 算法实现
在实现中,由于采用链式存储结构,因此多数为基于指针的查找、插入和删除操作。其中,主要操作的算法用C语言描述如下:
(1)CreateCrossLink():创建十字链表。读入用户评分训练集,创建以十字链表形式存储的用户项目评分矩阵。算法描述如下:
(2)InsertNodeDesc():按降序在指定表List中插入一个结点。在指定表L中,以降序方式向L[i]元素所在链表中插入一个Node类型的结点。其中,结点id号为j,值data为val。例如,若List为用户相似度表,则表示在用户i所在的相似度链表中插入一个编号为j(即用户j)且值为val的结点。算法描述如下:
(3)CreateUINeiLink():创建用户或项目的相似度表。相似度计算方法有多种,一般只要两个用户或项目之间有共同评分即可计算出相似度值。这里给出采用余弦相似性计算用户之间相似度的算法,算法描述如下:
由于用户和项目相似度计算方法类似,若计算项目之间的相似度,只需在以上操作中将若干成员变量由用户改为项目即可,如将UserNum改为ItemNum,User[i]改为Item[i],指针p->rownext改为p->colnext等。
(4)CreateRemList():读入测试数据集,创建测试表R.TestRem。读入测试数据集,将所需预测的用户及其对应项目插入到测试列表R.TestRem中。例如,若要向用户i推荐,在R.TestRem[i]中创建一个测试链表,其中结点包含读入的项目号和评分。若未评分,则初始评分值为0。若要检测推荐效果,则在此读入用户的真实评分,可以方便地实现同预测评分的比较。
(5)PreUI_Average():返回用户i对项目j的预测评分。利用用户(或项目)的相似度表R.Sim预测用户i对项目j的评分。在R.Sim[i]的相似度链表中取前n个结点,读取这些结点中的用户评分并进行计算,如求平均值。当然,也可以根据需要采用其它计算方法,只需在取值后的计算部分稍作修改即可。这里给出采用用户前n个最近邻的平均值计算评分的算法。算法描述如下:
(6)PreRemList():生成用户推荐表。调用某种近邻计算方法预测用户评分,然后将预测评分按降序方式插入相应的推荐表R.PreRem中,输出R.RreRem,即可得到用户的推荐项目及其对应的预测评分。这里给出为用户生成推荐表的算法,其中,以用户前n个最近邻对项目的平均评分计算预测评分,即调用PreUI_Average()方法。算法描述如下:
在上述基于链式的存储结构中,用十字链表存储用户项目评分矩阵,以邻接表形式存储用户表、项目表、测试表和推荐表,此存储结构使一系列相关操作的实现和扩展变得相对容易。另外,在用户表和项目表的类型定义中,预留了用户或项目的平均分UIRate.rAvg,可以在需要时计算并存入以便能直接使用,如当采用调整的余弦相似性计算相似度时即可用到。基于链式的存储结构具有插入、删除操作简单灵活的特点,可以很好地适应数据变化。
参考文献
[1]SEHAFER J,KONSTAN J,REDLL J.Recomrnender systems in E-commerce[C].Proc ACM E-Commerce,1999:158-166.
[2]SARWAR B,KARYPIS G,KONSTAN J,et al.Item-based collaborative filtering recommendation algorithms[C].Proc 10th Conf International World Wide Web,2001:285-295.
[3]MovieLens[EB/OL].http://grouplens.org/datasets/.
[4]谭浩强.C语言程序设计[M].第2版.北京:清华大学出版社,1999.
[5]严蔚敏,吴伟民.数据结构(C语言版)[M].北京:清华大学出版社,2007.
篇4:基于协同过滤的学习资源推荐平台的设计与实现
摘要:随着信息技术和互联网的发展,在信息过载的时代,用户面对海量的信息,难以正确选择。协同过滤推荐是个性化推荐中比较成熟的算法,但其稀疏性、冷启动、可扩展性问题仍然存在,尤其是不能应用于分布式推荐。在Hadoop平台上,Mahout实现了分布式基于项目的协同过滤推荐算法,该算法能够有效解决传统算法的海量数据处理的效率问题和可扩展性问题。实验结果表明,Mahout上基于项目的协同过滤推荐算法具有较好的计算高效性和可扩展性。
关键词:分布式协同过滤;Mahout;推荐系统
中图分类号:TP391 文献标识码:A
1引言
互联网和电子商务系统的兴起与发展,将人们带入了网络经济发展时代,同时网络中的信息量也在爆炸式地增长。网络信息虽然给人们带来了更多的选择,但数量庞大及自身质量差异,越来越呈现一种信息过载的趋势,使得如何从这些海量信息中识别出真正有价值的信息变得越来越困难。然而,推荐系统的出现改变了这一状况,尤其是个性化推荐服务技术的发展,成为解决信息过载问题最有效的工具,它能够收集和分析用户的信息,主动地推荐用户可能感兴趣的信息。
个性化推荐中的协同过滤推荐是比较成功的一种,它的概念是由Goldberg、Nicols、Oki以及Terry在1992年首次提出的,主要思想是,利用已有用户群过去的行为或意见预测当前用户最可能喜欢哪些东西或对哪些东西感兴趣。不到两年,Grouplens系统展示了协同过滤方法既能跨网计算又能自动完成,该系统是基于用户评分的自动化协同过滤推荐系统,用于推荐电影和新闻。麻省理工学院的Ringo系统针对音乐唱片和艺术家进行推荐。虽然传统的协同过滤推荐算法在信息过滤方面呈现出了极大的优势,但随着信息量的增加,算法在不同领域的应用中出现了很多的问题,包括稀疏性问题、冷启动问题、可扩展性问题。
为了解决这些问题,文献基于动态规划思想,根据用户以及产品的相似性,自适应地选择预测目标的近邻对象作为推荐群,同时计算把握率较高的信任子群,提出了一种不确定近邻的协同过滤推荐算法,来对预测结果进行平衡的推荐,有效缓解了用户评分数据稀疏的情况。文献在基于弱关系的微博类社交网络中,提出两阶段聚类的推荐算法GCCR,将图摘要方法和基于内容相似度的算法相结合,实现基于用户兴趣的主题推荐,有效缓解了矩阵稀疏性和冷启动问题。文献采用传播的思想,提出了一种改进的基于内存的协同过滤推荐算法SPCF,该算法通过相似度传播,寻找到更多,更可靠的邻居,从用户和项目两方面信息考虑对用户进行推荐,缓解了数据稀疏性问题。
传统的协同过滤推荐算法虽然从一定程度上减少了矩阵稀疏和冷启动问题,但随着数据规模的不断扩大,可扩展性方面仍然表现的比较差,无法适应海量数据的处理,尤其是无法应用于分布式平台。为此,国内外研究者进行了一系列的研究,这些研究大多是针对Hadoop平台和MapReduce并行编程模型,提出相关的分布式协同过滤算法。文献提出了MapReduce范式可扩展的基于相似性的邻居算法,该算法中,针对分割数据设计出运行在并行处理平台上的基本比较对,并采用降低采用率的interaction-cut技术,处理“超级用户”的计算开销,有效地解决了用户或项目大规模增长的情况下扩展性和产生推荐的速度问题。文献针对基于User-based的协同过滤算法的伸缩性问题,实现了基于Hadoop平台的User-based协同过滤算法,从而实现了算法的线性伸缩。文献提出了Hadoop平台上扩展的Item-based协同过滤推荐算法,将单机上基于项目的协同过滤算法的三个最密集的计算分割为四个MapReduce阶段,有效地解决了文献提出的算法的扩展性和效率问题,但是MapReduce阶段的项目相似度计算要求两个项目在同一节点机器上,并且要求用户数量远大于项目数量,对于项目不断增长的情况下,会增加算法的计算量。
本文所要介绍的就是Mahout在Hadoop框架下基于项目的协同过滤推荐算法的实现,该算法是基于MapReduce并行编程模型,不仅有效地解决了在海量数据下算法处理的效率问题,而且解决了随着大量用户和项目的增加产生的可扩展性问题。
2协同过滤推荐算法
协同过滤推荐算法主要包括基于用户和项目的推荐,其中基于项目的协同过滤推荐算法是目前业界应用最多的算法,所以本节内容以基于项目的协同过滤推荐算法为介绍对象,它主要分析用户的行为记录来计算项目之问的相似度。推荐系统首先建立基于项目的数据模型,然后针对目标项目计算项目与项目之间的相似性,得到目标项目的若干最近邻,最后根据最近邻来预测用户对项目的评分,产生对应的推荐列表。
2.1相似性度量方法
相似性度量方法是计算用户或项目问的相似性计算,本节内容是以项目之问的相似的研究为例,即基于项目的协同过滤算法。基于项目i和项目j通常有3种相似性度量方法:标准的余弦相似性(式(1))、修正的余弦相似性(式(2))、相关相似性(式(3))。其中,Ru,i表示用户u对项目i的评分,Ri和Rj分别表示项目i和项目j上所有用户的平均评分,Uij为项目i和项目j共同评分的用户集合,Ui和Uj分别为项目i和项目j评分的用户集合。
2.2产生推荐
基于项目i的k个最近邻居,采用基于项目均值的加权平均值Pu,i,来预测用户u对其未评分或浏览项目的评分。
其中,kNNi表示项目i的k最近邻居集合,Ri,Ri分别表示项目i和j上所有用户打分的平均值。
3Mahout中分布式协同过滤推荐算法实现
3.1Hadoop和Mahout开源框架
Hadoop是Apache软件基金会旗下的一个开源分布式计算平台。Hadoop以分布式文件系统HDFS和MapReduce为核心,为用户提供了系统底层细节透明的分布式基础架构。HDFS的高容错性、高伸缩性等优点允许用户将Hadoop部署在低廉的硬件上,形成分布式系统;MapReduce分布式编程模型允许用户在不了解分布式系统底层细节的情况下开发并行应用程序。所以用户可以利用Hadoop轻松地组织计算机资源,从而搭建自己的分布式计算平台,并且可以充分利用集群的计算和存储能力,完成海量数据的处理。
Mahout是2008年作为Apache Lucene的子项目出现的,到2010年4月成为了Apache的顶级开源项目。Apache Mahout的分布式计算的主要目标是建立可伸缩性的机器学习算法,通过Map Reduce模式运行在Hadoop平台上。目前Apache Mahout项目包含聚类、分类、协同过滤推荐、频繁子项挖掘和频繁模式挖掘五个部分。
本文意在结合Hadoop平台和Mahout开源框架,对Mahout中分布式基于项目的协同过滤推荐算法进行分析并通过实验实现其算法。
3.2算法实现
在Mahout中,实现的是基于项目的分布式协同过滤算法,该算法一共包含6个过程,这个6个过程使用了7个Map Reduce的Job任务来进行数据处理。数据流程图如图1所示:
1)用户矩阵
用户矩阵的求解过程,就是针对图1的用户一项目评分矩阵的一个数据抽取过程,把同一个用户评价过的所有项目进行整合,针对每个用户,形成用户分向量itemid:pref,含义为项目ID:用户评价,然后形成每个用户的用户向量,最终形成用户矩阵。Mahout中使用了一个Job任务来进行形成用户向量的数据处理,输出key/value对的格式是
2)项目矩阵
项目矩阵的求解过程和用户矩阵的求解过程很相似,但两者抽取的规则不一样,针对每个项目,形成项目分向量userid:pref。同样在Mahout中也使用了一个Job任务来进行形成项目矩阵的数据处理,输出的key/value对的格式是
3)项目矩阵平方和
在Mahout中使用了一个Job任务来对4.2中的项目矩阵求解平方和,针对每个项目的项目向量,项目矩阵平方和的求解方法为求解项目向量的模的平方。
4)项目相似度矩阵
项目相似度矩阵的求解在Mahout中是由两个Job任务共同处理完成的,第一个Job任务是计算项目与项目之问的相似度,假设有N个项目,首先计算项目1和项目2的相似度,以此类推,最后计算项目1与项目N的相似度,但要注意的是,在计算项目2与项目1的相似度时,因为在计算项目1与其它项目相似度时已经计算过与项目2的相似度了,所以项目2只需计算除项目1以外的与其它项目的相似度。第二个Job任务是续接,所谓续接就是把没有计算相似度的项目加入到其它项目中去,例如在第一个Job任务中,计算项目2与其它项目相似度时是没有计算与项目1的相似度,所以必须将项目1与项目2的相似度续接到项目2中,最后输出形成项目相似度矩阵表。项目相似度的计算公式如下:
其中,i1,i2分别代表项目1和项目2,U代表两个项目共同有过平方的用户集,Pui1,代表用户u对项目1的评分,Pui2代表用户u对项目2的评分,Sim代表的是两个项目的相似度,squssub>i1是对应的项目1的平方和。
5)用户一项目相似度矩阵
用户一项目相似度矩阵是结合用户矩阵和项目相似度矩阵,为每一个用户生成用户一项目向量,Mahout使用了一个Job任务来对这些矩阵进行处理,输出key/value对的格式为
6)用户推荐矩阵
用户推荐矩阵是由Mahout中的一个Job任务根据用户一项目相似度矩阵计算产生的,推荐矩阵中为每一个用户产生一个推荐向量,推荐向量由多个推荐项目及其预测评分组成,计算公式如下:
其中,simiIm是用户U1针对项目Im的相似度矩阵,M为用户评价过的项目集,prefIm是用户U1针对项目Im的评分,公式(7)只是求用户U1的推荐向量,然而,可以用公式(7)为所有用户求得推荐矩阵。
4实验结果及其分析
4.1实验配置和数据集
经分析,在小数据集条件下通过伪分布式模式或小集群的Hadoop分布式模式调试的工程,可以胜任完全分布式模式下的大数据集分布式计算的任务。本实验在一台台式机上建立三台虚拟机,并通过这三台虚拟机建立3个节点的Hadoop集群,其中包括1个Master节点,2个Slave节点,台式机具体配置信息如下:Intel(R)Pentium(R)CPUG2030@3.00GHz,6GRAM,80G硬盘。虚拟机操作系统为Ubuntu12.04,Hadoop版本为1.1.2,Mahout版本为Mahout-0.8。在我们的实验中,将每个Slave节点的map和reduce任务支持的最大数都设置为4,由于map和reduce任务不是同时执行,所以整个集群可以支持8个map和8个reduce任务,实验中将这些map和reduce任务视为计算节点数。
本实验采用MovieLens数据集(http://grou-plens.org/datasets/movielens)。MovieLens是一个基于Web的研究型推荐系统,用于接收用户对电影的评分并提供相应的电影推荐列表。我们选取的数据集包含6040个用户对3952部电影上的1000209条评分记录,其中,每个用户至少对20部电影进行了评分。另外,引入了稀疏等级的概念,其定义为用户评分数据矩阵中未评分条目所占的百分比,实验数据集的稀疏等级为1-1000209/(6040*3952)-0.9581。
4.2性能评估
首先,在相同的数据集上针对不同等级的用户数量,比较单机和分布式的基于项目协同过滤推荐算法的推荐时间,并评估算法效率;然后利用分布式的推荐算法的加速比,随着计算节点数的增加,评估固定数据规模下算法运行的性能变化情况,并验证算法的可扩展性。
1)推荐算法时间比较
本实验的MovieLens数据有1000209条用户评分记录,为了方便观察单机与分布式推荐时问的比较结果,将数据分为7个等级,如表1所示,数据等级分别选取500、1000、2000、3000、4000、5000、6000、6040个用户。实验就是分别对这7个等级的用户的评分记录数量进行处理,为所有用户推荐至多3个项目,然后比较不同条件下的推荐时问,如图2所示:
其中,横坐标表示为用户数量,纵坐标表示为对应不同用户数量推荐项目的推荐时间,以分钟为单位。从图2中可以看出,针对单机和两节点的推荐时间比较接近,这是因为在两节点的Hadoop集群环境下,只有一个主节点和一个从节点,节点之间除了必要的数据处理任务外,还要调度集群资源,以便合理的安排任务。三节点的集群整体的推荐时间要优于前两者,推荐项目时能节省很多的时间,可以得知,集群规模越大,计算的时间越少,对于单机需要几个小时才能处理的数据,如果集群规模有上百台,那么只需要几分钟就能够将数据处理完,这说明集群更适合处理海量的数据,并且效率更高。
2)加速比
加速比性能分析的计算公式如(8)所示。其中T1代表的是单个计算节点并行执行算法的总时间,Tp代表的是包含p个计算节点并行执行算法的总时间。如果算法是可扩展的,那么当数据规模固定时,加速比与计算节点的增加将呈现线性关系。本实验将数据集按评分记录数分成三个等级,分别为10000、100000、1000209,实验结果如图3所示:
可以看出,三个等级数据规模的加速比与计算节点数的增加近似呈线性关系,而且当数据规模增加时,加速比更大。由此可以得出,Mahout上分布式的基于项目的协同过滤算法在处理更大规模的数据时算法的加速比表现的更好,有效地解决了算法的可扩展性问题。
5总结
篇5:基于协同过滤的学习资源推荐平台的设计与实现
关键词:Apache Spark,协同过滤,推荐系统
0引言
协同过滤推荐在信息过滤和信息系统中正迅速成为一项很受欢迎的技术。与传统的基于内容过滤进行推荐不同,协同过滤分析用户兴趣,在用户群中找到指定用户的相似(兴趣)用户,综合这些 相似用户 对某一信 息的评价,形成系统对该用户的喜好程度预测。
Spark[1]是一个通用的并行计算框架,由UCBerkeley的AMP实验室开发,是MapReduce模型的实现之一,它提供的框架自动执行任务分解、发送、执行、归并、容错工作,免去了二次开发 和定制专 用的分布 式调度系 统。和Hadoop一样,建立在HDFS基础上,但它的Job中间输出和结果可保存在内存中,减少了硬盘I/O次数,因而可以有较高的速度,对迭代和多步骤运算有更好的支持能力。鉴于此,很多机器学习相关工作者都在研究和使用它。本文在学习Spark基础上,搭建了一个Spark平台,并在其上设计实现了一个协同过滤系统。
1协同过滤算法设计
协同过滤系统一般分为基于用户的协同过滤、基于项目的协同过滤和基于模型的协同过滤[2]。基于用户的协同过滤假设:对同样的项目,如果用户间的评分结果较为相似,则他们对其它项目的评分也比较相似。此假设弊端是运算量随用户量和项目数量的增长而急剧增长。基于项目的协同过滤系统则通过计算基本稳定的项目间相似性作出推荐,意味着用 户的偏好 由系统中 的项目唯 一确定,因而有更好的可扩展性。
在一个典型的协同过滤场景中,有n个项目Ι = {i1,i2,…,in}和k个用户U = {u1,u2,...,uk},令Mk*n为基本用户对各项目的偏好矩阵。其中,Mu,i表示用户u对项目i的偏好,如评分,其值为实数或空,空表示当前用户尚未对项目作出评价。推荐系统的任务就是根据目标用户u∈U的评分历史,预测出用户最喜欢的项目。本文采用基于项目的协同过滤算法,使用余弦相似性计算项目间相似性,然后采用加权平均值的方法为用户生成推荐结果。
1.1相似性度量方法
本文主要采用余弦相似性度量方法[2]计算用户间、项目间的相似性,这里以计算用户间相似性为例,其计算方法可表示为:
其中,Cux,uy表示用户ux和uy共同评价过的项目i∈Ι的集,rux,i表示用户ux对项目i的评分,ruy,i表示用户uy对项目i的评分。相似性即两向量ux,uy的夹角余弦值,因为用户评分均为正数,故相似性取值范围为[0,1]。
1.2加权平均值
在协同过滤算法中,计算出所有用户间的相似度后,就可以采用一种方法为给定的用户u∈U ,预测出用户对所有尚未评价项目的评分。这里介绍一种最为简单、常用并且效果良好的方法:加权求和,表示为:
其中,Nux表示用户ux的邻居,sim(ux,uy)表示用户ux 和uy的相似度。
2推荐系统部署与设计
由于推荐系统的高度计算密集性,将推荐系统部署到单台机器上会有很大的限制,例如,CPU运算速度、内存大小和硬盘I/O能力等,更为重要的是如果此计算机发生故障,将面临数据丢失的风险。使用分布式计算环境可以大大缓解此类问题,如可在分布式运算框架Hadoop/MapReduce下实现推荐系统[4,5,6]。Spark是一个开源的Hadoop/MapReduce并行计算框架,本文在Spark平台上构建一个协同过滤系统。
2.1软硬件配置
实验平台硬件采用IntelCorei5双核的普通PC,网络带宽为100Mbps,为提高虚 拟机I/O速度,采用1条4G和1条8GDRR1333内存条,并搭载128GSanDisk固态硬盘。主机采用Windows8.1x64位系统,虚拟机采用开源的OracleVMVirtualBox4.3,虚拟主机系统采用开源的Linux/CentOS6.5,具体如表1所示。
2.2网络规划
在VirtualBox中建立Host-Only网络,虚拟主机规划如下:(master/worker,169.254.80.3);(Worker1,169.254.80.4);(Worker2,169.254.80.5)。
2.3SSH通信配置
SSH通信协议(SecureShell)[7]是集群中各个节点通信所采用的协议,主节点可以通过SSH启动或关闭集群中节点。在配置SSH之前,需要保证各节点能相互通信。在各节点的终端中通过ssh-keygen命令生成公私钥,将各节点的公钥内容写入authorized_keys文件中,并发布到各节点的~${USER}/.ssh目录下,权限为600。
2.4Java环境安装
从官网下载安装包文件,使用rpm-ijdk.rpm命令安装,之后编辑 ~user/.bash_profile文件,添加JAVA_HOME环境变量为jdk安装目录,添加$JAVA_HOME/bin到Path变量。
2.5Spark安装配置
首先需要配置Hadoop。从官网下载合适版本的Hadoop,安装后修 改配置文 件:conf/core-site.xml,conf/hdfs-site.xml,conf/yarn-site.xml和conf/mapred-site.xml,并添加对应的环境变 量,具体参考 官网对应 版本配置介绍。然后从官网下载Hadoop版本编译过的Spark程序并安装。配置Spark最为简单的方式就是以独立方式部署。成功部署并启动后,Spark会运行master服务器和worker服务器,注意:所有节点必须从master节点启动。然后将worker节点信息 添加到master节点中的conf/slaves文件中,具体请参考官网文档。本文中配置如下:
3实验结果分析
3.1性能评估
为了验证基于Spark分布式平台对协同过滤推荐引擎的执行性能,我们从单节点到多节点进行实验。实验数据由10W用户和3900个商品构成的69W条记录构 成,使用随机抽样将数据分为测试数据和训练数据两部分,比例为1∶9。采用Top20方法实验,最近邻居 个数为50个。
图1显示执行时间开始随节点增加而减少,但是当节点增加为3个时,加速效果则不明显。我们认为是CPU瓶颈,因所采用CPU为双核酷睿i5型号;另外,根据Amdahl定律,并行化的程序所获得的加速比,与程序中可并行执行代码所占比例有直接关系,所以加速效果并不是线性增长的。
3.2推荐质量评估
推荐质量评估一 般采用平 均绝对误 差MAE(meanabsoluteerror)方法,MAE越小则推荐质量越高[8],MAE计算公式可表示为:
其中,N表示总推荐个数,Ra,i表示用户a对项目i的实际评分,Pa,i表示系统预测用户a对项目i的评分。
采用余弦相似度方 法,通过修改 不同个数 的最近邻居,得出相应的MAE,结果如图2所示。
从图2可以看出,MAE整体随邻居个数增加而降低,但其下降速度逐渐降低,即过多增加最近邻居个数对推荐质量的提高贡献有限,反而消耗了更多的计算资源,因而需要在计算资源和推荐质量之间取一个折衷值。
4结语
篇6:基于协同过滤的学习资源推荐平台的设计与实现
1 协同过滤推荐技术
协同过滤技术[2]出现于20世纪70年代,到90年代形成较为成熟的理论框架。协同过滤技术是通过分析用户兴趣,在用户群中找到指定用户的相似用户,综合这些相似用户对某一信息的评价,形成系统对该指定用户对此信息的喜好程度的预测的一项技术。协同过滤的基本假设是如果用户x和y对n个项目的评价或行为是相似的,那么他们对其他项目所持有的观点也是相似的,即行为相似的用户兴趣也可能相似。
基于协同过滤的推荐方法是推荐系统中最基本的、也是使用最广泛的,其核心思想是利用其它用户的行为来给当前用户进行信息推荐。一般分为两大类:一类是基于用户的协同过滤推荐算法;一类是基于物品的协同过滤推荐算法。
2 学习资源系统的设计
该系统使用Visual studio 2008+SQL server 2005开发,从用户的角度可以分为管理员、注册登陆用户和普通游客这三类。其中管理员登陆系统后可以对系统的文本和视频资源进行编辑、删除和添加操作。注册登陆用户,在登陆系统后可以浏览系统提供的文本和视频资源,并可以对浏览的资源进行评分。同时系统通过设计好的推荐算法给该用户推荐他感兴趣的资源。为了解决协同过滤算法存在的冷启动问题[3],即在系统运行初期没有大量的用户行为数据,协同推荐算法就很难给出精确的、令人满意的推荐的缺点,系统会在用户登陆后给该用户提供最新发布的资源列表、近期用户评分最高的资源列表,供浏览者快速、方便的了解最新信息。普通游客在浏览系统时也可以查看系统提供的文本和视频资源,同时系统也会给该用户提供最新发布的资源列表、近期用户评分最高的资源列表,供浏览者快速、方便的了解最新信息。网站的功能结构如图1所示。
系统采用的是基于用户的协同过滤算法,也就是根据用户对学习资源的评分找到相似的邻居用户,然后将邻居用户喜欢的学习资源推荐给当前用户。其中就是将一个用户对所有学习资源的打分作为一个向量来计算用户之间的相似度。找到K个邻居后,根据邻居的相似度,计算得到一个学习资源列表作为推荐,该推荐列表能够尽量满足用户的兴趣和需求。算法过程如下:
步骤1:根据目标用户的id求出目标用户的评分向量Targetuser和目标用户向量的模Target VecterNorm;如果目标用户没有对该项目评分则对应的Targetuser的值为0,否则为评分的值;目标用户向量的模Target Vecter Norm是目标用户每一项评分的平方和的评分根。
步骤2:如果目标用户向量的模Target Vecter Norm的值为零则算法结束;
步骤3:如果目标用户向量的模Target Vecter Norm的值不为零,则求出相似用户。首先判断其他用户于目标用户是否有共同的评分项目。如果没有则相似度similarityvalue的值为0,否则相似度similarityvalue为目标用户和该用户共同评分项的评分积的和除以目标目标用户向量的模Target Vecter Norm与该用户向量的模Other Vecter Norm的积。
步骤4:选取相似度最高的10个用户nearestNeighbor,对目标用户没有评过分的项目进行预测评分。首先求出目标用户的平均评分target Average和邻居用户的平均评分neighbor Average。然后逐个判断相似用户有没有对该资源评过分,如果评过则分子molecules等于邻居该资源评分与邻居的平均评分的差乘以邻居的相似度的积;如果没有评过则分子molecules等于0与邻居的平均评分的差乘以邻居的相似度的积。该资源的预测评分prediction为目标用户的平均评分与molecules的和除以10个邻居相似度的和。
步骤5:根据预测的分数,得到一个学习资源列表recommendation作为推荐。
3 推荐结果与分析
系统设计的过程中采用了51个资源项目、39个用户、101条评价;设置最近邻居nearest Neighbor数组的长度为5,对应的相似度similarityvalue数组的长度也为5;推荐的资源列表rec数组长度为8;采用用户ID为1的用户进行登陆进行实验模拟得到的近邻和相似度的值见表1。
经过统计分析得到这5个近邻和用户1的评分对比图如图2所示,从图中我们可以看到者五个邻居和用户1在资源编号1到10中间有比较多的共同喜好,这也正好验证了算法中的根据所有用户对物品或者信息的偏好,发现与当前用户口味和偏好相似的“邻居”用户群。
依据近邻和相似度,本文的算法运算后得到了用户1的推荐资源列表如下表共8个,见表2。
4 结束语
协同推荐学习资源系统能够根据用户自身的特点进行自动推荐,具有较好的智能效果。但是由于学习者的量和学习资源不够丰富,推荐效果有待进一步优化。
摘要:随着网上学习者的不断增多和网络学习资源的不断丰富,学习者需要系统能够推荐他们感兴趣的资源。通过使用ASP.NET设计开发学习资源网站,研究了协同过滤推荐技术的算法,并实现了基于协同推荐学习资源系统的设计。
关键词:协同推荐,学习资源,算法
参考文献
[1]项亮.推荐系统实践[M].北京:人民邮电出版社,2012.
[2]蒋凡.推荐系统[M].北京:人民邮电出版社,2013.
篇7:基于协同过滤的学习资源推荐平台的设计与实现
经过对许多的企业的e-learning门户系统研究与分析得知,e-learning系统的推送学习资源主要有以下几类方法:(1)Top-N推荐的方法,指向用户推荐点击率最高的前N个资源[1]。点击率只是反映相应学习资源受欢迎的程度,而不能达到个性化推荐的目的。尤其对于一些涉及多种职业的行业的学习资源的管理,用户针对资源的类别和需求是不同的,点击率高的学习资源,只是单纯的反应学习者的要求;(2)关键词查询的方法。该种方法的优点是便捷快速。这种查询的方法只是单纯的达到搜索目的和关键词的默契,不能筛选目标资源的质量,不能达到资源的个性化推荐;(3)最新的资源的推荐。该种方法能会在第一时间向用户反馈资源库里面更新的情况,从而使最新的学习资源得到更多的学习,可是资源的质量不能得到有效保障,不能达到个性化推荐。
2 个性化推荐技术
个性化推荐是推荐系统依据用户的个性化因素,比如爱好、职业、专业等因素,给用户主动的推荐满足用户学习的资源和咨询的一种推荐的技术[2]。再者,通过个性化推荐技术还能很好的让用户之间分享学习经验,更可以给用户推荐相同的用户群喜欢的信息。
2.1 关联规则的推荐方法
该技术的推荐技术的工作原理:开始的时候需要管理员制作一系列规则的条目,接着依据指定的规则来分析项目之间的联系,并且把关联紧密的项目给用户推荐。并且在推荐的时候,系统合理的分析用户目前的喜好和访问的记录,之后根据已制定的规则,推荐给用户想要的资源。比如,若用户正在学习网页设计技术,则在他学习视频ASP网页设计的资源过程中,系统就会将和HTML技术有关的学习资源推荐给他。主要原因是:HTML技术是网页制作的基础知识,学习的人还没掌握,或者还有想继续学的乐趣。
2.2 内容过滤推荐
内容推荐作用机理:以机器学习与概率统计等技术为基础,来实现过滤,最初选用客户的兴趣向量来代表用户的信息需求;而后,筛选文本集内的文本,主要采用词频统计加权、标引、分词等方式,与此同时,得到一个文本向量;最终,对文本向量与用户向量进行计算,确定其相似度,并向这个用户模型的注册的用户推荐相似度高的资源。
2.3 协同过滤推荐
不同与以上两类推荐技术,协同过滤推荐是基于对资源内容的分析、资源和用户的匹配度的计算,来产生用户推荐的,此外,资源推荐的凭据就是用户对资源的评分。其工作原理:开始的时候就是分析用户的特点,比如:职业、兴趣等;之后采用相似性算法对用户之间的相似性进行计算,并找出和目标性相似度高的K个用户;最终,以邻居用户对资源的评分为依据,来对目标用户评分进行预测,再向目标用户推荐预测评分最高的几个资源[3]。
3 协同过滤推荐技术
协同过滤推荐系统采用统计技术,对目标用户进行搜索,获取多个最近邻,而后,以最近邻对项目的评分为依据,来对目标用户的评分进行预测,并得到相对应的推荐的列表。实现协同过滤推荐的流程分为以下三步:
首先,获得用户信息,并将其表示出来。用户的数据可分为用户的注册的信息、学习的数据与行为记录三类。通常情况下,推荐系统采用评分的方式,来获取用户的行为数据。
然后,形成邻居。协同过滤技术的最主要的环节就是寻找和目标用户相同或相似兴趣的用户群。通过采用传统的余弦相似性计算方法,寻找相似度高的用户。
最后,产生推荐。协同过滤最后的步骤就是产生推荐。产生推荐的主要依据是邻居集对资源的评分,以此评分对目标用户学习资源的评分进行预测,最终向用户产生推荐。
4 协同过滤推荐技术存在的不足及措施
存在的不足:(1)数据稀疏。由于数据稀疏,系统无法产生有效的邻居用户集,且计算用户间的相似时,将消耗较长的时间,最终不能产生较好的推荐结果;(2)“冷启动”问题。一方面,若用户是新注册的,则系统没有相关的数据记录,系统不能很好的产生推荐,另一方面,新的资源,系统没有匹配的评分记录,无法别推荐,上述情况就造成协同过滤算法的“冷启动”问题。
关于数据稀疏,当前有两种对应措施。第一,缺省值法,即对于用户没有评分的项目,将其评分统一设置成一个固定的缺省值(一般,该固定的缺省值是用户对项目评分的平均值,比如:5分制中的2.5);第二,项目评分的预知的方式。对根据数据相似性,由用户对相似的评分来对未评分项目的评分进行预测,使用户共同评分项目增加,有效解决该问题。
5 结论
借鉴当前电子商务研究领域的许多的研究的结果,我们可以把协同过滤推荐技术应用到学习资源的个性化推荐过程中。本文对协同过滤推荐技术进行研究,希望可以使e-learning相关的人员在搜索过程中更好的利用好协同过滤技术,提升学习资源个性化推荐的效率。
摘要:当前通过调研e-learning发现,e-learning当前的系统应用到学习资源的推荐的活动中只是有Top-N和关键词两种搜索方法,不能向学习者个性的推荐学习资源。借鉴当前电子商务研究领域的许多的研究的结果,我们可以把协同过滤推荐技术应用到学习资源的个性化推荐过程中。我们分析学习资源个性化推荐的经常用的三种推荐的技术,分析出协同过滤推荐技术的工作原理、方法和出现的问题。本文,通过介绍一个优化理论模型,更好的协同过滤技术的学习资源的个性化推荐,注重探讨模型的构成,相应的评分机制与算法的实现,而且分析个性化学习资源推荐模型里面的三种重要的技术。希望可以使e-learning相关的人员在搜索过程中对协同过滤技术进行有效利用,从而使学习资源个性化推荐的效率得到提升。
关键词:e-learning,协同过滤技术,个性化推荐,学习资源
参考文献
[1]杨焱,孙铁利,邱春艳.个性化推荐技术的研究[J].信息工程大学学报,2005,6(02).
[2]赵艳霞.基于关联规则的推荐系统再电子商务中的应用[J].价值工程,2006,25(05):88-91.
相关文章:
幼儿园大班毕业典礼主持稿幼儿(15篇)01-20
基于超星平台大学《计算机应用基础》课程的设计与实践01-20
基于Web方式的教务管理系统设计与开发01-20
最新幼儿园大大班毕业典礼主持稿 幼儿园大班毕业典礼老师主持稿(7篇)01-20
2025年幼儿园毕业班典礼主持稿 幼儿园大班毕业典礼小主持人稿(14篇)01-20
幼儿园大班毕业典礼主持稿幼儿(十四篇)01-20
浅析智能手机游戏的UI设计现状与问题研究01-20