数据科学概论Learning Road Map

2020.09.15version

此文档在线版也可以访问https://datascience.neocities.org/以及http://xiongpai.gitee.io/datascience/

《数据科学概论》的学习路线图(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、数组和计算库Numpy)的介绍。

    由于是概论课程,主要的目的是把同学们引进数据科学的大门,培养数据的感觉和兴趣,基础理论不宜讲的太深(可以放在后续专业课中深入介绍),而是偏向工具的使用和应用的开发,让学生迅速获得数据处理分析和数据价值的感觉

    Relational模块(3)依赖于关系数据库管理系统(MySQL)、SQL on Hadoop系统等工具(平台)、实现数据从生产系统向分析系统的抽取、转换和装载,以及后续的多维分析(OLAP)。这个模块的目的,是使得同学们熟悉关系模型和SQL语言。作为数据科学家,不熟悉SQL语言是不可想象的。

    在中国人民大学信息学院,由于学生后续有《数据库系统概论》专业课专门讲授关系数据库管理系统和SQL语言,所以Relational模块删除掉,把时间充实到其它模块。

    MLBasics模块(3)介绍数据模型和通用的数据分析方法入门、数据可视化等。有些老师更习惯在介绍各个模块比如文本处理的时候,适时地介绍一些机器学习方法。但是笔者更加倾向于专门安排时间,介绍这些数据分析方法,比如SVM方法,可以用于文本处理,也可以用于图片处理,单独介绍是合适的。重点对分类(Decision Tree, SVMNaïve Bayes)、聚类(K-MeansDBSCAN)、回归(线性回归和SVR)、和降维(SVDPCA)等类别的主流方法给予介绍。同时介绍Python的机器学习库scikit learn和可视化库matplotlib

    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 实践环节——知识点案例、综合案例、和开放实践课题

    《数据科学概论》强调实践性,学生需要通过一系列案例的实际操练,才能深刻理解所学的内容。在实践方面,包括三个方面,分别是知识点案例、综合案例、以及开放实践课题。

    知识点案例,从数据和代码量来讲,规模一般很小,容易运行,很快看到结果,还可以改改,看看其不同效果,有利于学生迅速把握各个知识点。如果案例的规模太大,代码很长,学生不容易运行起来,结果遥遥无期,挫折紧跟着挫折,不利于学生迅速获得成就感。

    光有知识点案例是不够的,我们培养数据科学家目的,是让他们能够综合运用所学知识,解决实际业务中更复杂的问题。培养的办法,就是从老师的角度“我做给你看,你做给我看

    “我做给你看,就是综合案例。

    综合案例把数据的采集和准备、数据的清洗和集成(包括多源异构、多模态数据集成)、数据的探索、数据的建模、模型的运用、以及分析结果的可视化和解释等完整的流程勾连起来,培养学生全流程的能力。但是从学生角度看,这也仅仅是看到别人怎么做的,跟着做了一遍,找找感觉。

    “你做给我看,就是开放实践课题。这些课题的规模和综合案例是相当的,没有标准的答案(可以有参考解决方案)。需要发挥学生的主动性和能动性,创造性地运用所学的各个知识点,形成方案,解决问题,完成既定的业务目标。

    这些实践,使得学生学会使用工具,并且结合具体业务问题,培养初步的工程经验。

4.3教学计划

    表1展示了一个可行的教学计划,给出了时间安排以及辅助材料,请读者参考。

1. 教学计划

周次

模块

上课(理论讲解/案例讲解)

上机(已有案例/上机练习)

说明

所属模块

每周2次课,每次2个课时。

老师不仅进行理论讲解,还适当讲解一些案例。

每周3个小时上机时间。

同学们通过一些案例(提供代码)的运行和分析,熟悉相关技术。在此基础上完成老师布置的上机练习。

1

概论

内容:

1.课程介绍

2.数据科学的成功案例

3.数据科学概论

 

支撑的章节与资源:

1.课程介绍 PPT 

2.数据科学案例PPT

3.数据科学概论 PPT

第1周不用上机。

同学们可以先行熟悉Python安装配置。

1.《Win 10上安装配置Python2.7, keras, theano, opencv》

2.《Win 10的Python2.7下建立Python3.5环境env》

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

 

1.Win 10上mysql安装与配置

2.SQL入门

3.OLTP实验指导

4.OLAP实验指导

5. MySQL事务处理与可视化

Python查询MySQL与结果可视化

Python MySQL Transaction

Python Insert and Select

6. SSB(Star Schema Benchmark)实验

老师讲解SSB模型SSB查询

助教利用SSB DBGen生成SSB csv数据文件。学生在MySQL上(必选)或者Spark SQL上(可选,需要助教安装配置好SparkSQL环境)完成SSB实验,包括数据导入和查询实验,并撰写实验报告。(指定练习,完成情况记入最终成绩)SSB Experiment Reference

 

开始布置大作业(指定选题或者自由选题,自由选题要和指定选题难度相当)。并且在期末完成实验报告和Presentation。

大作业考察同学们综合运用所学知识,解决实际业务的问题的能力。

采用3人小组的组织形式完成。

7

8

9

MLBasics

内容:

1.数据模型

2.通用的数据分析方法

部分scikit learn基础案例和附加案例(参见右边)

3.数据可视化

部分matplotlib基础案例(参见右边)

 

支撑的章节与资源:

1.数据模型初步 PDF

2.数据的复杂分析 PPT

3.数据可视化、可视分析、与探索式数据分析 PPT

4.Scikit learn BASIC PDF

scikit-learn_BASIC PPT

5.Matplotlib BASIC PDF

matplotlib_BASIC PPT

 

备注:重点讲数据模型和数据分析方法,可视化部分可以分配较少时间。

基础案例

1.Python_scikit-learn_BASIC code

2.Python_matplotlib_BASIC code

 

Addon案例

分类

1.decisiontree_man and woman

2.RandomForest_cusomerChurn

3.knn_iris

4.svm_digits

5.nb_diseases

6.LogisticRegression_titanic

聚类

1.kmeans_synthetic

2.kmeans_thek

3.kmeans_ussenator

6.DBSCAN

7.AgglomerativeClustering

8.AgglomerativeClustering_viz

9.em_height

10.gmm_synthetic_3D

回归

1.LinearRegression_boston

2.LinearRegression_statsmodels

关联

1.AssociationRules_synthetic

2.AssociationRules_OnlineRetail

推荐

1.recommend_cf_synthetic

2.recommend_svd  

集成

1.adaboost_digits

2.ensemble_pima-indians-diabetes

3. VotingClassifier

深度学习

1.mlp_mnist

2.cnn_mnist

4.rnn_lstm_simple_stacked

5.rnn_deep_bidirectional

6.lstm_deep_bidirectional

模型评价、参数优化

1.classification_model_evaluation

2.GridSearch_SVC_iris

3.GridSearch_LR_iris

4.GridSearch_RandomForestLR_iris

5.RandomSearch_LR_iris

预处理

1.Normalization Standardization Binarizer Binning

2.pca_iris_visualization

3.pca_mnist_machinelearning

4.tsne_digits

5. label_preprocessing

特征选择

1.feature_selection

杂项

1.keras_save_load_model

10

11

12

Text

内容:

1.文本分析原理

2.NLTK案例

讲解部分基础案例/附加案例(参见右边)

3.Twitter情感分析与可视化

4.中文分词与中文情感分析

 

支撑的章节与资源:

1.文本分析 PPT

2.NLTK BASIC 案例PDF

nltk_BASIC 案例PPT

3. Twitter情感分析,使用现成分类器

4. Twitter情感分析,自行训练分类器

5. Twitter情感分析与可视化综合案例

6. 中文分词中文情感分析案例

 

备注:NLTK案例及附加案例用于巩固各个知识点。而Twitter案例则引导同学们解决实际问题。

基础案例

1.Python_nltk_BASIC Code

 

附加案例

1.svm_sentiment

2.nltk_sklearn_sentiment 

3.cnn_imdb_sentiment

4.lstm_imdb_sentiment

5.nb_spam_simple

6.svm_nb_spam

7.logisticRegression_spam

8.MultinomialNB_20newsgroups 

 

9.kmeans_text_clustering

10.kmeans_text_clustering_viz

 

11.gensim_lda_topicModeling 

12.gensim_word_embedding 

 

综合案例

1.Twitter情感分析,使用现成分类器

2.Twitter情感分析,自行训练分类器

3.Twitter情感分析与可视化综合案例

4.中文分词中文情感分析案例

(指定练习,完成情况记入最终成绩)

13

14

15

Graph

内容:

1. 社交网络分析原理

2. Python NetworkX案例

讲解部分基础案例/附加案例(参见右边)

3.Neo4J入门与案例

 

支撑的章节与资源:

1.社交网络分析PPT

2.NetworkX BASIC PDF

NetworkX_BASIC PPT

3. Neo4j Basics and CQL

Neo4J Centrality

Neo4J Community Detection

Neo4j Path Finding

Neo4j Similarity Algorithms

Neo4J Link Prediction Algorithms

 

备注:数据规模小用NetworkX进行分析,数据规模大用Neo4J进行分析。

基础案例

1.NetworkX_BASIC Code

 

附加案例

1.network_centrality 

2.network_centrality2 

3.network page rank

4.network_degree_histogram  

5.network_shortest_path 

6.network_minimum_span_tree 

7.network_community  

8. networkx_link_prediction

9. networkx_propertygraph

 

Neo4J案例

1. Neo4j Basics and CQL

2. Neo4J Centrality

3. Neo4J Community Detection

4. Neo4j Path Finding

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等。量化交易、图像检索和自动驾驶的选题,偏离本课程重点讲授的内容太远,建议围绕结构化数据分析、文本、图(社交网络)来选择选题。结构化数据分析可以从属于文本或者图数据处理任务,比如文本分析的结果,以结构化的形式保存到关系数据库中,然后用SQL查询实现报表和图表形式的可视化。

    2.评测基准PPT、语义网与知识图谱PPT时间序列分析PDF轨迹数据分析PDF数据科学实践PPT等章节不做强制要求,同学们可以选学。

    3.Online Chapters

    时间序列分析 PDF

    轨迹数据分析 PDF

    流数据处理PDF

    云计算平台PDF

    评测基准PDF

    数据科学实践PDF

 

5.实验环境介绍

    本机实验环境:学生可以在自己的笔记本电脑上安装和配置python编程环境、MySQL数据库、Neo4J桌面版等,相关实验包括OLTP/OLAP、Text、Social Network,都可以在本机开展。

    云平台实验环境:在Hadoop/Spark上完成大数据实验,比如SQL on Hadoop上的OLAP。由于HadoopSpark的实验环境的建立相当复杂,需要耗费大量的时间。助教(每个教学班配备2位助教)应该把实验环境预先建立好,无需同学们自行安装配置。(感兴趣的同学可以自行安装和配置Hadoop/Spark,自己折腾、折腾很有好处)。通过云平台来创建实验环境,一般可以建立3台虚拟机构成的集群。如果硬件条件许可,每个同学独享3个虚拟节点构成的集群;否则可以限定若干同学共享一个虚拟集群。

    当数据集比较小,可以通过单机进行处理。如果数据集比较大,可以使用Hadoop和Spark平台进行处理。比如同样是OLAP实验,可以在单机上的通过MySQL完成处理,也可以在Spark平台上通过Spark SQL完成处理。在时间允许的情况下,可以考虑在两个环境下都完成实验。

 

6.考核办法

表2 考核办法和比例

平时

OLTP/OLAP实验

ML实验

TEXT实验

Graph实验

期中考试

自由选题大作业

期末考试

10%

10%

10%

10%

10%

10%

20%

20%

    期末的总评成绩由7个部分构成,具体如表2所示。

 

7.致谢

    本文是在和陈跃国、范举、徐君、李翠平、柴云鹏、窦志成、文继荣、杜小勇、王珊等老师讨论的基础上,进一步丰富形成的。在此对各位老师表示感谢。

 

8. 后记

    任课老师可以根据授课的课时数,对上述教学计划进行进一步的调整。

    比如,在中国人民大学信息学院,由于学生后续有《数据库系统概论》专业课专门讲授关系数据库管理系统和SQL语言,所以Relational模块删除掉,把时间充实到其它模块。

 

9. 任课老师申请教材

    任课老师可以下载如下申请表,填写相关信息后,向出版社申请教材。

 

10. 附加资源

    请访问附加资源

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页