本书是一本数据科学的入门书籍。每个知识点尽量从实际的应用案例出发,从数据出发,以问题为导向,在解决问题中学习数据挖掘、机器学习等数据科学相关方法。本书将数据读写、数据清洗和预处理作为开端,逐渐深入到和数据科学相关的决策树、支持向量机、神经网络、无监督学习等知识。此外,结合数据科学的实际应用,书中还讲解了推荐算法、文本挖掘和社交网络分析等热门实用技术。本书在写作过程中尽量删去太过抽样的理论,让具有一定高等数学和概率论基础的读者就能看得懂。当然,如果读者对方法原理确实不感兴趣,只是为了用R程序实现某种方法,可以跳过方法只看案例和程序。本书适合作为高校数据科学、机器学习、数据挖掘、大数据分析等相关专业的研究生和高年级本科的教科书,也适合作为相关企业的数据科学家、数据挖掘工程师、数据分析师及数据科学的爱好者等的工具书。
方匡南,厦门大学信息科学学院教授,多年从事大数据及相关领域研究与教学,著有《R数据分析》等多部相关作品。
第1章 导论 1
1.1 数据科学的发展历史 1
1.2 数据科学研究的主要问题 3
1.3 数据科学的主要方法 5
1.4 R语言的优势 7
第2章 数据读/写 9
2.1 数据的读入 9
2.1.1 直接输入数据 9
2.1.2 读入R包中的数据 10
2.1.3 从外部文件读入数据 10
2.1.4 批量读入数据 15
2.1.5 R语言读取文件的几个常错的问题 15
2.2 写出数据 17
2.3 习题 18
第3章 数据清洗与预处理 19
3.1 数据分类 19
3.2 数据清洗 20
3.2.1 处理缺失数据 20
3.2.2 处理噪声数据 23
3.3 数据变换 23
3.4 R语言实现 25
3.4.1 数据集的基本操作 25
3.4.2 数据集间的操作 28
3.4.3 连接数据库数据 29
3.5 习题 30
第4章 数据可视化 31
4.1 高阶绘图工具——ggplot2 31
4.1.1 快速绘图 32
4.1.2 使用图层构建图像 34
4.1.3 分面 37
4.2 ECharts2 39
4.2.1 安装 39
4.2.2 使用 40
4.3 习题 48
第5章 线性回归 49
5.1 问题的提出 49
5.2 一元线性回归 50
5.2.1 一元线性回归概述 50
5.2.2 一元线性回归的参数估计 52
5.2.3 一元线性回归模型的检验 55
5.2.4 一元线性回归的预测 56
5.3 多元线性回归分析 57
5.3.1 多元线性回归模型及假定 58
5.3.2 参数估计 59
5.3.3 模型检验 60
5.3.4 预测 61
5.4 R语言实现 63
5.4.1 一元线性回归 63
5.4.2 多元线性回归 66
5.5 习题 67
第6章 线性分类 69
6.1 问题的提出 69
6.2 Logistic模型 70
6.2.1 线性概率模型 70
6.2.2 Probit模型 71
6.2.3 Logit模型原理 72
6.2.4 边际效应分析 73
6.2.5 最大似然估计(MLE) 73
6.2.6 似然比检验 74
6.3 判别分析 74
6.3.1 Na?ve Bayes判别分析 75
6.3.2 线性判别分析 76
6.3.3 二次判别分析 78
6.4 分类问题评价准则 78
6.5 R语言实现 80
6.5.1 描述统计 80
6.5.2 Logistic模型 81
6.5.3 判别分析 87
6.5.4 模型比较 90
6.6 习题 92
第7章 重抽样 94
7.1 问题的提出 94
7.2 基本概念 94
7.2.1 训练误差和测试误差 95
7.2.2 偏差和方差 95
7.3 交叉验证法 96
7.3.1 验证集方法 97
7.3.2 留一交叉验证法 97
7.3.3 K折交叉验证法 98
7.4 自助法 99
7.5 R语言实现 100
7.5.1 验证集方法 100
7.5.2 留一交叉验证法 102
7.5.3 K折交叉验证法 102
7.5.4 自助法 103
7.6 习题 104
第8章 模型选择与正则化 105
8.1 问题的提出 105
8.2 子集选择法 106
8.2.1 最优子集法 106
8.2.2 逐步选择法 106
8.2.3 模型选择 108
8.3 基于压缩估计的逐个变量选择 109
8.3.1 LASSO惩罚 110
8.3.2 SCAD惩罚 111
8.3.3 MCP惩罚 112
8.3.4 调整参数选择 113
8.4 基于压缩估计的组变量选择 113
8.4.1 自然分组结构 113
8.4.2 人为分组结构 114
8.5 基于压缩估计的双层变量选择 115
8.5.1 复合函数型双层选择 115
8.5.2 稀疏组惩罚型双层选择 116
8.6 R语言实现 117
8.6.1 子集选择法 117
8.6.2 模型选择 120
8.6.3 组模型选择 122
8.6.4 双层模型选择 126
8.7 习题 128
第9章 决策树与组合学习 129
9.1 问题的提出 129
9.2 决策树 130
9.2.1 基本概念 130
9.2.2 分类树 133
9.2.3 回归树 135
9.2.4 树的优缺点 137
9.3 Bagging 137
9.3.1 基本算法 137
9.3.2 袋外误差估计 138
9.3.3 变量重要性的度量 139
9.4 随机森林 140
9.5 提升法 142
9.5.1 Adaboost算法 142
9.5.2 GBDT算法 143
9.5.3 XGBoost算法 143
9.6 R语言实现 144
9.6.1 数据介绍 144
9.6.2 描述性统计 145
9.6.3 分类树 145
9.6.4 Bagging 148
9.6.5 随机森林 149
9.6.6 Boosting 150
9.7 习题 155
第10章 支持向量机 156
10.1 问题的提出 156
10.2 最大间隔分类器 157
10.2.1 使用分割超平面分类 157
10.2.2 构建最大间隔分类器 159
10.2.3 线性不可分的情况 160
10.3 支持向量分类器 161
10.3.1 使用软间隔分类 161
10.3.2 构建支持向量分类器 161
10.4 支持向量机 163
10.4.1 使用非线性决策边界分类 163
10.4.2 构建支持向量机 165
10.5 与Logistic回归的关系 166
10.6 支持向量回归 167
10.7 R语言实现 168
10.7.1 支持向量分类器 168
10.7.2 支持向量机 173
10.7.3 Auto数据集 175
10.8 习题 178
第11章 神经网络 180
11.1 问题的提出 181
11.2 神经网络的基本概念 181
11.2.1 神经网络的基本单元——神经元 181
11.2.2 神经网络的结构 185
11.2.3 神经网络的学习 186
11.3 神经网络模型 188
11.3.1 单神经元感知器 188
11.3.2 单层感知器 189
11.3.3 BP神经网络 190
11.3.4 Rprop神经网络 193
11.4 R语言实现 195
11.4.1 nnet程序包 195
11.4.2 neuralnet程序包 197
11.4.3 应用案例1:利用nnet程序包分析纸币鉴别数据 198
11.4.4 应用案例2:利用neuralnet程序包分析白葡萄酒的品质 200
11.5 习题 203
第12章 无监督学习 205
12.1 问题的提出 205
12.2 聚类分析 207
12.2.1 相异度 207
12.2.2 K-means聚类 209
12.2.3 系统聚类法 211
12.3 主成分分析 214
12.3.1 主成分分析的几何意义 214
12.3.2 主成分的数学推导 215
12.3.3 主成分回归 217
12.3.4 主成分分析的其他方面 217
12.4 因子分析 219
12.4.1 因子分析的数学模型 219
12.4.2 因子载荷阵的统计意义 220
12.4.3 因子分析的其他方面 221
12.5 典型相关分析 223
12.5.1 典型相关分析原理 223
12.5.2 典型相关系数的显著性检验 226
12.5.3 典型相关分析的步骤 227
12.6 R语言实现 228
12.6.1 聚类分析:移动通信用户细分 228
12.6.2 主成分分析:农村居民消费水平评价 233
12.6.3 因子分析:市场调查 236
12.6.4 典型相关分析:职业满意度与职业特性的关系 239
12.7 习题 242
第13章 推荐算法 243
13.1 关联规则 243
13.1.1 基本概念 244
13.1.2 基本分类 246
13.1.3 基本方法 247
13.2 协同过滤算法 249
13.2.1 基于邻居的协同过滤算法 249
13.2.2 基于模型的协同过滤算法 253
13.3 R语言实现 254
13.3.1 关联规则 254
13.3.2 协同过滤算法 259
13.4 习题 262
第14章 文本挖掘 264
14.1 问题的提出 264
14.2 文本挖掘基本流程 265
14.2.1 文本数据获取 265
14.2.2 文本特征表示 265
14.2.3 文本的特征选择 268
14.2.4 信息挖掘与主题模型 269
14.3 R语言实现 270
14.3.1 JSS_papers数据集 270
14.3.2 拓展案例:房地产网络舆情分析 275
14.4 习题 278
第15章 社交网络分析 279
15.1 问题的提出 279
15.2 网络的基本概念 280
15.3 网络特征的描述性分析 281
15.3.1 节点度 281
15.3.2 节点中心性 282
15.3.3 网络的凝聚性特征 283
15.3.4 分割 284
15.4 网络图的统计模型 285
15.4.1 经典随机图模型 285
15.4.2 广义随机图模型 286
15.4.3 指数随机图模型 287
15.4.4 网络块模型 287
15.5 关联网络推断 288
15.5.1 相关网络 288
15.5.2 偏相关网络 289
15.5.3 高斯图模型网络 290
15.5.4 Graphic Lasso模型 291
15.6 二值型网络模型 294
15.7 R语言实现 295
15.7.1 网络的基本操作 295
15.7.2 “豆瓣关注网络”和“豆瓣朋友网络”特征分析 298
15.7.3 关联网络推断 303
15.8 习题 308
第16章 并行计算 309
16.1 提高R语言的计算速度 309
16.2 R语言的并行计算 310
16.3 HPC多线程并行计算 316
参考文献 321