陈永保
(上海理工大学 能源与动力工程学院,上海)
大数据科学伴随着信息技术发展而来,是信息化进程的发展新阶段,其发展推动了数字经济的形成与繁荣[1]。现今,在“万物物联”的背景下,大数据的获取变得更加容易,海量的大数据为各行各业所遇到的理论及技术难题分析与研究提供了新的角度。大数据技术促进了包括人工智能、机器学习等领域的发展,从而服务于各行各业[2-3]。
例如,在医学领域,2020年3月,海军军医大学长海医院等学者在Nature上发文,他们通过大数据技术揭示了全球首份中国前列腺癌大数据图谱[4]。基于这些数据图谱,科学家就能够了解到个体的哪些基因突变可能致癌,哪些人更容易患该病,从而具备了理论依据去寻找预防和精准治疗这些患者的方法。类似利用大数据技术在各类疾病防控及治疗等方面均获得了较好的效果,例如遗传影像[5]、神经系统疾病[6]、心血管疾病[7]等。在农业领域,2021年8月,河北农业大学等学者通过大数据技术破译了陆地棉和海岛棉的结构变异图谱,相关研究成果也发表于国际顶级期刊Nature Genetics上[8]。大数据技术的应用几乎涵盖了现有的所有工程领域,可以从不同维度去理解、解释一些传统方法尚未解决的理论和工程难题。
实际工程应用的急剧需求加速了大数据科学与大数据技术在课程建设方面的发展[9-10],高校则承担着为社会输送大数据人才的重要职责。2016年2月,北京大学等首次成功申请该专业,日前我国已有超过250所高校获批了大数据相关专业办学资格[11]。数据科学与大数据技术本科专业是一个新兴专业,在教学经验上的积累较传统学科少,而且该专业具有很强的实践性,课堂的互动性效果将直接影响课程教学的好坏。因此本文在课程交互式教学建设方面进行相关问题探讨,旨在提供一些提高课程教学效率的方法。
Python编程语言因语法结构简单,相较于传统C、C++、Java、Matlab、R语言等编程语言,更符合人类语言习惯,易于入门,非常适合各专业大学生学习使用。随着各类数据处理包的开发与应用,其中包括Numpy、 Pandans、 Matplotlib等,Python已成为目前世界上最流行的数据编程语言[12]。然而,基本的Python界面相对简单,可视化和互动性较差,因此一款集成开发环境(Integrated development environment, IDE)的使用非常重要。目前常用的IDE包括Jupyter Notebook、Pycharm、Spyder等。
Jupyter Notebook是一款开源交互式笔记本编辑Web程序,开发环境继承了IPython,可直接在网页界面上运行,且其安装所需内存小。此外,其支持多种编程语言,具有简单易学、边学边练、逐行逐代码块运行、代码即编即运行、代码与结果交互存储等优点。因此,可非常容易实现课堂教学下列几方面的效果[13]。a)代码与运行结果交替展示,教与学交互式即时呈现;b)数据模块包多且安装方便,几乎所有数据处理现实需求均有对应的开源Python安装包(模块),同时各类机器学习、深度学习开发包也非常多,其安装也非常方便;c) 支持Markdown和Code模式,非常方便类似于传统笔记本的记录模式;d) 支持分布式运行,可以利用本地资源或远程计算资源,进而解决公共计算机所需运行环境配置不正确的常见问题,可实现一处安装,多处轻松授课效果;e) 交互式展现,利用各类专业绘图包,可以轻松实现图片、视频、数学公式展示,便于全过程沉浸式教学,运行生成的文件即可代替传统的PPT课件,避免教师二次制作课件的重复工作。
Pycharm和Spyder两个Python IDE几乎可实现相同的功能,通常,在管理大工程项目时建议采用Pycharm,而仅做基本数据分析,建议采用Spyder,而一些特殊项目则需要结合上述两种IDE。在教学或为良好可视化展示时,则建议采用Jupyter Notebook。
为展示教学交互式过程,本文以实际房价预测为实例,该实例为Kaggle网站的一个竞赛赛题,相关原始数据可从网站[14]下载。实例是通过已有的历史数据信息(影响房价因素),预测未来房价。数据集包含1460*2个样本,均分为训练集和验证集,数据集中包含79维度影响房价的影响因素,包括历史房价、建筑面积、建筑装修情况、建筑建成时间等。以下就数据预处理以及数据建模的教学展示分步骤介绍,完整Python代码可参见[15]。
Juypter Notebook安装及环境配置较简单,详细步骤可参见[16]。命令行运行Jupyter Notebook系统默认浏览器将打开主页,如下图1所示,通过新建Notebook文档,便可进行单元式的代码开发与运行。因数据处理需要预先安装所需的数据模块,包括张量数据处理模块Numpy和Pandas,机器学习算法模块sklearn,图像绘制及展示模块Matplotlib和seaborn等,如图2所示。所有模块在导入(import)前需安装正确版本,通常可在命令行直接运行命令pip install 模块名==版本号(例如,pip install numpy==1.14.4)。当运行Notebook代码块未报错即说明各模块已安装成功。
图2 数据处理所需导入的计算模块
在进行数据建模之前,需要确保数据无异常和格式满足建模要求。数据的预处理包括缺失值及异常值处理、标准化、相关性分析等。缺失值及异常值的处理可根据不同工程领域及特定任务设定处理规则,例如对于本案例的数据提出如下规则:a)当缺失数据超过总样本量一定比例时(例如,15%),对所缺失的影响变量进行全部剔除;b)当缺失数据小于总样本量一定比例时(例如,5%),可对缺失值进行上下样本插值或类似样本直接补值;c)当出现异常值时,直接删除对应样本,如下图3所示标记的异常点,直接删除该样本点。此外,机器学习算法通常要求输入的各特征维度(即各影响参数)的取值符合正态分布,本案例数据标准化采用Log变换函数。
图3 建筑面积和房价关系图
由于影响房价的因素较多,本案例中提供了79个维度因素,而通常输入影响因素(或变量)对房价影响权重不一,且各因素之间存在相关性。通过数据处理方法可实现影响因素权重排序,以及得到相关性矩阵。影响因素的相关性分析可采用corr()函数和Numpy模块中的corrcoef()函数,并利用seaborn模块中的heatmap函数显示最为重要的几项影响因素之间的关系热图(heatmap),如下图4所示。对房价几项重要影响因素说明如下:建筑建造时间-YearBuilt,房间数- TotRmsAbvGrd,总卫生间数-FullBath,一楼建筑总面积-1stFlrSF,地下室总面积- TotalBsmtSF,车库面积-GarageArea,建筑总面积(不含地下室、车库)- GrLivArea,建筑装修情况-OverallQual,销售总价-SalePrice。
图4 重要影响特征因素相关性热图
最后,把所选择的数据进行格式及类型转换,把分类变量转化为模型算法能够识别的数据类型,本案例采用Pandas模块中的get_dummies()函数实现。
完成数据预处理后,下一步将建立数据预测模型。本案例采用浅层机器学习算法lightgbm进行预测模型建模,有关lightgbm理论介绍详见文献[17]。lightgbm主体模型代码及模型保存见图5,图6为预测精度结果计算及打印,完整代码参见[15]。
图5 lightgbm模型
图6 预测结果精度计算及打印
在模型训练过程中,需要对lightgbm模型超参数进行优化选择,从而确保模型具有良好的泛化性能,即在欠拟合和过拟合之间达到平衡。模型的优化超参数很多,主要包括叶子节点数、网络最大深度、学习率等。学习曲线的绘制是一种非常直观的方法,可通过学习曲线的变化趋势进行超参数选取。在模型确定后,保存模型及预测结果,提交预测结果数据后Kaggle竞赛网站将自动计算预测得分及排名。若排名结果未达预期,可通过调整lightgbm模型超参数,或选用其他算法模型,重复提交预测结果,直到达到预期目标为止。通过实际数据竞赛项目,结合Jupyter Notebook的交互教学,能够加深学生的印象以及调动学生的积极性,达到良好的教学效果。
通过Jupyter Notebook房价预测实际案例的实操练习,可使学生快速掌握数据挖掘技术及机器学习算法建模的基本知识和大数据处理技能,同时可为学生进一步学习基于大数据的深度学习等高阶课程打下坚实的基础。Jupyter Notebook平台将文字备注、Python代码、图表、公式和运行结果整合在一个文档中,不仅可以在文档中运行代码,还能以网页版的形式分享文件,相较于传统的数据处理平台和教学模式,基于Jupyter Notebook开展数据科学教学具备多重优势。首先,可代替传统的教学课件,.ipynb的文件格式可直接在网页上交互式展示,直接代替传统课件,省去教师重复制作课件的工作。其次,良好的交互式展示,数据处理所需代码的讲解和代码的执行可同时进行,可非常方便地实现交互式教学。最后,学生的作业、作品的提交和批改变得更加简单,学生可将编好的代码运行后,在Notebook上保存结果,即可直接提交执行后的.ipynb文件,教师可查看作业完成情况。
Jupyter Notebook提供了一个良好的教学展示及交互式平台,但数据科学与大数据技术专业课程的发展同时需要针对不同工程应用领域课程教学内容的长期研究与探索,从而开发出针对性强,效果好的授课案例。目前随着大数据人才涌现、数据处理技巧和数据处理模块的发展、机器学习算法的更新迭代,留下海量的研究、学习资料,大数据教学课程也变得更加高效和多样化。国立台湾大学名师李宏毅针对机器学习的教学课程,就是一个值得借鉴的教学案例,目前已公开在YouTube和哔哩哔哩等视频网站。
本文介绍了一种交互式网页教学平台,并利用案例进行了教学方法展示,旨在对相关教师的教学思路和方法有所启发,同时宣传和推广基于Jupyter Notebook平台的交互式教学理念,从而促进大数据科学相关专业的教学方法的创新。