数据挖掘实践课程教学模式的探索
2020-10-09李艳玲
[摘 要] 数据挖掘实践课程作为数据挖掘理论课之后开设的一门实践课,对学生动手能力的培养、编程思维的养成、算法的理解等具有重要的支撑作用。而在教学过程中,如何充分发挥学生的主观能动性,让学生的能力得到全方位锻炼,是任课教师需要认真思考的问题。以内蒙古师范大学的数据挖掘实践课程为例,阐述课程教学过程中教学改革的方法和举措,为相关课程的任课教师提供参考和借鉴。
[关键词] 数据挖掘实践;课程衔接;监督与考核
[基金项目] 2016年度国家自然科学基金项目“面向中文口语理解的非参数贝叶斯分析方法的研究和应用”(61562068)
[作者简介] 李艳玲(1978—),女,博士,副教授,硕士生导师,研究领域为自然语言处理、口语理解、机器学习等。
[中图分类号] G642 [文献标识码] A [文章编号] 1674-9324(2020)36-0153-03 [收稿日期] 2020-02-24
一、引言
数据挖掘课程作为计算机以及相关专业的核心课程受到了广大师生的重视。各个高校开设的数据挖掘理论课和实验(实践)课程的教学内容以及考核评价形式有所不同。刘波等人[1]对数据挖掘课程的实践教学给出了完整的教学内容以及详细的评价考核方式,并在教学中获得较好的效果。关鹏等人[2]探索了统计学专业的数据挖掘课程实验教学模式,以R语言进行数据挖掘实验,通过项目式学习提升学生分析问题和解决问题的能力。黄浩等人[3]提出在数据挖掘课程中通过案例贯穿教学和能力拓展比赛等教学方法提升学生的数据挖掘实践和创新能力。尽管一线教师在教学过程中对数据挖掘实践课进行了某些探索和改进,但是仍存在一些问题。
本文对数据挖掘课程教学存在的问题进行梳理,有针对性地提出了以下教学改革方法:①注重前导课、理论课和实践课的衔接;②加强过程中的监督和考核;③实践内容抓重点算法,切忌面面俱到。通过以上方法可以有效促进课程平稳过渡,全面提升学生的自信心、主动性以及动手能力。
二、数据挖掘实践课程的教学模式
数据挖掘实践课程有两大难点,一是数据挖掘课程本身难度较大,这门课涉及较多的数学和算法,而且相对枯燥,原来只有研究生才学习的课程现在给本科生开设,可以想象其难度;二是实践课程需要编程语言来实现,对于大三的學生而言,他们仅仅掌握了编程语言的基本语法,综合实践能力还比较欠缺,现在要对高难度算法进行实现,更可谓难上加难。
笔者以2019—2020学年第一学期所教授的课程为例,教学计划为数据挖掘48学时,实践课程32学时,分别是一周4节课,理论课程12周,实践课程8周。实践课比理论课滞后4周。对于计算机及相关专业来说,实践课主要通过Python语言进行编写。
(一)注重前导课、理论课和实践课的衔接
如果让学生顺利进入实践课的角色,需要做好两个衔接,即编程语言基础与实际应用的衔接和理论算法与编程实现的衔接。
1.编程语言基础与实际应用的衔接。对于第一种衔接,本实践课采取的办法是增加了两个数据处理题目作为过渡。数据处理能力是从事机器学习和数据挖掘相关工作的基本功,是实现算法编程之前需要掌握的技能。两个数据处理题目及要求如下。
(1)用python处理文本数据。数据来自2015年第十五届中国机器学习会议的评测数据,为文本数据,任务是根据给定的新闻标题、两个人名以及关系类型,确认两个人物关系是否属于给定关系类型。要求:第一步从训练集数据中提取前五列;第二步在第一步得到数据的基础上根据类别出现的顺序对19类关系数据进行归类,分别存储到train文件夹下以1.txt到19.txt命名的文件中;第三步按照训练集19个类别的顺序将测试集数据归类,即相同关系类型的数据放到一个文本文件中,同样生成19个类别的测试文件,保存到test文件夹下,文件命名和训练数据一样,但是关系类型必须保持一致;第四步对每条数据在原测试集中出现的位置进行记录,和19个测试文件一一对应起来,比如第一类“传闻不和”的每个样本在原文中处于第几行,在索引文件中进行记录,保存在文件index1.txt,index2.txt….
(2)用python处理数值型数据。数据来自2016年中国高校第一届大数据挑战赛的数据,任务是通过给定的历史数据预测未来两个月歌曲的播放量。要求:第一步对歌曲艺人数据表进行处理,统计出艺人的个数以及每个艺人的歌曲数量。输出文件命名为xp2_1.csv,格式第一列是艺人的ID,第二列是该艺人的歌曲数目,最后一行输出艺人的个数;第二步将用户行为表和歌曲艺人表以歌曲song_id作为关联,合并为一个大表,各列名称为第一到第五列与用户行为表的列名一致,第六到第十列为歌曲艺人表中的第二列到第六列的列名,输出文件命名为exp2_2.csv;第三步统计每个艺人每天所有歌曲的播放量,输出文件命名为exp2_3.csv,其中各个列名分别为艺人ID,日期Ds,歌曲播放总量。结果文件需要首先对艺人的ID进行排序,然后对日期DS进行排序输出。注意这里只统计歌曲的播放量,不包括下载和收藏的数量。
这两个题目对于仅有python语言基础的初学者还是有难度的,但是只有经过这个过渡阶段,学生才有能力进行后面算法的编程。
2.理论算法与编程实现的衔接。有了前面两个题目做铺垫,接下来稍微容易点,但是有些算法比较复杂,如果让学生自己设计、编写算法的所有部分非常困难。以关联规则算法Apriori为例,这个实践题目要求学生完成两个任务,一是实现Apriori算法;二是利用该算法进行电影推荐。任务一需要扫描事务数据库获取k_项目集进而得到关联规则。算法的难点是需要递归操作,此时笔者采取的方法是将程序模块化,对每个模块(即函数)的功能进行约束,给定输入输出参数和功能描述,引导学生完成每个模块,进而完成整个算法。实际中,设计了7个函数实现Apriori算法[4]。关联规则主要是从事务数据库中挖掘出经常在同一购物篮中出现的商品,严格讲是挖掘出符合一定支持度和置信度的关联规则。这种方法可以应用到电影推荐上,利用用户对已经观看过电影的评分数据对用户进行新电影的推荐。这是对关联规则实际应用的典型案例。通过完成这两个任务,学生既熟悉了算法细节,又了解了算法用途,进而提升了对课程的兴趣度。
(二)加强过程中的监督和考核
当前多数实践课为了增强学生的团队协作能力,采取分小组合作的方式[1],一个小组由多人组成,每人有不同的分工,最后交一份实验报告,任课教师根据报告给小组每个同学打分。但是这种方式会导致部分学生浑水摸鱼,蒙混过关。鉴于此,笔者采取学生单独完成实验并对每个题目进行答辩的方式。每位同学只要完成了一个题目,就可以找老师进行答辩。答辩过程分为学生讲解和教师提问阶段,并且记录答辩分数。教师在学生讲解代码的过程中可以任意打断并提问,主要考查学生的编程思维是否清晰、Python的数据结构使用是否合理和高效、对算法的细节是否掌握等。这种监督和考核机制非常有效,每位学生为了通过答辩会努力完成任务,如果自己无法完成就会求助其他同学。答辩过程中确实存在代码相似的现象,但只要学生对代码做到充分理解,也可以通过答辩。因为对于相对简单的编程题目,能做出新意而且代码简捷是非常不容易的。答辩过程中教师需要把握的一点就是对学生编程思维方式的指导。笔者发现,有些学生总是喜欢用特别复杂的方法解决问题,这时任课教师需要对学生进行及时纠正,指出算法的问题,引导学生思考更加简便的方法。
(三)实践内容抓重点算法,切忌面面俱到
数据挖掘算法一般涉及关联规则、分类算法和聚类算法,而分类算法又包括决策树、支持向量机、朴素贝叶斯等。由于算法本身比较抽象难以理解,全部实现所有的算法不太现实。因此,笔者从设计的8个题目中挑选了其中4个必做的题目:包括上面提到的两个数据处理题目,一个关联规则题目,还有一个是朴素贝叶斯进行文本分类的题目。数据挖掘实践主要是经典算法的实现,这部分以算法细节实现为主,不建议学生调用库函数完成。尽管库函数非常方便,但是学习初期,打下扎实的基本功是非常重要的。
朴素贝叶斯进行文本分类,理论课上介绍了贝叶斯方法的推导过程以及文本分类的流程。这部分理论不是很复杂,但是程序实现时却会遇到各种问题:如停用词如何选择,特征如何选择,特征如何表示,平滑怎么做,如何评价性能等。尽管这仅是个实践题目,但却非常综合,包含了文本处理的每个环节。如果学生把这个题目完整自己做一遍,收获是非常大的。
三、数据挖掘实践课程的教学效果以及后续改进
笔者对实践课进行全程监督和考核,学生们反映本课程增加了数据处理题目,对于温习和熟悉编程语言非常有必要。另外,学生们普遍认为增加答辩环节可以有效促进实践题目的完成率。这种表面上看似学生单独完成编程、缺乏以小组为单位进行协作的方式,恰恰是增加了学生之间的沟通和交流。因为学生们为了实现代码并完全理解透彻,需要互相讨论和学习。
考虑到答辩有先后,笔者为了公平,对每个学生的提问也不尽相同,除了程序中放映出的编程思维和效率问题,还会提问几个开放性的思考题。答辩不仅使学生获得平时成绩,也让他们从老师的提问中获得启示和提升。
尽管经过一个学期的尝试取得了一些效果,但是仍存在一些可以改进的地方。首先,该实践课是第一次进行改革,两个题目的预处理题目根据笔者之前参加比赛时的前期数据处理工作编制而成,学生们无法从网上或者其他渠道获得代码。而接下来第二轮的实践题目,如果继续使用该题目,就存在学生找高年级同学获取代码的可能。采取的办法是发现新的比赛题目和数据进行题目编制,或者继续在原有比赛数据的基础上修改或者增加任务。当然也可以将比赛题目作为一个完整案例。其次,掌握调用库函数完成算法也是学生需要锻炼的技能,可以考虑把本实践题目分成三个阶段,数据处理、不调用库函数完成和调用库函数完成,必做題目扩充到6~8个。数据挖掘实践课应该与时俱进,任课教师应每学期更新实践题目,以激发学生的学习热情和兴趣。最后,该课程也应该做好与后续课程的衔接工作,提前将所需的理论知识或者实践所需知识告知学生,做到课程之间无缝衔接。
四、总结
本文主要探索了数据挖掘实践课程的教学模式,并提出了三点改革方法,实践证明以上方法可以有效促进学生对该课程算法的理解和掌握,规范学生的编程思维和编程习惯。而且这些方法可以推而广之,应用到其他类似的实践课上。
参考文献
[1]刘波,蔡燕斯,钟少丹.大数据背景下数据挖掘课程实践教学的探索[J].高教学刊,2019(18):124-128.
[2]关鹏,钱云,张海永.统计学专业数据挖掘课程实验教学模式探索[J].赤峰学院学报(自然科学版),2018,34(10):167-170.
[3]黄浩,余琍,刘树波.以实践和创新能力培养为导向的数据挖掘课程教学方法研究[J].教育教学论坛,2019,49(12):130-132.
[4]郝志峰.数据科学与数学建模[M].武汉:华中科技大学出版社,2019:71-79.