數據科學是一門正在興起的學科,國內外各個大學開始開設數據科學課程或類似課程,并且編寫配套教材。我們的教材在內容上按照四大模塊進行組織,分別是數據科學基礎、數據以及數據上的計算(分析)、數據處理基礎設施/平臺和工具、以及大數據的案例和實踐。我們認為這樣的組織,使得內容體系相對完整。
覃雄派(1971?),男,博士,中國人民大學信息學院講師、碩士生導師,目前主要從事高性能數據庫、大數據分析、信息檢索等方面的研究工作,主持1項國家自然科學基金面上項目,參與多項國家863計劃、973計劃及國家自然科學基金項目,在國內外期刊和會議上發表論文20余篇。
陳躍國(1978?),男,博士,中國人民大學信息學院副教授、博士生導師,中國計算機學會高級會員,數據庫專家委員會委員,大數據專家委員會通信委員,Frontiers of Computer Science青年編委,主要研究方向為大數據分析系統和語義搜索。主持國家自然科學基金項目2項,廣東省科技應用重大專項1項,參與多項國家核高基(核心電子器件、高端通用芯片及基礎軟件產品)、973計劃、863計劃項目,近年來在SIGMOD、SIGIR、ICDE、AAAI、IEEE TKDE、WWW等國際重要期刊和會議上發表論文30余篇
杜小勇(1963?),男,博士,中國人民大學信息學院教授,博士生導師,教育部數據工程與知識工程重點實驗室主任,中國計算機學會會士,《大數據》期刊編委會副主任。主要研究方向為智能信息檢索、高性能數據庫、知識工程。主持和參與多項國家核高基(核心電子器件、高端通用芯片及基礎軟件產品)、973計劃、863計劃、國家自然科學基金項目,近年來在SIGMOD、VLDB、AAAI、IEEE TKDE等國際重要期刊和會議上發表論文百余篇。
理論篇//
1數據科學概論
1.1數據科學的定義
1.2數據科學的定位
1.2.1數據科學與數據庫、大數據分析的關系
1.2.2數據科學與基于數據的決策的關系
1.3數據科學家
1.3.1數據科學家的技能
1.4數據科學的基本原則(Principle)
1.4.1原則1:數據分析可以劃分成一系列明確的階段
1.4.2原則2:描述性分析與預測性分析
1.4.3原則3:實體的相似度
1.4.4原則4:模型的泛化能力
1.4.5原則5:分析結果的評估與特定應用場景有關
1.4.6原則6:相關性不同于因果關系
1.4.7原則7:通過并行處理提高數據處理(分析)速度
1.5數據處理流程:時間維度的縱向視角
1.6數據處理系統的架構:系統維度的計算視角
1.6.1數據處理系統的層次架構
1.6.2數據處理系統的Lambda架構
1.7數據的多樣性:數據類型維度的橫向視角
1.8數據價值的挖掘:價值維度的價值提升視角
1.9思考題
2OLTP與數據服務
2.1面向OLTP應用的RDBMS數據庫技術
2.1.1關系數據庫技術與SQL查詢語言
2.1.2利用索引加快數據訪問
2.1.3數據庫的事務處理、恢復技術與安全保證
2.1.4并行數據庫與分布式數據庫
2.2面向數據服務的NoSQL數據庫技術
2.2.1NoSQL數據庫技術
2.2.2CAP理論
2.2.3Key-Value數據庫
2.2.4Column Family數據庫
2.2.5Document數據庫
2.2.6Graph數據庫
2.3NewSQL數據庫技術
2.3.1VoltDB數據庫
2.3.2Google Spanner數據庫
2.4思考題
3OLAP與結構化數據分析
3.1聯機分析處理(OLAP)與結構化數據分析
3.1.1從操作型的業務數據庫向數據倉庫抽取、轉換和裝載數據
3.1.2數據倉庫與星型模型
3.1.3聯機分析處理OLAP
3.1.4三種類型的OLAP系統
3.2高性能OLAP系統的關鍵技術
3.2.1列存儲技術
3.2.2位圖索引技術
3.2.3內存數據庫技術
3.2.4MPP并行數據庫
3.3結構化數據分析工具介紹
3.3.1MPP(Shared-Nothing)數據庫、基于列存儲的關系數據庫
3.3.2SQL on Hadoop系統
3.3.3性能比較
3.4思考題
4數據清洗與數據集成
4.1數據抽取、轉換與裝載
4.2數據清洗
4.2.1數據清洗的意義
4.2.2數據異常的不同類型
4.2.3數據質量
4.2.4數據清洗的任務和過程
4.2.5數據清洗的具體方法
4.3數據集成
4.3.1數據集成
4.3.2數據集成需要解決的問題異構性(Heterogeneity)
4.3.3數據集成的模式
4.3.4實體解析(Entity Resolution)
4.4思考題
5數據的深度分析(數據挖掘、機器學習)
5.1機器學習與數據挖掘簡介
5.2主流機器學習與數據挖掘方法
5.2.1決策樹
5.2.2聚類算法K-Means
5.2.3分類算法支持向量機SVM
5.2.4關聯規則分析(Association Rule Analysis)Apriori算法
5.2.5EM(ExpectationMaximization)算法
5.2.6協同過濾推薦算法(Collaborative Filtering Recommendation)
5.2.7kNN(k近鄰)算法
5.2.8樸素Bayes(Naive Bayes)算法
5.2.9AdaBoost算法
5.2.10線性回歸、Logistic回歸
5.2.11神經網絡與深度學習(Neural Network and Deep Learning)
5.2.12特征選擇
5.3主流數據深度分析工具
5.3.1Mahout系統
5.3.2Spark MLlib系統
5.3.3Weka系統
5.3.4R系統與語言
5.3.5SPSS與Matlab
5.3.6深度學習工具TensorFlow, Caffe
5.4思考題
6流數據處理
6.1流數據處理應用
6.2流式處理(Stream Processing)和批處理(Batch Processing)的區別
6.3流數據模型
6.4流數據上的查詢實例
6.5流數據處理系統的查詢處理
6.5.1內存需求(Memory Requirement)
6.5.2近似查詢結果(Approximate Query Answering)
6.5.3滑動窗口(Sliding Window)
6.5.4查詢數據流的歷史數據(Referencing Past Data)
6.5.5多查詢優化與查詢計劃的適應性
6.5.6堵塞操作符(Blocking Operator)
6.5.7數據流里的時間戳(Timestamps in Stream)
6.5.8批處理(Batch Processing)、采樣(Sampling)、梗概(Synopsis)
6.6查詢處理的基礎算法
6.6.1隨機采樣(Random Sample)
6.6.2梗概技術(Sketch Technique)
6.6.3直方圖(Histogram)
6.6.4小波(Wavelet)分析
6.6.5布隆過濾器(Bloom Filter)
6.6.6計數最小梗概(Count-Min Sketch)
6.7流數據處理系統
6.7.1Storm簡介
6.7.2其它流數據處理系統
6.8思考題
7文本分析
7.1文本分析的意義
7.2文本分析的任務和方法
7.2.1句子切分、分詞、詞性標注、語法分析
7.2.2文本索引和檢索(Indexing and Search)
7.2.3文本分類(Text Classification)
7.2.4文本聚類(Text Clustering)
7.2.5文檔摘要(Document Summarization)
7.2.6主題抽取(Topic Theme Extraction)
7.2.7命名實體識別、概念抽取和關系抽取、事實抽取
7.2.8情感分析(Sentiment Analysis)
7.2.9其它文本分析任務與方法
7.3文本分析可視化
7.3.1標記云(Tag Cloud,也叫Word Cloud)
7.3.2詞共現分析與可視化(Co-Word Analysis & Visualization)
7.4文本分析軟件和工具
7.4.1NLTK
7.4.2OPEN NLP
7.4.3Stanford NLP
7.4.4LingPipe
7.4.5GATE
7.4.6UIMA
7.4.7Netlytic
7.4.8WordNet和SentiWordNet
7.5思考題
8社交網絡分析
8.1簡介
8.2社交網絡分析的應用
8.3社交網絡分析方法
8.3.1網絡的一些基本屬性
8.3.2復雜網絡的一些拓撲特性
8.3.3節點的中心性(Centrality)
8.3.4可達性、路徑、最短路徑、最小生成樹
8.3.5凝聚子群與社區檢測
8.3.6鏈路預測、信息擴散與影響力分析
8.3.7核心-邊緣分析
8.3.8位置和角色、子圖查詢、網絡模體
8.4軟件
8.4.1Gephi
8.4.2UCINET
8.4.3Pajek
8.4.4NodeXL
8.5思考題
9語義網與知識圖譜
9.1語義網(Semantic Web)的基本概念
9.2語義網體系結構
9.3語義網的關鍵技術
9.3.1XML(Extensible Markup Language, 擴展標記語言)
9.3.2RDF(Resource Description Framework, 資源描述框架)
9.3.3OWL與本體Ontology
9.4知識庫與知識圖譜
9.4.1知識庫與Linked Open Data
9.4.2知識圖譜
9.4.3知識圖譜的創建
9.4.4知識圖譜的挖掘
9.5思考題
10數據可視化、可視分析、與探索式數據分析
10.1什么是可視化
10.2可視化的強大威力
10.3可視化的一般過程
10.4科學可視化與信息可視化
10.5數據可視化的原則
10.6可視化實例
10.6.1散點圖與直方圖
10.6.2線圖
10.6.3柱狀圖與餅圖
10.6.4解剖圖、切片、等值面
10.6.5表現層次關系:樹、圓錐樹、Tree Map、信息立方體
10.6.6地圖(Map)和地球(Earth)
10.6.7社交網絡(Social network)
10.6.8堆疊的河流(Stacked River)
10.6.9多維數據的展示
10.6.10特色可視化應用
10.7可視化的挑戰和趨勢
10.8可視分析技術
10.9探索式數據分析
10.10探索式數據分析的作用
10.11探索式數據分析的基本方法
10.11.1了解變量的分布情況、計算統計值
10.11.2了解變量之間的關系
10.11.3了解因子變量的相對重要性
10.11.4在探索式數據分析中對高維數據進行降維
10.11.5探索式數據分析案例
10.12可視化工具介紹
10.12.1D3.js
10.12.2Processing.js
10.12.3Protovis
10.12.4Prefuse
10.12.5Matplotlib
10.13思考題
應用篇 //
11云計算平臺
11.1云計算的概念與特點
11.1.1云計算的概念
11.1.2云計算的特點
11.1.3云計算與并行計算、分布式計算、集群計算、網格計算的區別與聯系
11.2云計算與大數據處理的關系
11.3云計算類型與典型系統
11.4虛擬化技術與數據中心
11.4.1服務器虛擬化
11.4.2存儲虛擬化
11.4.3網絡虛擬化
11.4.4數據中心
11.5主流產品與特點
11.5.1VMWare
11.5.2Hyper-V
11.5.3KVM
11.5.4XEN
11.6Openstack開源虛擬化平臺
11.7主流廠商的云計算產品和服務
11.7.1Amazon
11.7.2微軟
11.7.3Google
11.7.4阿里云
11.8思考題
12Hadoop及其生態系統
12.1Hadoop簡介
12.2Hadoop分布式文件系統
12.2.1寫文件
12.2.2讀文件
12.2.3Secondary NameNode介紹
12.3MapReduce工作原理
12.3.1MapReduce執行引擎
12.3.2MapReduce計算模型
12.3.3Hadoop 1.0的應用
12.4Hadoop生態系統
12.4.1Hive原理
12.5Hadoop2.0版(YARN)
12.5.1Hadoop 1.0的優勢和局限
12.5.2業務需求推動持續創新
12.5.3YARN原理
12.5.4YARN的優勢
12.6Hadoop 2.0上的交互式查詢引擎Hive on Tez
12.6.1Tez原理
12.6.2把數據處理邏輯建模成一個DAG連接起來的任務
12.6.3Tez(DAG Job)相對于MapReduce(Job)的優勢
12.7Hadoop平臺上的列存儲技術
12.7.1列存儲的優勢
12.7.2RCFile
12.7.3ORC存儲格式
12.7.4Parquet文件格式
12.8思考題
13Spark及其生態系統
13.1簡介
13.1.1Spark軟件架構
13.1.2Spark的主要優勢
13.2Hadoop的局限和Spark的誕生
13.3Spark特性總結
13.4Spark生態系統
13.5RDD及其處理
13.5.1DAG、寬依賴與窄依賴
13.5.2DAG的調度執行
13.5.3共享變量(Shared Variable)
13.6Spark SQL
13.6.1SparkSQL應用程序
13.7Spark應用案例
13.7.1Spark的其它應用案例
13.8總結
13.9思考題
14Python與數據科學
14.1Python概述
14.2Python開發環境配置(Setup)
14.3通過一系列實例學習Python(Learn Python Step by Step with Examples)
14.3.1變量/常量/注釋
14.3.2數據類型
14.3.3運算符及其優先級、表達式
14.3.4順序、分支、循環程序結構
14.3.5函數、庫函數的使用
14.3.6類和對象、對象的構造、對象摧毀、封裝和繼承、重寫
14.3.7異常處理
14.3.8正則表達式
14.3.9文件I/O(輸入輸出)
14.4第三方庫和實例(3th Party Libraries and Examples)
14.4.1Pandas介紹與實例
14.4.2scikit-learn介紹與實例
14.4.3深度學習庫Keras(基于Tensorflow、Theano)
14.4.4Matplotlib 介紹與實例
14.4.5NetworkX介紹與實例
14.4.6NLTK介紹與實例
14.5思考題
15評測基準
15.1評測基準概述
15.1.1評測基準的目的和作用
15.1.2評測基準的構成
15.1.3評測基準的分類
15.1.4評測基準的選擇
15.2功能性評測基準Daytona 100TB Gray Sort
15.3面向OLTP應用的評測基準
15.3.1TPC-C標準
15.3.2TPC-C的數據模型
15.3.3TPC-C的負載
15.3.4TPC-C的性能指標
15.4面向OLAP應用的評測基準
15.4.1TPC-H標準
15.4.2TPC-H的數據模型
15.4.3TPC-H的負載
15.4.43個測試
15.4.5TPC-H的性能指標
15.4.6數據生成器和查詢負載生成器
15.4.7TPC-DS簡介
15.5面向大數據應用的評測基準
15.5.1面向數據服務的評測基準 - YCSB
15.5.2面向大數據分析處理的評測基準 - Big Bench和BigDataBench
15.5.3其它評測基準
15.6思考題
16數據科學案例
16.1Google流感趨勢預測(Google Flu Trends)
16.2Target利用數據分析預測到一個高中女生的懷孕
16.3互聯網輿情監控與管理
16.4投資與信用
16.4.1大數據指數基金
16.4.2基于大數據的信用評價
16.5IBM Watson計算機與醫療
16.6奧巴馬競選團隊利用大數據分析技術,幫助奧巴馬競選連任成功
16.7數據科學與科學研究
16.8奧斯卡大獎預測、總統選舉預測、世界杯預測
16.9用戶畫像與精準廣告
16.10自動短文評分(Automatic Essay Scoring)
16.11數據產品(Data Product)
16.12其它數據科學案例
16.13思考題
17數據科學實踐
17.1概述
17.1.1算法交易和量化交易
17.1.2量化交易系統的四大模塊
17.1.3交易策略的研發、測試、上線過程
17.1.4量化交易系統的評價指標
17.2工具和平臺介紹
17.2.1Zipline函數庫介紹
17.2.2Quantopian介紹
17.3基于規則的交易策略
17.3.1移動平均交叉交易策略
17.3.2均值回歸交易策略
17.4基于機器學習的交易策略
17.4.1基于Random Forest分類器的交易策略(分類)
17.4.2基于SVM回歸模型的交易策略(回歸)
17.5關于若干專題的討論
17.5.1股票價格預測的基礎數據
17.5.2特征選擇(Feature Selection)
17.5.3模型的組合(Model Combination)
17.5.4離線的模型訓練(Offline Model Training)
17.5.5使用大數據處理引擎處理大數據(using of Big Data Engine)
17.5.6在交易模型中集成情感分析結果(Integrating Sentiment Analysis into Trading Model)
17.6思考題
18附錄
18.1參考文獻
18.2專有名詞