《数据科学概论》的学习路线图(Learning Road Map)
2022-03-25 Revision
本文档同时在如下网址提供:
http://xiongpai.gitee.io/datascience/(请使用PC浏览器打开)
https://datascience.neocities.org/(请使用PC浏览器打开)
https://blog.csdn.net/xiongpai1971/article/details/89364071(请使用PC浏览器打开)
《数据科学概论》第2版的内容体系更加完善,重点更加突出,学习路线图更加明确。
覃雄派, 陈跃国, 杜小勇. 数据科学概论(第2版). 中国人民大学出版社, 2022.
前言
《数据科学概论》第1版出版以后,引起了大量关注。任课老师纷纷表示,愿意使用该教材开设《数据科学概论》课程。
在和一些老师的沟通和交流中,了解到他们面临的主要问题是,本书内容稍微有点多,全部讲下来不容易;如果要全部讲下来,容易面面俱到没有重点,也讲得不深入,讲得不清楚。
中国人民大学老校长成仿吾教授提出的教学三原则,仍然值得我们学习和借鉴,“理论联系实际,内容少而精,教与学相一致”。
在教学中,应该对内容有所挑选。给使用本书的老师和同学一个学习路线图,并且详细说明本书内容是如何支撑这个学习路线图的。
为此,本书作者梳理了数据科学概论课程的目标。对本书内容进行了仔细分析,按照数据科学概论课程目标的要求,把内容划分为必学内容和选学内容,并且给出如下的教学大纲。
1.教材承担内容体系:培养宽广的视野
在《数据科学概论》第2版本中,我们对部分内容进行了删减,对部分内容进行了修正和丰富,体现了数据科学应有的知识体系、以及知识点之间的联系,有利于学生展开宽广的视野。
我们认为在内容体系方面,数据科学概论由理论部分和应用部分构成。形成两条线索,两个T型,如图1所示。
|
数据科学概论 OLTP与数据服务 OLAP与结构化数据化分析 数据清洗与数据集成 统计分析、数据挖掘与机器学习 |
云计算平台、Hadoop & Spark大数据处理平台、Python语言与统计分析/数据挖掘/机器学习工具库 |
||
|
|
数据科学在各个领域的应用 政府、 金融、 电商、 互联网…… |
|
|
其它数据处理模式:流数据处理 其它数据类型的处理:文本、社交网络、轨迹数据、时序数据…… |
|
图1. 《数据科学概论》内容体系
理论部分,先由浅入深,再宽度展开,旨在培养学生宽广的视野,形成完整的知识体系。应用(实践)部分,先宽度展开,再深入某个应用领域(政府、金融、电商、互联网……等),旨在培养学生的动手能力和浓厚兴趣。
理论部分解决“所以然”的问题,而应用部分解决“然”的问题。我们既要知其然,也要知其所以然。
2.教学大纲给出有重点的学习路线图:有重点、有路线
与此同时,如下的教学大纲,将对内容有所选择,做减法,突出重点。有利于老师把相关内容讲的更加深入、细致、清楚,同学们理解得更加透彻,并且有充分的动手实践的时间,通过一系列示例、小练习、大作业,切实培养数据的感觉,实现教学目标。没有在课程中讲授的内容,学生可以自行选择学习。
3.课程定位与教学目标
数据科学家是大数据时代最急需的人才,他们应具有宽广的视野,同时具有扎实的理论和技术功底。数据科学专业的整个课程体系,涵盖一系列基础课程包括数学课程、计算机课程,以及一系列专业课程,为培养能够解决复杂业务问题的、合格的数据科学家服务。
在整个课程体系中,“数据科学概论”课程的定位是一门入门和统领式的课程,它把学生引进数据科学的大门。对数据分析的基本原理和关键技术有一个初步了解,培养以数据为中心的问题求解的思想方法和初步能力。
它的目标有两个,一个是展开宽广的视野,培养浓厚的兴趣;另外一个是打下坚实的基础。该课程的学习,有利于学生学习后续课程,有利于培养新一代数据科学家。
该课程一般在大学二年级下学期开设。在这个时间点,学生已经学习了必备的数学知识和编程语言,可以开始该课程的学习。而学完这门课,则为大学三年级的其它专业课学习,打下必要的基础。
在教学目标方面,突出两个方面,一个是掌握数据分析的基本思路、基本理论与基本方法,一个是实践应用能力培养,即面向具体行业的实际需求,能够给出数据解决方案,并最终实现它。
内容选择方面,不要求面面俱到,而是精选部分算法,细致讲解算法的数学基础和推导过程。难度方面,该门课程定位为入门的课程,目的是培养学生浓厚的兴趣,难度上要适中。加强实践环节,要求同学们熟练掌握相关工具,完成数据管理和分析全流程的实践,切实培养学生的动手(编程)能力。
4.教学内容和教学计划
教学计划,对教师而言就是教学的行动指南;对学生而言,则是学习的路线图。
4.1教学内容模块化
“数据科学概论”是一门入门性质的课程,内容安排时需要注意取舍,达到广度和深度的平衡。既要避免泛泛而谈、没有重点,也要避免只及一点、不及其余。
从广度上来讲,要帮助学生构建起一个完整的知识体系。在理论部分,包括数据科学的基本概念、技术和方法,数据的不同类型,数据的生命周期和数据处理的流程,数据处理的不同模式,数据分析的主要方法等。其中数据的类型是丰富多样的,包括文本、社交网络、时间序列、轨迹数据、音频/图像和视频等。在应用(实践)部分,包括成功案例的介绍,以及熟悉数据处理的基础设施、平台和各种工具以及编程语言。
内容如此繁多,在深度上,选择几个专题进行深入地介绍。在介绍完数据科学的基本概念、技术和方法、以及主要的数据类型及其分析方法之后,选择某几种具体的数据类型,进行深入的介绍。在内容方面删繁就简,突出结构化数据分析、文本分析、和图数据(社交网络)分析三大块。
在实践部分,给出一系列示例,设计一系列小练习、以及一两次大作业。大作业要求学生结合实际数据,基于数据分析,完成业务目标。大作业的选题来自各个大赛赛题或者企业应用,发挥学生的能动性,解决实际问题。
为此,教学内容分为如下几大模块,各个模块的规模不尽相同,各个模块及时间分配建议如图2所示。
|
|
|
|
Relational(3周) |
|
|
概论(1周) |
>> |
Python(2周) |
>> |
Machine learning(3周) |
>> |
Platform(1周) |
|
|
|
|
Text(3周) |
|
|
|
|
|
|
Graph(3周) |
|
|
图2. 数据科学概论课程教学内容的各个模块
概论(1周):主要介绍数据科学的基本概念、(大)数据及其价值、数据的生命周期和数据处理的流程,包括数据的采集和获取、数据预处理/清洗和集成(Preprocessing)、数据管理(Management)、数据分析(Analysis)、数据可视化(Visualization)和解释等,以及数据处理的不同模式。
Python(2周):Python语言部分,包括Python语言基础,以及Python的几个重要的库的介绍。重点介绍数据预处理库Pandas、数组和计算库Numpy。
本课程的主要的目的是把同学们引进数据科学的大门,培养数据的感觉和兴趣,基础理论精选精讲,然后通过工具的使用和编程开发,让学生迅速获得数据处理分析和数据价值的感觉。
Relational模块(3周):基于关系数据库管理系统(MySQL)、SQL on Hadoop系统等工具(平台),实现数据从生产系统向分析系统的抽取、转换和装载,以及后续的多维分析(OLAP)。这个模块的目的,是使得同学们熟悉关系模型和SQL语言。作为数据科学家,熟悉SQL语言是必备的基本技能。
在中国人民大学信息学院,由于学生后续有《数据库系统概论》专业课专门讲授关系数据库管理系统和SQL语言,所以Relational模块删除掉,把时间充实到其它模块。
Machine Learning模块(3周):介绍数据模型和通用的数据分析方法、数据可视化等。有些老师更习惯在介绍各个模块比如文本处理的时候,适时地介绍一些机器学习方法。但是笔者更加倾向于专门安排时间,统一介绍这些数据分析方法。比如SVM方法,可以用于文本处理,也可以用于图像处理,单独介绍是合适的。重点对分类(KNN、Decision Tree, SVM,Naïve Bayes)、聚类(K-Means、GMM)、回归(线性回归、多项式回归)、和降维(SVD、PCA)等不同类别的主流方法给予介绍。同时介绍Python的机器学习库scikit learn和可视化库matplotlib/seaborn。
Text模块(3周):基于分布式的大数据处理平台(Hadoop/Spark/Lucene)和各种工具,包括Scrapy爬虫、Jieba分词、NLTK库、scikit learn库等,对文本进行分词、索引与检索、实体识别、情感分析、话题发现、可视化等。重点讲解文本爬取、文本表示、文本分类、以及文本检索。进行文本检索试验时,由于Lucene的安装配置比较复杂,可以选用Elastic Search代替。
Graph模块(3周):基于Python NetworkX库、或者Neo4J数据库(如果时间有限,可以仅仅限于NetworkX的介绍),对图数据进行创建、查询、Centrality和Page Rank计算、路径分析、社区检测、影响力分析等一系列分析。重点讲解图的表示、中心度和PageRank、社区检测和Louvain算法、IC模型和影响力最大化等。
Relational模块、Text模块、Graph模块都带有很强的实践性,除了理论介绍之外,还要介绍主流工具的使用,并且给出若干示例,以便加深学生的理解。
老师在讲解原理、方法、工具的基础上,布置一系列小练习。要求学生熟练使用上述平台和工具,对数据集进行处理、分析和可视化,并且解释结果,体现数据的价值。
Platform模块(1周):介绍云计算平台,大数据处理工具Hadoop/Spark,以及流数据处理的基本原理。使得学生对分布式计算与大数据平台(Hadoop & Spark)、数据处理的不同模式(批处理和流式处理)有所了解。由于平台部分的内容相当丰富,此处仅做一般了解。
数据科学不能归结于、或者等同于大数据。用大数据的几个V(Volume, Velocity, Variety, Veracity)来划分和把握数据科学的内容,或者用几个V来构造数据科学的内容体系,是很成问题的。首先,数据科学是关于数据的科学,不管是大数据、中数据、还是小数据,都是它研究的对象。另外,大数据的大(大数据还有其它特点)是一个相对的概念,今年的大不一定是明年的大。现在已经大得不得了的数据,复杂得不得了的数据,过几年随着计算机存储和计算能力的提升,变得如此普通平常。当我们有办法应对大数据的几个V的挑战,我们无需再强调大数据的所谓大,而是强调数据和数据的价值,强调挖掘数据价值的方法。
但是,数据科学应该包含大数据的相关内容,我们应该对相关的技术有一个基本了解。对于大数据工具Hadoop/Spark,以及流数据处理的基本原理的更为深入的掌握,数据科学概论课程不应承担,应该放在专门的专业课或者选修课里面。
4.2 实践环节——示例(综合案例)、小练习、大作业
《数据科学概论》强调实践性,学生需要通过一系列实际操练,才能深刻理解所学的内容。在实践方面,包括三个方面,分别是示例、小练习、大作业。
我们提供一系列示例,涵盖某个或者某些知识点。这些示例从数据和代码量来讲,规模一般很小,容易运行,很快看到结果,还可以改改,看看其不同效果,有利于学生深入理解和掌握各个知识点。如果示例的规模太大,代码很长,学生不容易运行起来,结果遥遥无期,挫折紧跟着挫折,不利于学生迅速获得成就感。
光有这些示例是不够的,我们培养数据科学家目的,是让他们能够综合运用所学知识,解决实际业务中更复杂的问题。综合案例把数据的采集和准备、数据的清洗和集成(包括多源异构集成、多模态数据融合)、数据的探索、数据的建模、模型的训练与运用、以及分析结果的可视化和解释等完整的流程勾连起来,培养学生全流程的能力。
从学生的角度,需要完成一系列小练习,巩固对各个知识点的掌握。此外,完成1-2次大作业,大作业最大的特点是综合性。学生要发挥其主动性和能动性,创造性地运用所学的各个知识点,形成技术方案,分析数据解决问题,完成既定的业务目标。使得学生学会使用工具,并且结合具体业务问题,培养初步的工程经验。
4.3教学计划
表1展示了一个教学计划,对上述设想进行了细致安排,给出了必备教学辅助材料,请读者参考。
表1. 教学计划
* 请用PC浏览器打开本网页
* 微云下载:使用手机微信扫描网页二维码登录下载
* 飞书下载:在网页上注册并且登录飞书账号下载
周次 |
内容(每周3个课时或者4个课时) |
示例(见压缩包) |
小练习(见压缩包) |
大作业、补充材料、备注 |
1 |
|
0.运行、掌握提供之示例 |
|
|
2 |
|
1.pandas示例 2.numpy示例 |
0.运行、掌握提供之示例;在EDA练习中灵活运用numpy和pandas |
|
3 |
0104-数据模型、数据探索与数据预处理(链接) (链接2)
|
1. EDA示例:分类 2. EDA示例:回归 3. EDA示例:聚类 |
0.运行、掌握提供之示例 1. penguin/ IRIS EDA 2.Oil well EDA 3.customer churn EDA |
|
4 |
|
1.S-SC-C学生选课示例/银行核心系统示例 2.销售数据OLAP示例 |
0.运行、掌握提供之示例 1.SSB-1GB数据集OLAP练习 2. IMDB Top250 OLAP练习 |
如果课时较少,可以删除OLTP以及OLAP部分;从第4周开始机器学习内容 |
5 |
||||
4 |
0301-分类:KNN、决策树、分类算法的评价(链接) (链接2) 0302-分类:Pre+梯度下降算法入门(链接) (链接2) 0302-分类:SVM(硬间隔、软间隔、梯度下降算法)(链接) (链接2) 0302-分类:SVM(原问题加上核函数技巧与梯度下降算法)(链接) (链接2) 0303+分类:(附加)+AdaBoost(链接) (链接2)这部分可选 0303+分类:(附加)逻辑斯蒂回归(链接) (链接2)这部分可选 0303+分类:(附加)逻辑斯蒂回归(核函数)(链接) (链接2)这部分可选 0304-回归:一元线性回归(解析解与梯度下降算法)(链接) (链接2) 0305-回归:多元线性回归(解析解与梯度下降算法)(链接) (链接2) 0305-回归:多元线性回归(正则化+核函数)(链接) (链接2)这部分可选 0307-神经网络入门、反向传播算法(基于一个简单的神经网络)(链接) (链接2) 0308-神经网络MLP二值分类、多类别分类、回归(不同损失函数,反向传播算法)(链接) (链接2)
|
1.KNN/决策树示例 2.SVM示例 3.一元线性回归示例 4.多元线性回归示例 5.k-means示例 6.GMM示例 7.神经网络二值分类示例 8. 神经网络多类别分类示例 9. 神经网络回归示例 |
0.运行、掌握提供之示例 1.信息增益计算、决策树代码分析与运行效果 2.SVM梯度下降算法公式推导、SVM self-implement代码分析与运行效果、self-implement vs. scikit learn 3.线性回归梯度下降算法的公式推导、线性回归self-implement代码分析与运行效果、self-implementation vs. scikit learn 4.GMM极大似然估计公式推导、1维/2维GMM self-implement代码分析与运行效果、K-Means vs. GMM比较 5.MLP神经网络的正向传导和反向传播公式推导、self-implement代码分析与运行效果
|
大作业1:量化交易(提供股票价格数据,划分训练集和测试集,同学们基于数据分析,进行交易决策,完成买卖交易,交易策略可以打榜) (1)进入机器学习模块即布置该大作业 (2)平时上机除了完成小练习,开始逐步完成大作业 |
5 |
||||
6 |
||||
7 |
||||
8 |
||||
9 |
0401-文本入门、regex与文本数据采集(链接) (链接2)regex与文本数据采集可选 0403-文本表示1:TF-IDF、SVD(链接) (链接2) 0403-文本表示1:(附加)NMF(链接) (链接2)这部分可选 0404-文本表示2: Word2Vector(链接) (链接2)这部分可选 |
1.采集示例(可选) 2.分词示例 3.文本表示TF-IDF/SVD示例 4.文本表示Word2Vector示例 5.文本分类示例 6.倒排索引、文本检索示例 |
0.运行、掌握提供之示例 1.政府工作报告分词与词云 2.TF-IDF 3.SVD vs. NMF 4.文本分类 5. 逐步完成大作业 |
大作业2:文本分析,可以选择如下不同数据集(可以事先准备好数据集,无需自行采集) (1)垃圾短信的分词、词云、分类、检索等;(2)餐馆点评的采集(可选)、分词、词云、情感分析、可视化、检索等;(3)电影评论的采集(可选)、分词、词云、情感分析、可视化、检索等(链接) (链接2) |
10 |
||||
11 |
||||
12 |
||||
13 |
0503-Hub & authority(链接) (链接2)这部分可选 0504-图的社区检测:Louvain算法&标签传播(LPA)(链接) (链接2) 0505-影响力最大化1:degree discount(链接) (链接2) 0507-(附加)图卷积神经网络(链接) (链接2)这部分可选
|
1.中心度示例 2.Page rank示例 3.Hub & authority示例 4.Louvain&LPA示例 5.GCN示例 |
0.运行、掌握提供之示例 1.Page rank 算法公式推导、Page rank self-implement与试验 2.Louvain模块度变化公式推导、Louvain算法实验(不同dataset)
|
继续完成前述大作业 |
14 |
||||
15 |
||||
16 |
||||
17 |
0601-Hadoop与Spark入门(链接) (链接2)这部分可选 复习与答疑 |
1.pagerank on spark实验(small dataset示例)这部分可选 |
1.pagerank on spark实验(larger dataset练习)这部分可选 |
|
18 |
期末考试 |
|
|
|
备注:大作业的选题来源,包括Kaggle大赛题目、国内大数据大赛赛题、企业应用等;主题可选结构化数据分析、文本分析、社交网络分析。
5.实验环境介绍
本机实验环境:学生可以在自己的笔记本电脑上安装和配置python编程环境、MySQL数据库、Neo4J桌面版等,相关实验包括OLTP/OLAP、Text、Social Network以及大作业,都可以在本机开展。
云平台实验环境:在Hadoop/Spark上完成大数据实验,比如SQL on Hadoop上的OLAP。由于Hadoop和Spark实验环境的建立相当复杂,需要耗费大量的时间。由助教(每个教学班配备2位助教)把实验环境预先建立好,无需同学们自行安装配置;只需要按照试验指导完成试验即可。
当数据集比较小,可以通过单机进行处理。如果数据集比较大,可以使用Hadoop和Spark平台进行处理。比如同样是OLAP实验,可以在单机上通过MySQL完成处理,也可以在Spark平台上通过Spark SQL完成处理。通过Hadoop和Spark平台处理大数据,正如前文所述,作为可选内容,不做强制要求。
6.考核办法
表2. 考核办法和比例
总评成绩100% |
期末考试成绩40% |
平时成绩60% |
|
|
|
考勤和课堂表现10% |
历次练习和两次大作业90%,包括EDA+ML练习、Text练习、Graph练习、大作业1、大作业2 |
总评成绩由期末考试成绩和平时成绩构成,期末考试成绩占40%,平时成绩占60%;平时成绩由历次练习和两次大作业、以及考勤和课堂表现构成,历次练习和两次大作业占平时成绩的90%,考勤和课堂表现占平时成绩的10%;任课老师还可以根据具体情况调整。
7. 致谢
本文是在和陈跃国、范举、徐君、李翠平、柴云鹏、窦志成、文继荣、杜小勇、王珊等老师讨论的基础上,进一步思考、整理、和丰富形成的,在此对各位老师表示感谢。
8. 后记
任课老师可以根据授课的课时数,对内容进行选择,对计划进行进一步的调整。
比如,在中国人民大学信息学院,由于学生后续有《数据库系统概论》专业课专门讲授关系数据库管理系统和SQL语言,所以Relational模块删除掉,把时间充实到其它模块。
9. 任课老师申请教材
任课老师可以下载如下申请表(链接) (链接2),填写相关信息后,向中国人民大学出版社申请教材。