第1章 数据科学概论 1
1.1数据科学的定义 1
1.2数据科学的定位 2
1.2.1数据科学与数据库、大数据分析的关系 2
1.2.2数据科学与基于数据的决策的关系 3
1.3数据科学家 4
数据科学家的技能 5
1.4数据科学的基本原则 6
1.4.1原则1:数据分析可以划分成一系列明确的阶段 6
1.4.2原则2:描述性分析与预测性分析 6
1.4.3原则3:实体的相似度 7
1.4.4原则4:模型的泛化能力 8
1.4.5原则5:分析结果的评估与特定应用场景有关 8
1.4.6原则6:相关性不同于因果关系 8
1.4.7原则7:通过并行处理提高数据处理(分析)速度 9
1.5数据处理流程:时间维度的纵向视角 10
1.6数据处理系统的架构:系统维度的计算视角 11
1.6.1数据处理系统的层次架构 11
1.6.2数据处理系统的Lambda架构 12
1.7数据的多样性:数据类型维度的横向视角 13
1.8数据价值的挖掘:价值维度的价值提升视角 14
1.9思考题 16
第2章OLTP与数据服务 17
2.1面向OLTP应用的RDBMS数据库技术 18
2.1.1关系数据库技术与SQL查询语言 18
2.1.2利用索引加快数据访问 22
2.1.3数据库的事务处理、恢复技术与安全保证 23
2.1.4并行数据库与分布式数据库 25
2.2面向数据服务的NoSQL数据库技术 25
2.2.1 NoSQL数据库技术 25
2.2.2 CAP理论 26
2.2.3 Key-Value数据库 26
2.2.4 Column Family数据库 29
2.2.5 Document数据库 31
2.2.6 Graph数据库 32
2.3 NewSQL数据库技术 33
2.3.1 VoltDB数据库 33
2.3.2 Google Spanner数据库 35
2.4思考题 37
第3章OLAP与结构化数据分析 38
3.1联机分析处理(OLAP)与结构化数据分析 38
3.1.1从操作型的业务数据库向数据仓库抽取、转换和装载数据 38
3.1.2数据仓库与星型模型 39
3.1.3联机分析处理(OLAP) 40
3.1.4三种类型的OLAP系统 42
3.2高性能OLAP系统的关键技术 43
3.2.1列存储技术 43
3.2.2位图索引技术 46
3.2.3内存数据库技术 47
3.2.4 MPP并行数据库 51
3.3结构化数据分析工具介绍 57
3.3.1 MPP (Shared Nothing)数据库、基于列存储的关系数据库 57
3.3.2 SQL on Hadoop系统 63
3.3.3性能比较 69
3.4思考题 73
第4章 数据清洗与数据集成 74
4.1数据抽取、转换与装载 74
4.2数据清洗 75
4.2.1数据清洗的意义 75
4.2.2数据异常的不同类型 76
4.2.3数据质量 77
4.2.4数据清洗的任务和过程 78
4.2.5数据清洗的具体方法 79
4.3数据集成 80
4.3.1数据集成 80
4.3.2数据集成需要解决的问题——异构性 81
4.3.3数据集成的模式 81
4.3.4实体解析(Entity Resolution) 85
4.4思考题 86
第5章 数据的深度分析(数据挖掘、机器学习) 88
5.1机器学习与数据挖掘简介 88
5.2主流机器学习与数据挖掘方法 90
5.2.1决策树 90
5.2.2聚类算法K-Means 92
5.2.3分类算法支持向量机(SVM) 94
5.2.4关联规则分析Apriori算法 98
5.2.5 EM算法 102
5.2.6协同过滤推荐算法(Collabora-tive Filtering Recommendation) 107
5.2.7 kNN (k近邻)算法 112
5.2.8朴素贝叶斯(Naive Bayes)算法 113
5.2.9 AdaBoost算法 117
5.2.10线性回归、Logistic回归 121
5.2.11神经网络与深度学习(Neural Network and Deep Learning) 128
5.2.12特征选择 148
5.3主流数据深度分析工具 151
5.3.1 Mahout系统 151
5.3.2 Spark MLlib系统 152
5.3.3 Weka系统 153
5.3.4 R系统与语言 154
5.3.5 SPSS与Matlab 155
5.3.6深度学习工具TensorFlow,Caffe 157
5.4思考题 158
第6章 流数据处理 160
6.1流数据处理应用 160
6.2流式处理和批处理的区别 160
6.3流数据模型 162
6.4流数据上的查询实例 163
6.5流数据处理系统的查询处理 166
6.5.1内存需求(Memory Require-ment) 166
6.5.2近似查询结果(Approximate Query Answering) 166
6.5.3滑动窗口(Sliding Window) 166
6.5.4查询数据流的历史数据(Refer-encing Past Data) 167
6.5.5多查询优化与查询计划的适应性 167
6.5.6堵塞操作 167
6.5.7数据流里的时间戳(Times-tamps in Stream) 168
6.5.8批处理、采样、梗概 169
6.6查询处理的基础算法 169
6.6.1随机采样 169
6.6.2梗概技术(SketchTechnique) 170
6.6.3直方图 170
6.6.4小波(Wavelet)分析 171
6.6.5布隆过滤器(Bloom Filter) 172
6.6.6计数最小梗概 172
6.7流数据处理系统 173
6.7.1 Storm简介 173
6.7.2其他流数据处理系统 176
6.8思考题 177
第7章 文本分析 179
7.1文本分析的意义 179
7.2文本分析的任务和方法 180
7.2.1句子切分、分词、词性标注、语法分析 180
7.2.2文本索引和检索(Indexing and Search 181
7.2.3文本分类 189
7.2.4文本聚类 191
7.2.5文档摘要 193
7.2.6主题抽取(Topic Theme Extraction) 196
7.2.7命名实体识别、概念抽取和关系抽取、事实抽取 201
7.2.8情感分析(Sentiment Analysis) 209
7.2.9其他文本分析任务与方法 210
7.3文本分析可视化 215
7.3.1标记云 215
7.3.2词共现分析与可视化(Co-Word Analysis&Visualization) 215
7.4文本分析软件和工具 220
7.4.1 NLTK 220
7.4.2 OPEN NLP 220
7.4.3 Stanford NLP 220
7.4.4 LingPipe 220
7.4.5 GATE 221
7.4.6 UIMA 221
7.4.7 Netlytic 222
7.4.8 WordNet和SentiWordNet 222
7.5思考题 222
第8章 社交网络分析 224
8.1简介 224
8.2社交网络分析的应用 226
8.3社交网络分析方法 227
8.3.1网络的一些基本属性 227
8.3.2复杂网络的一些拓扑特性 229
8.3.3节点的中心性(Centrality) 231
8.3.4可达性、路径、最短路径、最小生成树 237
8.3.5凝聚子群与社区检测 243
8.3.6链路预测、信息扩散与影响力分析 245
8.3.7核心-边缘分析 248
8.3.8位置和角色、子图查询、网络模体 249
8.4软件 252
8.4.1 Gephi 252
8.4.2 UCINET 253
8.4.3 Pajek 253
8.4.4 NodeXL 253
8.5思考题 254
第9章 语义网与知识图谱 256
9.1语义网的基本概念 256
9.2语义网体系结构 257
9.3语义网的关键技术 258
9.3.1 XML(Extensible Markup Language,扩展标记语言) 258
9.3.2 RDF (Resource Description Framework,资源描述框架) 259
9.3.3 OWL与本体Ontology 261
9.4知识库与知识图谱 262
9.4.1知识库与Linked Open Data 262
9.4.2知识图谱 264
9.4.3知识图谱的创建 267
9.4.4知识图谱的挖掘 269
9.5思考题 269
第10章 数据可视化、可视分析与探索式数据分析 271
10.1什么是可视化 271
10.2可视化的强大威力 271
10.3可视化的一般过程 272
10.4科学可视化与信息可视化 273
10.5数据可视化的原则 275
10.6可视化实例 277
10.6.1散点图与直方图 277
10.6.2线图 278
10.6.3柱状图与饼图 279
10.6.4解剖图、切片、等值面 279
10.6.5表现层次关系:树、圆锥树、Tree Map、信息立方体 280
10.6.6地图(Map)和地球(Earth) 283
10.6.7社交网络(Social network) 285
10.6.8堆叠的河流(Stacked River) 287
10.6.9多维数据的展示 288
10.6.10特色可视化应用 290
10.7可视化的挑战和趋势 292
10.8可视分析技术 293
10.9探索式数据分析 296
10.10探索式数据分析的作用 296
10.11探索式数据分析的基本方法 297
10.11.1了解变量的分布情况,计算统计值 298
10.11.2了解变量之间的关系 298
10.11.3了解因子变量的相对重要性 299
10.11.4在探索式数据分析中对高维数据进行降维 300
10.11.5探索式数据分析案例 306
10.12可视化工具介绍 307
10.12.1 D3.js 307
10.12.2 Processing.js 308
10.12.3 Protovis 308
10.12.4 Prefuse 308
10.12.5 Matplotlib 309
10.13思考题 310
第11章 云计算平台 312
11.1云计算的概念与特点 312
11.1.1云计算的概念 312
11.1.2云计算的特点 312
11.1.3云计算与并行计算、分布式计算、集群计算、网格计算的区别与联系 313
11.2云计算与大数据处理的关系 314
11.3云计算类型与典型系统 314
11.4虚拟化技术与数据中心 315
11.4.1服务器虚拟化 315
11.4.2存储虚拟化 316
11.4.3网络虚拟化 316
11.4.4数据中心 316
11.5主流产品与特点 317
11.5.1 VMware 317
11.5.2 Hyper-V 317
11.5.3 KVM 319
11.5.4 Xen 319
11.6 Openstack开源虚拟化平台 320
11.7主流厂商的云计算产品和服务 322
11.7.1 Amazon 322
11.7.2微软 324
11.7.3 Google 325
11.7.4阿里云 327
11.8思考题 328
第12章Hadoop及其生态系统 329
12.1 Hadoop简介 329
12.2 Hadoop分布式文件系统 330
12.2.1写文件 330
12.2.2读文件 332
12.2.3 Secondary NameNode介绍 333
12.3 MapReduce工作原理 334
12.3.1 MapReduce执行引擎 334
12.3.2 MapReduce计算模型 335
12.3.3 Hadoop 1.0的应用 337
12.4 Hadoop生态系统 337
Hive原理 339
12.5 Hadoop 2.0版(YARN) 341
12.5.1 Hadoop 1.0的优势和局限 341
12.5.2业务需求推动持续创新 342
12.5.3 YARN原理 342
12.5.4 YARN的优势 344
12.6 Hadoop 2.0上的交互式查询引擎Hive on Tez 345
12.6.1 Tez原理 345
12.6.2把数据处理逻辑建模成一个DAG连接起来的任务 346
12.6.3 Tez (DAG Job)相对于Map-Reduce (Job)的优势 347
12.7 Hadoop平台上的列存储技术 348
12.7.1列存储的优势 348
12.7.2 RCFile 348
12.7.3 ORC存储格式 349
12.7.4 Parquet文件格式 350
12.8思考题 356
第13章Spark及其生态系统 357
13.1简介 357
13.1.1 Spark软件架构 357
13.1.2 Spark的主要优势 358
13.2 Hadoop的局限和Spark的诞生 359
13.3 Spark特性总结 360
13.4 Spark生态系统 360
13.5 RDD及其处理 362
13.5.1 DAG、宽依赖与窄依赖 362
13.5.2 DAG的调度执行 363
13.5.3共享变量(Shared Variable) 365
13.6 SparkSQL 365
SparkSQL应用程序 366
13.7 Spark应用案例 369
Spark的其他应用案例 371
13.8小结 371
13.9思考题 371
第14章Python与数据科学 372
14.1 Python概述 372
14.2 Python开发环境配置(Setup) 374
14.3通过一系列实例学习Python 376
14.3.1变量/常量/注释 376
14.3.2数据类型 376
14.3.3运算符及其优先级、表达式 381
14.3.4顺序、分支、循环程序结构 383
14.3.5函数、库函数的使用 387
14.3.6类和对象、对象的构造、对象摧毁、封装和继承、重写 390
14.3.7异常处理 392
14.3.8正则表达式 393
14.3.9文件I/O(输入输出) 394
14.4第三方库和实例 394
14.4.1 Pandas介绍与实例 395
14.4.2 Scikit-learn介绍与实例 406
14.4.3深度学习库Keras(基于Tensorflow, Theano) 422
14.4.4 Matplotlib介绍与实例 427
14.4.5 NetworkX介绍与实例 441
14.4.6 NLTK介绍与实例 446
14.5思考题 458
第15章 评测基准 459
15.1评测基准概述 459
15.1.1评测基准的目的和作用 459
15.1.2评测基准的构成 459
15.1.3评测基准的分类 460
15.1.4评测基准的选择 460
15.2功能性评测基准Daytona 100TB Gray Sort 460
15.3面向OLTP应用的评测基准 461
15.3.1 TPC-C标准 461
15.3.2 TPC-C的数据模型 462
15.3.3 TPC-C的负载 462
15.3.4 TPC-C的性能指标 463
15.4面向OLAP应用的评测基准 463
15.4.1 TPC-H标准 463
15.4.2 TPC-H的数据模型 463
15.4.3 TPC-H的负载 464
15.4.4 3个测试 465
15.4.5 TPC-H的性能指标 465
15.4.6数据生成器和查询负载生成器 466
15.4.7 TPC-DS简介 466
15.5面向大数据应用的评测基准 467
15.5.1面向数据服务的评测基准—— YCSB 467
15.5.2面向大数据分析处理的评测基准——BigBench和Big-DataBench 468
15.5.3其他评测基准 469
15.6思考题 470
第16章 数据科学案例 471
16.1 Google流感趋势预测(Google Flu Trends) 471
16.2 Target利用数据分析预测到一个高中女生的怀孕 472
16.3互联网舆情监控与管理 474
16.4投资与信用 474
16.4.1大数据指数基金 474
16.4.2基于大数据的信用评价 476
16.5 IBM Watson计算机与医疗 477
16.6奥巴马竞选团队利用大数据分析技术,帮助奥巴马竞选连任成功 479
16.7数据科学与科学研究 480
16.8奥斯卡大奖预测、总统选举预测、世界杯预测 482
16.9用户画像与精准广告 482
16.10自动短文评分 483
16.11数据产品 484
路透社和彭博社的数据产品 485
16.12其他数据科学案例 485
16.13思考题 486
第17章 数据科学实践 487
17.1概述 487
17.1.1算法交易和量化交易 487
17.1.2量化交易系统的四大模块 488
17.1.3交易策略的研发、测试、上线过程 489
17.1.4量化交易系统的评价指标 490
17.2工具和平台介绍 491
17.2.1 Zipline函数库介绍 491
17.2.2 Quantopian介绍 493
17.3基于规则的交易策略 495
17.3.1移动平均交叉交易策略 495
17.3.2均值回归交易策略 496
17.4基于机器学习的交易策略 497
17.4.1基于Random Forest分类器的交易策略(分类) 497
17.4.2基于SVM回归模型的交易策略(回归) 499
17.5关于若干专题的讨论 502
17.5.1股票价格预测的基础数据 502
17.5.2特征选择(Feature Selection) 503
17.5.3模型的组合(Model Com-bination) 511
17.5.4离线的模型训练(Offline Model Training) 514
17.5.5使用大数据处理引擎处理大数据(Using of Big Data Engine) 515
17.5.6在交易模型中集成情感分析结果(Integrating Sentiment Analysis into Trading Model) 515
17.6思考题 517
第18章 附录 518
18.1参考文献 518
第1章 数据科学概论 518
第2章OLTP与数据服务 518
第3章OLAP与结构化数据分析 519
第4章 数据清洗与数据集成 521
第5章 数据的深度分析(数据挖掘、机器学习) 522
第6章 流数据处理 526
第7章 文本分析 527
第8章 社交网络分析 530
第9章 语义网与知识图谱 533
第10章 数据可视化、可视分析与探索式数据分析 534
第11章 云计算平台 536
第12章Hadoop及其生态系统 537
第13章Spark及其生态系统 539
第14章Python与数据科学 539
第15章 评测基准 540
第16章 数据科学案例 541
第17章 数据科学实践 543
18.2专有名词 544