陈朝焰,许洪云,刘攀
(上海商学院商务信息学院,上海201400)
大数据时代,数据挖掘成为数据科学领域的核心关键技术。越来越多的高校开设数据科学类本科专业,开展数据挖掘课程建设成为数据科学人才培养和学科建设的重要组成部分。针对本科生的特点,对本科数据挖掘课程的理论和实践教学内容进行结构化设计,在实践教学部分按照项目开发流程,将理论知识的教学融入实践教学的结构化框架,起到巩固理论知识和加深算法理解的作用。教学实践表明,这种结构化设计有助于加深学生对教学内容的理解,能更好地开展实践教学,提高学生学习的积极性,进而提高教学质量。
结构化设计;数据挖掘;本科教学;教学内容
0 引言
随着计算技术的进步和物联网的广泛应用,“人-机-物”三元世界深度融合,数据的采集、存储与传播的成本大大降低,人们生成或获取数据越来越便捷,导致数据呈爆炸式增长,迎来了大数据时代。如今,数据已经渗透到各个行业和各个领域,成为重要的生产资料。数据已经成为企业和国家竞争力的源泉,围绕这些数据进行深入的数据分析,对个人的消费行为,企业商品的生产、流通和分配,社会的运作方式,甚至国家的治理方略等都会产生深远影响。
数据已经成为国家基础性战略资源。2012年联合国发布Big Data for Development:Challenges&Opportunities[1]详细阐明了数据生态系统,并分析了各国在运用大数据时所面临的机遇和挑战。为迎接大数据时代带来的重大机遇与挑战,我国制定了一系列的发展规划。2015年国务院印发《促进大数据发展行动纲要》,明确指出全面推进我国大数据发展和应用,并提出加快建设数据强国。2016年发布的《中华人民共和国国民经济和社会发展第十三个五年规划纲要》中提出:“把大数据作为基础性战略资源,全面实施促进大数据发展行动,加快推动数据资源共享开放和开发应用,助力产业转型升级和社会治理创新”。工业和信息化部也制定了《大数据产业发展规划(2016-2020年)》,明确指出要加快建设数据强国,为实现制造强国和网络强国提供强大的产业支撑。近年来,国内许多高校和科研院所也在积极响应国家的大数据战略,开设大数据相关专业,加大对大数据相关人才的培养力度。据南方都市报报道[2],截止到2020年,开设“数据科学与大数据”本科专业的院校已达612所。
数据科学类专业的广泛开设使得数据挖掘课程处于核心地位。数据的快速增长,导致数据的体量大、种类繁多且变化频繁,为数据分析带来了挑战,超越了经典数据库软件工具的处理能力,人们对于海量数据的挖掘需求越来越迫切。数据挖掘将传统的数据分析方法与大数据处理方法进行有机结合,已经成为大数据领域的核心技术,而数据挖掘课程也成为了数据科学专业方向的骨干课程。然而,一部分高校的数据挖掘课程建设的研究成果主要集中在研究生层次[3-5],专门针对本科数据挖掘课程的教学研究相对偏少[6-7]。因此,在大数据类本科专业呈井喷式增长的条件下,迫切需要结合大数据的时代背景,针对本科生的数据挖掘课程教学开展研究。
本文在笔者课程教学改革经验的基础上,结合在上海商学院讲授《数据挖掘及应用》课程的教学实践,针对大数据时代背景下开展本科数据挖掘课程的教学进行探讨,对本科数据挖掘课程的教学内容进行梳理和结构化设计,并对教学方法进行总结,以期在提高教学质量的同时,进一步提升学生的综合实践能力,从而更好地培养数据挖掘人才。
根据维基百科的定义,大数据通常指规模庞大、结构复杂,难以通过现有技术在有效的时间内获取和处理的数据集。大数据具有规模巨大(Volume)、种类繁多(Volume)、变化速度快(Velocity)和价值密度低(Value)的4V特点。虽然大数据价值密度低,但其中却蕴含着巨大的价值,如何从原始数据中提取有用的模式或知识,据此对未来做出合理的预测,并对未来做出有价值的判断,是数据挖掘需要解决的重点问题。大数据时代急需经过专业训练的数据挖掘人才,这需要宽泛的知识和技能,需围绕这些知识和技能研究数据挖掘课程的特点,并据此开展面向本科生的教学内容设计和教学方法改革。
数据挖掘课程具有如下特点:
(1)多学科领域交叉。数据挖掘交叉融合了多个学科领域的知识,如概率论与数理统计中的抽样、参数估计、假设检验、方差分析和回归分析,数据库与数据仓库中数据的存储、索引和查询技术,机器学习与模式识别中的搜索算法与统计学习理论,可视化技术中的数据整理与展示等。同时,数据挖掘还吸纳了来自工程优化、进化计算、信息论、信号处理和信息检索等领域的思想,并将其用于解决大数据所带来的挑战。
(2)强调数据思维。Mayer-Schonberger等人指出了大数据时代的思维变革[8]:
●更多:不是随机样本,而是全体数据。小数据时代,应用场景通常较为单一,通常采用随机采样的统计方法获取数据,希望用尽可能少的数据获得尽可能多的信息。然而,在大数据时代,数据的类型多且来源丰富,需利用网络爬虫、系统日志甚至是多传感器技术,尽可能收集全面而完整的数据,即全数据模式;
●更杂:不是精确性,而是混杂性。大数据时代允许不精确,大数据的简单算法比小数据的复杂算法更有效;
●更好:不是因果关系,而是相关关系。在大数据时代,我们不必非得知道现象背后的原因,而是要让数据自己“发声”。
(3)理论性、工程性和实践性较强。一方面,数据挖掘的专业性较强,一些算法的数学原理比较抽象,具有较强的理论性;另一方面,各种数据挖掘算法的实现需要借助编程语言或软件工具,具有很强的工程性;再者,数据挖掘在科学与工程、零售、电信服务和金融数据分析等诸多领域均有广泛应用,具有很强的实践性。
(4)挖掘算法种类繁多。2006年在香港举办的数据挖掘国际会议(IEEEInternational Conference on Data Mining,ICDM)评选出了数据挖掘领域的十大经典算法[9]:C4.5算法、K-means算法、SVM算法、Apriori算法、EM算法、PageRank算法、AdaBoost算法、KNN算法、Naive Bayes算法和CART算法等。除了这10种外,还有相当一部分算法未列出,而且随着时间的推移,越来越多新算法被提出。
(5)内容更新快速。一方面,人工智能领域的发展,尤其是深度学习领域的突破,为数据挖掘注入了新鲜血液,深度学习领域的算法和框架可以直接用来解决数据挖掘中的分类等问题;另一方面,大数据和云计算技术的进步,并行处理和分布式处理成为主流,为数据挖掘带来了众多的工具和框架,这些工具和框架不仅种类繁多而且更新换代快。
数据挖掘是从大量数据中挖掘有趣模式和知识的过程[10]。数据挖掘课程教学内容主要围绕如何从数据中发现有用的知识或挖掘有用的模式。通过课程的学习,学生应能对从各种不同类型数据中挖掘有用模式与知识的过程有清晰和全面的认识,如数据采集、数据清洗整理与探索、数据库与数据仓库的管理与维护、通过机器学习算法进行模式提取、处理结果的可视化,等等。按照是否对数据类别标签进行标注,可将数据挖掘技术划分成两大类:有监督的方法和无监督的方法。有监督的方法包括分类(最近邻分类、朴素贝叶斯分类、决策树、支持向量机、人工神经网络等)和回归(线性回归和非线性回归),其中分类用于离散类型目标变量的预测,而回归则用于连续类型目标变量的预测;而无监督的方法主要有聚类分析和关联规则分析等。
图1 数据挖掘原理知识点的结构化框架
早在2006年,国际计算机协会(Association for Computing Machinery,ACM)承办的SIGKDD顶级会议成立了专门的课程委员会,制定了数据挖掘课程大纲[11]。然而,随着大数据时代的到来,ACM的大纲内容已略显陈旧,需结合大数据时代数据挖掘的新特点和新内容进行教学内容设计。图1从课程教学的角度给出了数据挖掘原理的结构化知识点。
(1)模块1:绪论
讲授数据、大数据和数据挖掘的基本概念,知识发现的过程,可以挖掘的数据类型,可以发现的知识种类,如何对挖掘的知识进行评估,以及数据挖掘的应用等。
(2)模块2:数据预处理
讲授数据对象与属性类型,数据的统计描述与概要性描述,数据清洗,数据集成,数据变换和数据降维等。
(3)模块3:数据管理
讲授关系数据库与结构化查询语言、NoSQL数据库、NewSQL数据库等。另外,可进一步讲授存储和处理大数据集的分布式框架Hadoop、MapReduce和Spark等。
(4)模块4:分类技术
分类技术内容较多,可选讲部分内容。常见的分类技术有最近邻、朴素贝叶斯、决策树、基于规则的分类器和支持向量机等。本模块重点讲授分类器的训练过程,如何挑选模型,如何利用训练样本对模型进行训练,如何利用测试样本对模型进行测试。此外,还可以对集成的方法进行讲解。
(5)模块5:人工神经网络和深度学习
人工神经网络是一种典型的非线性分类技术,随着深度学习技术的发展,人工神经网络变得越来越重要,故单独作为一个教学模块。此部分可先介绍感知机的概念,由多层感知机过渡到人工神经网络,再过渡到深度神经网络。重点讲授人工神经网络的拓扑结构、激活函数、输入层、输出层和隐藏层等概念。同时,强调反向传播、损失函数、梯度消失问题和正则化技术等。
(6)模块6:回归分析
从时间序列的视角,重点讲授经典的回归分析方法,如线性回归、非线性回归、逻辑回归和岭回归等。需特别强调逻辑回归用于解决分类问题,可看作是线性回归在概率预测问题中的推广。
(7)模块7:关联分析
讲授频繁项集与关联规则的基本概念,频繁模式挖掘算法(Apriori算法、FP-Growth算法),关联规则的生成过程。
(8)模块8:聚类分析
讲授聚类分析的基本概念,基于划分的方法(Kmeans、K-medoids、K-median和K-center等),基于层次的方法(BIRCH方法、CURE方法、ROCK方法和CHEMALOEN方法等),基于密度的方法(DBSCAN方法、OPTICS方法和DENCLUE方法等),基于网格的方法(STING方法和CLIQUE方法等),基于模型的方法(基于概率模型的方法和基于神经网络模型的方法)等。
(9)模块9:文本挖掘与网络挖掘
文本挖掘是数据挖掘的一个分支。文本挖掘的对象是半结构化或非结构化的文本,主要完成短语提取、概念提取和可视化展示等任务,可进一步进行关联分析、文本分类或文本聚类等;网络挖掘是数据挖掘的另一个分支。网络挖掘对网页内容及后台交易数据进行挖掘,提取感兴趣的模式或有用的知识。由于网页上的内容多为文本信息,故诸如文本分类、文本聚类和关联规则等文本挖掘的内容亦可用于网络挖掘。
(10)模块10:数据可视化
介绍常用可视化图表类型,高维数据可视化,文本数据可视化,网络数据可视化,时空数据可视化,层次结构数据可视化。
(11)模块11:应用
讲授数据挖掘在科学与工程、金融数据分析、商品零售数据分析、电信用户行为分析与电商商品推荐、电商产品评论情感分析等的应用。
授课教师可针对不同专业学生的学科知识结构特点,有针对性地选择上述各教学模块,进行数据挖掘原理部分的教学。
早期数据挖掘课程主要面向研究生开设,重点讲授数据挖掘算法的基本原理,并辅以一定的课程实验。近年来,数据科学成为研究热点,数据挖掘技术获得了更为广泛的应用,面向本科生开设数据挖掘课程的需求越来越强烈。经典的数据挖掘教材[10-12]内容涵盖了非常宽广的数据挖掘知识,各算法均给出了数学背景知识和算法设计过程,具有一定的广度和深度,比较适合于研究生层次的教学。然而本科生可能很难深入理解算法背后的数学理论,会进入恶性循环产生厌学情绪,需再原有原理性内容基础上增加工程实践环节。
针对本科生数据挖掘课程的实践教学,本文建议按照项目开发过程开展结构化教学。第一种情况,当课程学时非常充足时,例如64个学时,则可32个学时用于上一小节中数据挖掘原理知识的教学,另外32个学时用于数据挖掘技术的项目编程实践教学;第二种情况,当课时很有限时,例如只有32个学时,则应采用弱化数据挖掘算法理论知识,强化算法的工程实现,并按照项目开发的模式开展实践教学。
结合数据挖掘项目的开发流程,对数据挖掘处理过程进行结构化设计,在项目开发过程中穿插进行理论知识的教学,实现理论和实践的交叉融合,让学生在项目开发实践中理解算法基本原理。图2给出了数据挖掘项目开发的过程,其遵循科学研究的基本逻辑,按照从发现问题,到分析问题,再到解决问题的基本过程,将数据挖掘项目的开发过程分解为5个步骤。
图2 数据挖掘项目开发流程的结构化框架
下面给出这五个步骤的详细解释:
步骤1:设置目标。根据特定的目标场景需求,明确数据挖掘项目的目标任务及其对应的考核指标;
步骤2:获取数据。搜集能用于解决上述问题的数据集,获取数据有多重途径,可实时采集数据,当条件不具备时,可利用计算机软件进行仿真生成数据,亦可购买数据或直接采用已公开的数据集等;
步骤3:数据预处理。该部分是关键环节,内容繁多,需学生有足够的耐心认真完成。首先,进行数据整理,对获得的数据进行适当整理,转化为更加适合处理的格式。同时对来自数据输入的错误、缺失值、异常值或其他各种错误进行处理,完成数据清洗、数据转换和数据整合等任务;其次,对数据进行探索性分析,将数据中的显著模式进行可视化;再次,进行特征提取,获得数据中的隐藏模式,进而抽象出所需的目标变量;最后,如果数据的维数比较多,还需进行降维处理;
步骤4:数据建模。该部分是重点和难点,可穿插进行理论知识的教学。依据获得的特征及目标变量类型,抽象出数学模型,并建立相应的数据挖掘任务。常见的数据挖掘任务可以分为五类:分类、回归、聚类分析、关联分析和异常检测。将数据集划分成训练集、验证集和测试集,对模型进行训练、验证和测试,并对模型进行评估;
步骤5:结果展示。利用可视化技术对挖掘到的知识进行表示,并发布决策结果。由于面向的用户类型多样,可以是领域专家、工程师、企业决策者或业务分析师等,这些用户具有不同的领域知识,关注的焦点也不同,需结合用户的反馈意见进行持续改进。
围绕上述数据挖掘的五个步骤,教师可在进行实践教学的同时,在步骤4穿插进行相关理论知识点的教学,例如挑选十大数据挖掘算法中的一种,作为数据建模的基本模型,讲解基本的数学原理、算法思想和算法设计流程等,然后让学生编程实现(计算机类和数据科学类专业的学生)或用软件工具实现(信管类或应用统计类专业的学生)。这样可以做到熟悉数据挖掘流程的同时,获得理论知识的应用经验。真正做到理论和实践的交叉融合。
大数据时代,数据挖掘是核心关键技术,已经有越来越多的高校为本科生开设数据挖掘课程。本科数据挖掘课程的教学重在算法的应用实践,笔者通过多年的实践教学,提出对数据挖掘课程教学内容进行结构化设计的思想:在理论教学内容部分按照课程理论知识点的前后联系构建结构化框架,供教师选择性使用;在实践教学内容中,结合数据挖掘项目开发流程构建结构化框架。并针对不同的学时,给出了面向本科生的教学建议。笔者的课程开设教学实践证明,通过结构化设计,学生运用数据挖掘算法解决工程实践问题的能力明显提高,能在项目开发实践中巩固加深对理论知识的理解。同时,教师也可在结构化设计中不断完善自身的知识结构,进而提高自身教学水平。