高勇钢
摘要:在高校开设python课程时,为了适应大数据时代对数据分析的要求,采用研究型案例教学方法增强学生计算思维能力和解决复杂专业问题的能力,并且初步掌握了研究具体问题的基本方法。
关键词:Python; 协同过滤; 推荐系统;相似度计算;均方根误差
中图分类号:G642 文献标识码:A
文章编号:1009-3044(2019)10-0097-03
开放科学(资源服务)标识码(OSID):
Application of Research Case in Python Teaching Method
GAO Yong-gang
(School of Computer and Information, Anhui Normal University, Wuhu 241003, China)
Abstract: In order to adapt to the requirements of data analysis in the era of big data, the research-based case teaching method is used to enhance students' ability to calculate thinking and solve complex professional problems, and to master the basic methods of researching specific problems.
Key words: Python; collaborative filtering; recommendation system; similarity computing; RMSE
1 引言
Python由于其简单、易学、面向对象、可扩展性、开源等优点成为最受欢迎的程序设计语言之一,众多科学计算软件包都提供了Python的调用接口,例如OpenCV、VTK、ITK。而Python专用的科学计算扩展库如SciPy、NumPy和matplotlib,它们分别为Python提供了数值运算、快速数组处理以及绘图功能。正是由于Python可扩展性,使得Python有着极其丰富的库进行图形处理、数学处理、文本处理、数据库编程、网络编程、Web编程多媒体应用等。
现在国内外众多高校采用Python为非计算机专业与计算机专业教授程序设计课程。Python是一个生态圈,针对具体专业可适当加强第三方库知识学习与应用。当今已进入大数据时代,数据分析作为一门前沿技术,广泛应用于物联网、移动互联网、云计算等战略新兴产业。Python由于其特点非常适合用于数据分析,因此计算机专业学生在学习Python时都应关注其数据分析的应用。工程教育专业认证标准中要求学生具备能够应用信息技术对复杂工程问题进行预测、模拟和求解的能力,同时要在教学中贯彻计算思维的理念。为了上述目标,在Python教学中不能仅仅讲解基础知识,需引入适当难度的数据分析技术。本文通过引入一个改进的协同推荐算法的研究型案例来促进计算机专业学生学习Python效果。
2用研究型案例增强学生问题求解能力和激发学生兴趣
2.1案例简介
本案例是关于正流行的协同推荐算法。随着互联网技术的快速发展,由此产生的海量信息。为了能从海量信息中找出有价值的信息,信息过滤技术中的推荐技术是其中最重要的手段之一,因此推荐系统由此发展起来[1]。目前主要推荐方法有基于内容推荐,有协同过滤推荐[2]等几种方法。其中协同过滤推荐方法分为基于用户[3,4]和基于项目两种推荐方法[5],这两种方法都要依赖于用户-项目评分矩阵来给出项目推荐列表,但由于网络产生的信息过载,使得用户数和项目数增长很快,随之而来出现了数据稀疏[6]、冷启动[7]和精度上持续下降问题。可采用降维法与缺失值填充[8]等方法能改善和缓解数据稀疏问题。降维法主要包括主成分分析法和矩阵奇异值分解法,降维法计算量大,在实际应用中操作性不高。缺失值填充法对缺失的用户项目评分矩阵的项目用相关值填充,从而增加评价矩阵的密度。针对填充项的选择,文中改进的协同过滤算法采用了将属于目标用户的近邻用户所有评分均值与对该评分项目的所有真实评分均值结合起来最终计算出目标用户对该项目的预估评分。改进算法相比较其他几种经典算法在MovieLens 上的实验结果分析表明能进一步提高推荐效果。
2.2协同过滤算法介绍
(1) 预测评分步骤
基于用户协同过滤推荐方法可分为如下四个步骤:1) 选择计算用户之间相似度的方法; 2)根据用户评分的数据集计算每个用户与其他用户的相似度;3)根据用户之间的相似度大小排序来确定每个用户 K 个近邻用户;4) 依据某用户K个最近邻对某项目评分来预测该用户对该项目的评分。
(2)用户相似度的常用计算方法
1) 欧几里得距离
将两个用户对共同項目的评分分别组成一个 n 维特征向量,如果直接求出这两个向量的欧几里得距离,则两个用户越相似则距离越小,但是算法要求两用户越相似则相似度数值越大,因此对初始欧几里得距离加1再求倒数,这样最终将用户相似度距离控制在0到1范围内,所用公式如(1)所示。
在已知某用户的近邻后,则该用户对某项目的评分值由该用户的K个近邻对该项目的评分计算获得。常用公式有(4)式和(5)式,两式中N(u)表示用户u的K个近邻集合。从以上评分预测方法中可以看出预测用户对某项目的评分值是由该用户的近邻对该项目的评分及近邻的相似性决定的。由于项目评分数据的稀疏性,一般某用户的近邻中会存在着许多的未评分项目,则对未评分项目通常用该近邻用户的评分均值填充。
2.3 协同过滤推荐算法的改进
在测试协同过滤算法优劣的实验中,常用的数据集是MovieLens数据集,在对某用户对某电影分值预测时,该用户的近邻中只有极少数对某电影有评分,绝大多数没有评分。大多数用户没有时间看大多数电影并且给予评分,或者看了某部电影无论喜欢与否都不评分。对于没有评论的近邻用户则用该用户的评分均值来表示确实可以提高预测的准确度,但没有考虑到对这部电影真实评分的其他客户,而这些用户对该电影的评分对最终该电影的预测是不可或缺的。
[Vu,i=Ru+v∈N(u)sim(u,v)×(xv,i-Rv)v∈N(u)|sim(u,v)|] (6)
采用改进算法的评分预测的公式如(6)所示,xv,i表示如用户v对i项目评分,如用户v没有对i项目评分则xv,i的值为数据集中所有对项目i的评分的均分。
用户协同过滤推荐算法可分为如下四个步骤:1) 选择修正余弦距离计算用户之间相似度;2)根据用户评分的数据集计算每个用户与其他用户的相似度; 3)根据用户之间的相似度大小排序来确定每个用户 的K 个近邻用户;4) 根据某个用户K个最近邻的评分数据用公式(6)计算预测评分。
2.4 改进算法实验
(1) 选择与采样数据集
實验采用MovieLens数据集,该数据集由美国明尼苏达 GroupLens 研究组提供的。该数据集总共分为 3个不同大小的版本用来记录了用户对电影的评分。其中之一的小版本数据集它包含了943 名用户对 1682部电影评分信息,共有100000 条评分信息,每名用户至少有20 条以上的评分信息,用1 到5评分值代表用户对所看电影的喜好程度。实验中采用MovieLens小版本数据集,将数据集分为训练集与测试集,其中训练集占总数据集的80%,测试集占20%。按照训练集与测试集的比例,随机生成了6组实验数据。由于测试集中可能存在某用户在训练集不存在,则将该用户从测试集中删除,这样可提高预测评分的可靠性。实验中将对每一个算法用6组实验数据测试6次,取6次实验结果的均值。在评分预测中,计算预测准确度般可以用均方根误差( RMSE)和平均绝对误差( MAE)来衡量,由于RMSE 采用了增加对预测不准的用户项目评分值 ,因此对推荐算法要求更严格,所以文中选用 RMSE 作为评测指标。
(2) 实验结果及分析
实验根据三种常用不同相似度计算方法,以及基于均值还是双重均值的不同共形成6种算法分别进行实验。表1是采用欧几里得距离计算用户之间相似度,基于均值与双重均值分组实验数据求均值后RMSE对比所示,图1是表1的直方图显示;表2是采用皮尔逊距离计算用户之间相似度,基于均值与双重均值分组实验数据求均值后RMSE对比所示,图2是表2的直方图显示;表3是采用修正余弦距离计算用户之间相似度,基于均值与双重均值分组实验数据求均值后RMSE对比所示,图3是表3的直方图显示;表4是采用三种不同距离的双重均值实验数据求均值后RMSE对比所示,图4是表4的直方图显示。由实验数据可见,无论采用何种距离计算用户相似度,采用改进算法都能使RMSE更小,且采用修正余弦的改进算法优于其他两种距离改进算法。
针对用户评分数据集中稀疏性,常用近邻用户评分均值填充,该方法确实可以有效提高推荐系统的RMSE。但实际某用户对某个项目的预测评分结果不仅与近邻用户对该项目的评分有关,也与近邻用户的评分均值有关,并且还和该项目的所有用户评分均值有关。因此文中采用基于这两种均值的协同过滤推荐算法,实验表明可以进一步提高RMSE。
3 结束语
推荐算法是常用的大数据分析,通过改进的协同推荐算法案例,既可以让学生了解常用的推荐算法,同时又能分析不同推荐算法优点和缺点,并提出一种改进的推荐算法且通过实验证明更好,所有实验中涉及的程序都用Python实现。因此该案例可以增强学生用Python分析数据的能力,并且可以增强解决复杂工程能力和计算思维能力。
参考文献:
[1]许海玲,吴潇,李晓东,等. 互联网推荐系统比较研究[J].软件学报, 2009,20(2):350-362.
[2]Goldberg D, Nichols D, Oki B M, et al. Using Collaborative Filtering to Weave an Information Tapestry[J]. Communications of the ACM,1992,35(12):61-70.
[3] 马婉贞,钱育蓉. 基于标签匹配的协同过滤推荐算法研究[J].计算机研究与发展,2017,27(7):25-28.
[4] 兰艳,曹芳芳.面向电影推荐的时间加权协同过滤算法的研究[J].计算机科学,2017,44(4):295-301.
[5]Deshpande M,Karypis G. Item-based top-n recommendation algorithms[J]. ACM Transactions on Information Systems, 2004,22(1):143-177.
[6] 云祥富.面向稀疏性数据的协同过滤推荐算法的研究[D]. 长春:吉林大学, 2017.
[7] 于洪, 李俊华. 一种解决新项目冷启动问题的推荐算法[J]. 软件学报, 2015,26(6):1395-1408.
[8] 蒋宗礼, 王威, 陆晨. 基于均值预估的协同过滤推荐算法改进[J]. 计算机研究与发展,2017,27(5):1-5.
【通联编辑:王力】