备注:资源短时间内下载数量过多,网站会限制下载(下载失败),过一段时间再下载即可。
数据科学概论Learning Road Map
本书第一版出版后,引起了大量的关注。任课老师纷纷表示,愿意使用该教材开设《数据科学概论》课程。
在和一些老师的沟通和交流中,了解到他们面临的主要问题是,内容稍微有点多,全部讲下来不容易;如果全部讲下来,则面面俱到,不容易讲清楚,没有重点。
应该对内容有所挑选,给使用本书的老师和同学一个学习路线图,给出本书内容是如何支撑这个学习路线图的指导。
为此,本书作者梳理了数据科学概论课程的目标;对本书内容进行了仔细分析,按照数据科学概论课程目标的要求,把内容划分为必学内容和选学内容,并且给出如下的教学大纲。
1.教材承担内容体系——宽广的视野
本书的内容不做删减,并且在第二版本中进行修正和丰富,体现了数据科学应有的知识体系、和知识点之间应有的联系,有利于学生展开宽广的视野。
我们认为在内容体系方面,数据科学概论由理论部分和应用部分构成。形成两条线索,两个T型,如图1所示。
图1. 《数据科学概论》内容体系
理论部分,先由浅入深,再宽度展开,旨在培养学生宽广的视野,形成完整的知识体系。应用(实践)部分,先宽度展开,再深入某个应用领域(政府、金融、电商、互联网等),旨在培养学生的动手能力和浓厚兴趣。理论部分解决“所以然”的问题,而应用部分解决“然”的问题。我们既要知其然,也要知其所以然。
2.教学大纲给出有重点的学习路线图 ——有重点、有路线
与此同时,如下的教学大纲,将对内容有所选择,做减法,突出重点。有利于老师把相关内容讲的更加细致清楚,同学们理解得更加透彻,并且有充分的动手实践的时间安排,用一系列案例,切实培养数据的感觉,实现教学目标。没有在课程中讲授的内容,学生可以自行选择学习。
3.课程定位与教学目标
数据科学家是大数据时代最急需的人才,他们应具有宽广的视野,同时具有扎实的理论和技术功底。数据科学专业的整个课程体系,涵盖一系列基础课程包括数学课程、计算机课程,以及一系列专业课程,为最终培养能够解决复杂业务问题的合格的数据科学家服务。
在整个课程体系中,“数据科学概论”的定位是一门入门和统领式的课程,把学生引进数据科学的大门。它的目标有两个,一个是展开宽广的视野和培养浓厚的兴趣;另外一个是打下坚实的基础。概论课程的学习,有利于学生学习后续课程,有利于培养新一代数据科学家。
该课程一般在大二下学期开设。在该时点,学生已经学习必备的数学知识和编程基础,可以开始该课程的学习。而学完这门课,则为大三的专业课学习,打下必要的基础。
在教学目标方面,突出两个方面,一个是掌握数据分析的基本思路、基本理论与基本方法,一个是实践应用能力培养,即面向不同行业的实际应用需求,能够给出数据解决方案并最终实现它。
难度方面,该门课程定位为入门的课程,目的是培养学生浓厚的兴趣,难度上要降低,对算法的数学基础和推导过程的把握,由后续的各门专业选修课程来承担,本门课程仅要求了解基本原理。加强实践环节,要求同学们熟练掌握主流工具,完成数据管理和分析全流程的实践,切实培养学生的动手(编程)能力。
4.教学内容和教学计划
教学计划,对教师而言就是教学的行动指南;对学生而言,则是学习的路线图。
4.1教学内容模块化
“数据科学概论”是一门入门性质的课程,内容安排时需要注意取舍,达到广度和深度的平衡。既要避免泛泛而谈、没有重点,也要避免只及一点、不及其余。
从广度上来讲,要帮助学生构建起一个完整的知识体系。在理论部分,包括数据科学的基本概念、技术和方法,数据的不同类型,数据处理的流程和数据的生命周期,数据处理的不同模式,数据分析的主要方法等。其中数据的类型是丰富多样的,包括文本、社交网络、时间序列、轨迹数据、音频/图像和视频等。在应用部分,包括数据处理的基础设施、平台和各种工具,以及一系列成功案例。
内容如此繁多,在深度上,只能选择几个专题进行深入的介绍。在介绍完数据科学的基本概念、技术和方法、以及主要的数据类型及其分析方法之后,可以选择某几种具体的数据类型,进行深入的介绍。在内容方面删繁就简,突出结构化数据分析、文本分析、和图数据(社交网络)分析三大块。
实践部分,设计一系列案例,要求学生结合实际数据,进行上机实践。包括指定练习、和自由选题两个部分。自由选题,题目来自各个大赛赛题或者企业应用,发挥学生的能动性,解决实际问题。
为此,教学内容分为如下几大模块,模块的规模不尽相同,各个模块及时间分配如图2所示。
图2. 数据科学概论课程教学内容的各个模块
概论(1周):主要介绍数据科学的基本概念、大数据及其价值、数据处理的全生命周期,包括数据的采集和获取、数据预处理/清洗和集成(Preprocessing)、数据管理(Management)、数据分析(Analysis)、可视化(Visualization)和解释等。
Python(2周):Python语言部分,包括Python语言基础,以及Python的几个重要的库(包括数据预处理库pandas、机器学习库scikit-learn、可视化库matplotlib)的介绍。重点讲Pandas库。
由于是概论课程,主要的目的是把同学们引进数据科学的大门,培养数据的感觉和兴趣,基础理论不宜讲的太深(可以放在后续专业课中深入介绍),而是偏向工具的使用和应用的开发,让学生迅速获得数据处理分析和数据价值的感觉。
Relational模块(3周):依赖于关系数据库管理系统(MySQL)、SQL on Hadoop系统等工具(平台)、实现数据从生产系统向分析系统的抽取、转换和装载,以及后续的多维分析(OLAP)。这个模块的目的是使得同学们熟悉关系模型和SQL语言,作为数据科学家,不熟悉SQL语言是不可想象的。
MLBasics模块(3周):介绍数据模型和通用的数据分析方法入门、数据可视化等。有些老师更习惯在介绍各个模块比如文本处理的时候,适时地介绍一些机器学习方法。但是笔者更加倾向于专门安排时间,介绍这些数据分析方法,比如SVM方法,你可以用于文本处理,也可以用于图片处理,单独介绍是合适的。
Text模块(3周),依赖于分布式的大数据处理平台和分析工具,包括NLTK, scikit learn等,使用各种文本分析方法,对文本进行分词、索引与检索、实体识别、情感分析、话题发现、可视化等。对于文本检索,老师可以讲解一两个Lucene例子。
Graph模块(3周),依赖于Python NetworkX、或者Neo4J数据库(如果时间有限,可以仅仅限于NetworkX的介绍),对图数据进行创建、查询、Page Rank计算、路径分析、社区检测等分析。
Relational模块、Text模块、Graph模块都带有很强的实践性,除了理论介绍之外,主要介绍工具的使用和应用案例。老师在讲解原理、方法、工具的基础上,布置一系列命题上机作业。要求学生熟练使用上述平台和工具,对数据集进行处理、分析和可视化,并且解释结果,体现数据的价值。
Platform模块(1周):简单介绍云计算平台,大数据工具Hadoop/Spark,以及流数据处理的基本原理。对分布式计算与大数据平台(Hadoop & Spark)、数据处理的不同模式(批处理和流式处理)有所了解。但是这不是本门课程的重点。
数据科学不能归结于或者等同于大数据。用大数据的几个V(Volume, Velocity, Variety, Veracity)来划分和把握数据科学的内容,或者用几个V来构造数据科学的内容体系,是很成问题的。首先,数据科学是关于数据的科学,不管是大数据、中数据、还是小数据,都是它研究的对象。另外,大数据的大(大数据还有其它特点)是一个相对的概念,今年的大,不一定是明年的大。现在已经大得不得了的数据,复杂得不得了的数据,过几年随着计算机系统存储和计算能力的提升,变得如此普通平常。当我们有办法应对大数据的几个V的挑战,我们无需再强调大数据的所谓大,而是强调数据和数据的价值。
但是,数据科学应该包含大数据,所以我们应该对相关的技术有一个基本了解;对于大数据工具Hadoop/Spark,以及流数据处理的基本原理的更为深入的掌握,数据科学概论是无力承担的,应该放在专门的专业课或者选修课里面。
4.2 实践环节——知识点案例、综合案例、和开放实践课题
《数据科学概论》强调实践性,学生需要通过一系列案例的实际操练,才能深刻理解所学的内容。在实践方面,包括三个方面,分别是知识点案例、综合案例、以及开放实践课题。
知识点案例,从数据和代码量来讲,规模一般很小,容易运行,很快看到结果,还可以改改,看看其不同效果,有利于学生迅速把握各个知识点。如果案例的规模太大,代码很长,学生不容易运行起来,结果遥遥无期,挫折紧跟着挫折,不利于学生迅速获得成就感。
光有知识点案例是不够的,我们培养数据科学家目的,是让他们能够综合运用所学知识,解决实际业务中更复杂的问题。培养的办法,就是从老师的角度“我做给你看,你做给我看”。
“我做给你看”,就是综合案例。综合案例把数据的采集和准备、数据的清洗和集成(包括多源异构、多模态数据集成)、数据的探索、数据的建模、模型的运用、以及分析结果的可视化和解释等完整的流程勾连起来,培养学生全流程的能力。但是从学生角度看,这也仅仅是看到别人怎么做的,跟着做了一遍,找找感觉。
“你做给我看”,就是开放实践课题。这些课题的规模和综合案例是相当的,没有标准的答案(可以有参考解决方案)。需要发挥学生的主动性和能动性,创造性地运用所学的各个知识点,形成方案,解决问题,完成既定的业务目标。这些实践,使得学生学会使用工具,并且结合具体业务问题,培养初步的工程经验。
4.3教学计划
表1. 教学计划
|
周次 |
模块 |
上课(理论讲解/案例讲解) |
上机(已有案例/上机练习) |
|
说明 |
所属模块
|
每周2次课,每次2个课时。 老师不仅进行理论讲解,还适当讲解一些案例。 |
每周3个小时上机时间。 同学们通过一些案例(提供代码)的运行和分析,熟悉相关技术。在此基础上完成老师布置的上机练习。 |
|
1 |
概论 |
内容: 1.课程介绍 2.数据科学的成功案例 3.数据科学概论
支撑的章节与资源: 1.课程介绍 PPT 2.数据科学案例PPT 3.数据科学概论 PPT |
第1周不用上机。 同学们可以先行熟悉Python安装配置。 |
|
2 3 |
Python |
内容: 1.Python编程入门 2.Pandas入门
支撑的章节与资源: 1.Python Basic PPT 2.Python Pandas PPT |
1.Python_Basic Code 2.Python_Pandas Code |
|
4 5 6 |
Relational |
内容: 1. OLTP与数据服务 2. MySQL安装 3. SQL初步 4. OLTP实验指导 5. OLAP与多维分析,星型模型与ROLAP 6. OLAP实验指导 7. SSB数据模型与SQL查询 8. SSB实验指导
支撑的章节与资源: 1.OLTP与数据服务 PPT 2.OLAP与结构化数据分析PPT 3.数据清洗与数据集成 PPT
备注:OLTP实验参考可以去掉。 |
2.SQL入门 3.OLTP实验参考 4.OLAP实验参考 6. SSB(Star Schema Benchmark)实验 助教利用SSB DBGen生成SSB csv数据文件。学生在MySQL上(必选)或者Spark SQL上(可选)完成SSB实验,包括数据导入和查询实验,并撰写实验报告。(指定练习,完成情况记入最终成绩)SSB Experiment Reference
开始布置“自由选题”大作业。并且在期末完成实验报告和Presentation。大作业考察同学们综合运用所学知识,解决复杂的问题的能力。采用3人小组的组织形式完成。(题目来源请参考备注) |
|
7 8 9 |
MLBasics |
内容: 1.数据模型 2.通用的数据分析方法 部分scikit learn/ Keras基础案例和附加案例(参见右边) 3.数据可视化 部分matplotlib基础案例(参见右边)
支撑的章节与资源: 1.数据模型初步 PDF 2.数据的复杂分析 PPT 3.数据可视化、可视分析、与探索式数据分析 PPT
备注:重点讲数据模型和数据分析方法,可视化部分可以分配较少时间。 |
基础案例 1.Python_scikit-learn_BASIC code 部分案例 2.Python_matplotlib_BASIC code 部分案例
附加案例 分类 3.knn_iris 聚类 6.DBSCAN 回归 2.LinearRegression_statsmodels 关联 2.AssociationRules_OnlineRetail 推荐 集成 2.ensemble_pima-indians-diabetes 深度学习 模型评价、参数优化 1.classification_model_evaluation 4.GridSearch_RandomForestLR_iris 预处理 1.Normalization Standardization Binarizer Binning 特征选择 杂项 |
|
10 11 12 |
Text |
内容: 1.文本分析原理 2.NLTK案例 讲解部分基础案例/附加案例(参见右边) 3.Twitter情感分析与可视化 4.中文分词与中文情感分析
支撑的章节与资源: 1.文本分析 PPT 5. Twitter情感分析与可视化综合案例
备注:NLTK案例及附加案例用于巩固各个知识点。而Twitter案例则引导同学们解决实际问题。 |
基础案例 部分案例
附加案例
综合案例 3.Twitter情感分析与可视化综合案例 (指定练习,完成情况记入最终成绩) |
|
13 14 15
|
Graph |
内容: 1. 社交网络分析原理 2. Python NetworkX案例 讲解部分基础案例/附加案例(参见右边) 3.Neo4J入门与案例
支撑的章节与资源: 1.社交网络分析PPT Neo4J Link Prediction Algorithms
备注:数据规模小用NetworkX进行分析,数据规模大用Neo4J进行分析。 |
基础案例 部分案例
附加案例 3.network page rank
Neo4J案例 5. Neo4j Similarity Algorithms 6. Neo4J Link Prediction Algorithms (指定练习,完成情况记入最终成绩) |
|
16 |
Platform |
内容: 1.云计算 2.Hadoop平台及其生态系统 3.Spark平台及其生态系统 4.流数据处理技术
支撑章节与资源: 1.云计算平台 PPT 2.Hadoop及其生态系统 PPT 3.Spark及其生态系统 PPT 4.流数据处理 PPT
备注:本部分内容较多,时间有限,老师只需讲解基本原理即可。也可以考虑把本部分去掉。 |
指定练习(助教给出实验指导): 1.完成MapReduce Word Count练习 2.完成Storm Rolling Word Count练习 3. OLAP实验可以在MySQL上完成(必选),也可以在SparkSQL上完成(可选)。
备注:Hadoop/Spark实验环境由助教建立好,同学无需安装,直接按照实验指导,使用这些分布式实验环境即可。 |
|
17 |
Presentation |
自由选题大作业Presentation,并且提交实验报告。 |
|
|
18 |
Test |
考试周 |
|
备注:
1.大作业题目来源,包括Kaggle大赛题目、国内大数据大赛赛题。主题可选文本分析、社交网络分析,也可以选择图像检索、量化交易、自动驾驶中的Object Detection等。图像检索、量化交易和自动驾驶的选题,偏离本课程重点讲授的内容太远,建议围绕Relational、文本、图(社交网络)来选择选题。Relational可以从属于文本或者图数据处理任务,比如文本分析的结果,以结构化的形式保存到关系数据库中,后期用SQL查询实现报表和图表。
2.评测基准PPT、语义网与知识图谱PPT、时间序列分析PDF、轨迹数据分析PDF、数据科学实践PPT等章节不做强制要求,同学们可以选学。
5.实验环境介绍
本机实验环境:学生可以在自己的笔记本电脑上安装和配置python编程环境、MySQL数据库、Neo4J桌面版等,相关实验包括OLTP/OLAP、Text、Social Network,都可以在本机开展。
云平台实验环境:在Hadoop/Spark上完成大数据实验,比如SQL on Hadoop上的OLAP。由于Hadoop和Spark的实验环境的建立相当复杂,需要耗费大量的时间。助教(每个教学班配备2位助教)应该把实验环境预先建立好,无需同学们自行安装配置。(感兴趣的同学可以自行安装和配置Hadoop/Spark,自己折腾、折腾很有好处)。通过云平台来创建实验环境,一般可以建立3台虚拟机构成的集群。如果硬件条件许可,每个同学独享3个虚拟节点构成的集群;否则可以限定若干同学共享一个虚拟集群。
当数据集比较小,可以放在一台机器上。如果数据集比较大,可以使用Hadoop和Spark平台保存和处理。比如同样是OLAP实验,可以在本机上的MySQL上完成,也可以在Spark SQL上完成。在时间允许的情况下,可以考虑在两个环境下都完成实验。
6.考核办法
表2 考核办法和比例
|
平时 |
OLTP/OLAP实验 |
TEXT实验 |
Graph实验 |
期中考试 |
自由选题大作业 |
期末考试 |
|
10% |
10% |
10% |
10% |
10% |
20% |
30% |
期末的总评成绩由7个部分构成,具体如表2所示。
7.致谢
在和陈跃国、李翠平、柴云鹏、徐君、窦志成、文继荣、杜小勇、王珊等老师讨论的基础上,进一步丰富,形成本文。在此表示感谢。
8. 后记
任课老师可以根据授课时间对上述教学计划进行进一步的调整。