基于Python的高职院校学习平台数据挖掘研究
2018-12-22宋永生
宋永生
摘要:高职院校学习平台积累了大量的数据,而这些数据没有得到充分有效的利用。Python简洁易用,深受人们喜爱,积累了大量可用于数据挖掘的程序库。利用开源机器学习库Scikit-Learn及开源深度学习库Keras分别对学习平台中的结构化数据和非结构化数据进行挖掘分析,挖掘结果可用于教师改进教学及学生改进学习。
关键词:学习平台;Python;数据挖掘;Scikit-Learn;Keras
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2018)33-0015-03
Abstract: The learning platform in higher vocational colleges has accumulated a large amount of data, which has not been fully and effectively utilized. Python is simple and easy to use. It is loved by many people and has accumulated a lot of program libraries that can be used for data mining. The open source machine learning library Scikit-Learn and open source deep learning library Keras are used to mine and analyze the structured and unstructured data in the learning platform respectively. The data mining results can be used for teachers to improve teaching and students to improve their learning.
Key words: Learning platform; Python; Data mining; Scikit-Learn; Keras
近年來国内很多高职院校上线了在线学习平台,为高职院校教师的教学及学生的学习提供了便利,在线学习平台由此积累了大量的数据。在数据价值日益凸显的今天,高职院校在线学习平台积累的数据并没有得到充分有效的利用。原因主要有以下三个方面:首先,很多高职院校的学习平台是由软件公司开发,教师对学习平台的库结构不清楚,数据挖掘便无从谈起;其次,现有学习平台的设计存在缺陷,没有考虑到后续的数据挖掘,一些关键字段没有存储,从而造成积累的数据无法进行数据挖掘或数据挖掘效果欠佳;再次,很多高职院校缺乏进行数据挖掘的软件及硬件平台。
数据挖掘是从海量数据中抽取前所未知可理解可操作信息的过程,机器学习是常用的数据挖掘手段。Python 是一种面向对象的解释型程序设计语言,由于 Python 简洁易用,可跨平台运行,深受人们喜爱,积累了丰富的开源程序库。机器学习是计算机程序针对某个特定的任务,从经验中学习且越做越好[1],机器学习的应用非常广泛。深度学习是机器学习的一个分支,近年来大放异彩,这主要得益于硬件的发展、互联网产生的大量数据及算法的改进,深度学习在视觉识别、语音识别及自然语言处理等方面都有广泛的运用。
本文将Python中的机器学习库Scikit-Learn及深度学习库Keras分别应用到高职院校学习平台的结构化数据及非结构化数据的挖掘研究中去。在数据挖掘之前,首先要对学习平台的数据要有充分的了解。
1 学习平台的数据
学习平台的数据主要分为存储于数据库中的结构化数据及存储于文件系统中的非结构化数据。学习平台的数据总览如图1所示。
1.1 结构化数据
学习平台数据库中主要有课程信息表、知识点信息表、题目信息表、试卷信息表、考试信息表、学生信息表、教师信息表、日志信息表等。
课程信息表包含课程代码、课程名称、课程简介、课程目录、课程评价、课程评分、授课教师、选修人员、开始时间、结束时间等信息;知识点信息表包含知识点名称、所属课程、视频地址、视频描述、相关附件、学生评价、评分、发布人、发布时间、播放次数等信息;题目信息表包含课程名称、知识点、题型、试题难度、试题分数、试题内容、选项、标准答案、解析、提交人等信息;试卷信息表包含试卷名称、命题人、题量、总分、题目、考试开始时间、考试结束时间、参考人员、阅卷人员等信息;考试信息表包含账号、试卷名称、知识点、考生答案、答题时间、得分等信息;学生信息表包含账号、姓名、性别、年龄、手机号、受教育程度、感兴趣的领域等信息;教师信息表包含账号、姓名、性别、年龄、手机号、研究领域等信息;日志信息表包含账号、访问页面、行为、时间、IP等信息。
1.2 非结构化数据
视频因其图文并茂,生动活泼,深受欢迎,已发展为学习平台最主要的课程载体。单个视频不宜过长,否则学生的注意力无法集中。每段视频一个知识点,以知识点的名称命名,便于查询和学习。短视频也有利于课程的更新,以往课程中某个知识点一旦更新,整长段视频都需要更新。学习平台的文件系统中除短视频外,还包含课程制作过程中上传的各种附件,比如PPT、Word、PDF等文档。
2 数据挖掘的目的和技术路线
学习平台中,同一个班级的所有学生学习相同的课程,没有根据学生的特点提供个性化的学习服务。学习平台数据挖掘的最终目的是根据学生的特点,自动匹配合适的学习资源,提供个性化的学习服务,实现因材施教。首先对学生及其学习信息进行挖掘分析,了解学生的兴趣爱好及以往学习情况,然后对学习资源进行挖掘分析,为学生自动匹配适合自身特点的学习资源,为教师推荐适合其课程的学生。数据挖掘的技术路线如图2所示。
结构化数据是以表格形式组织的数据,列表示不同的特性,行表示不同的样本。对结构化数据进行分类、回归等分析时,常采用机器学习中的决策树等算法,梯度提升决策树算法更是其中的佼佼者。梯度提升决策树算法擅长处理非归一化数据,速度快,常用来进行分类及根据输入预测输出。
深度学习中的卷积神经网络擅长处理图像及声音数据,而循环神经网络擅长处理时间等序列数据。深度学习不仅表现出更好的性能,而且将特征提取完全自动化,省去了传统机器学习中人工提取特征的步骤,让问题变得更加简单。深度学习能够从感知数据提取出人类能够取出的几乎全部信息[2]。
3 相关技术
3.1 Scikit-Learn
Scikit-Learn是用Python开发的开源机器学习库。Scikit-Learn封装了大量的机器学习算法,并内置了大量的数据集,是一种便捷的数据挖掘工具。Scikit-Learn支持分类、回归、降维和聚类四大机器学习算法,包含特征提取、数据处理和模型评估三大模块。Scikit-Learn基于NumPy和Scipy等Python数值计算库,提供了高效的算法实现[1]。Scikit-Learn的文档齐全,算法全面,接口易用。Scikit-Learn提供了对梯度提升决策树算法的支持,但不支持分布式計算、GPU加速及神经网络模型。
3.2 TensorFlow
TensorFlow是最初由Google开发的开源深度学习库。TensorFlow功能强大,执行效率高,可以在CPU、GPU及TPU中执行。TensorFlow具备跨平台能力及分布式计算能力,可以同时在数百台机器上执行训练模型,大幅缩短模型训练时间,并提供Python、C++等多种语言编程接口。TensorFlow提供的是比较底层的深度学习API,所以设计模型时需要自行设计张量乘积、卷积等底层操作,相对麻烦。
3.3 Keras
Keras是用 Python 开发的开源深度学习库,能够以TensorFlow、Theano或CNTK作为后端引擎。Keras简单易用,可以在CPU、GPU上无缝切换运行,利用Keras可以快速开发深度学习模型的原型,支持卷积网络和循环网络以及两者的组合,并能够构建任意深度的学习模型。通常把Keras和TensorFlow结合使用,使用Keras对问题进行小规模实验验证,用TensorFlow在完整的数据上进行调参。Keras提供了相对一致的高层API,使用方便。
3.4 OpenCV及pydub
OpenCV是一个开源跨平台的计算机视觉库,在商业和研究领域可以免费使用[3]。OpenCV提供了很多图像和视频处理API,利用OpenCV可以很方便地处理视频数据。pydub是Python的一个音频处理库,底层依赖于FFmpeg,提供了简单易用的音频处理API。
4 数据挖掘环境构建
机器学习及深度学习中,最花时间的就是模型的训练,尤其大型的深度学习使用大量数据进行训练,需要数天或数周之久,且精度要求较高,一般都需要GPU加速运算。高职院校现有的服务器一般为CPU服务器,可以在云端运行深度学习任务。本文服务器选用腾讯云GPU 云服务器,配置为CPU 28核,内存224 G,GPU 4*NVIDIA Tesla P40,8T硬盘,100Mbps带宽,操作系统选用CentOS 7.4 64位。云端运行深度学习任务成本较高,如果长时间进行深度学习,可以购买带GPU的物理服务器。教学视频中不仅包含视频信息还包含音频信息。为了对教学视频进行挖掘,需安装FFmpeg、Anaconda、pydub、OpenCV、TensorFlow及Keras。Anaconda中包含了Scikit-Learn及Jupyter Notebook。
5 数据挖掘过程
机器学习库Scikit-Learn包括分类、回归、聚类、降维四类算法,特别是提供了对梯度提升决策树算法的支持,可以利用Scikit-Learn对学习平台的结构化数据进行挖掘分析。深度学习库Keras简单易用,支持卷积神经网络、循环神经网络及两者的组合,可以利用Keras对学习平台的非结构化数据进行挖掘分析。
5.1 结构化数据挖掘
利用Scikit-Learn对学习平台的结构化数据进行机器学习,需要依次完成数据采集与标记、数据清洗、特征选择、模型选择、模型训练和测试、模型性能评估和优化、模型使用等步骤。模型训练往往计算量很大,需花费较长的时间来训练,模型测试通过后,把新样本作为输入,调用模型即可得到结果,最后对结果进行解释和应用。
利用机器学习,可以对学生进行聚类分析,帮助教师根据学生的类别制定不同的教学策略;对知识点评论数据及课程评论数据进行分类,帮助教师改进教学;根据学生的知识点学习情况预测学生的考试成绩,帮助学生改进学习等。
5.2 非结构化数据挖掘
利用Keras对学习平台的非结构化数据进行深度学习,以TensorFlow作为后端引擎。深度学习首先要明确目标,收集数据,确定评估目标成功的指标及评估方法。为了使原数据更适于用神经网络处理,需要对原数据进行向量化、标准化和缺失值处理等预处理。构建模型,常使用一维卷积神经网络分析文本数据及音频数据,二维卷积神经网络分析图像数据,三维卷积神经网络分析视频数据,通过调节超参数和添加正则化逐步改进模型架构。将新样本输入到测试通过的神经网络,即可得到结果,最后对结果进行解释和应用。
利用深度学习,可以根据课程视频中的音频信息或视频信息自动生成视频的文字简介,根据内容对学习资源进行分类,自动理解并解答问题[4]及自动生成学习资料的摘要等。
最后将学习平台的结构化数据挖掘结果与非结构化数据的挖掘结果相结合,为教师推荐适合其课程的学生,为学生自动匹配与其自身特点相适应的学习资源,真正实现因材施教,目前还面临着诸如训练数据不具代表性,数据量不足及数据质量差等问题。
6 结束语
对高职院校学习平台进行数据挖掘研究,首先对学习平台的数据进行了梳理,明确了数据挖掘的目的及技术路线,完成了数据挖掘环境的构建,探讨了数据挖掘的过程及可能的应用。机器学习领域的梯度提升决策树等算法擅长挖掘分析结构化数据,而深度学习领域的神经网络擅长挖掘分析非结构化数据,所以分别利用开源机器学习库Scikit-Learn及开源深度学习库Keras对高职院校学习平台上的结构化数据及非结构化数据进行挖掘分析,数据挖掘结果可以应用于教师改进教学及学生改进学习。
参考文献:
[1] 黄永昌.scikit-learn机器学习常用算法原理及编程实战[M].北京:机械工业出版社,2018.
[2] Francois Chollet.Python深度学习[M].张亮,译.北京:人民邮电出版社,2018.
[3] Joe Minichino.OpenCV3计算机视觉:Python语言实现(原书第2版)[M].刘波,译.北京:机械工业出版社,2018.
[4] 胡飞. 在线自主学习中的自动答疑研究[J]. 知识文库,2018(11):63-64.
【通联编辑:梁书】