第1章 什么是机器学习 1
1.1 机器学习的历史 1
1.1.1 阿兰·图灵 1
1.1.2 亚瑟·塞缪尔 2
1.1.3 汤姆M.米切尔 2
1.1.4 总结定义 2
1.2 机器学习的算法类型 2
1.2.1 监督学习 3
1.2.2 无监督学习 3
1.3 人的作用 3
1.4 机器学习的用途 4
1.4.1 软件 4
1.4.2 股票交易 4
1.4.3 机器人学 5
1.4.4 医学和医疗 5
1.4.5 广告业 5
1.4.6 零售和电子商务 6
1.4.7 游戏分析 7
1.4.8 物联网 7
1.5 机器学习语言 8
1.5.1 Python 8
1.5.2 R 8
1.5.3 Matlab 8
1.5.4 Scala 8
1.5.5 Clojure 9
1.5.6 Ruby 9
1.6 本书使用的软件 9
1.6.1 检查Java版本 9
1.6.2 Weka工具包 9
1.6.3 Mahout 10
1.6.4 Spring XD 10
1.6.5 Hadoop 11
1.6.6 使用集成开发环境 11
1.7 数据库 11
1.7.1 加州大学欧文分校机器学习库 12
1.7.2 Infochimps 12
1.7.3 Kaggle 12
1.8 总结 12
第2章 筹备机器学习 13
2.1 机器学习周期 13
2.2 以问题为先导 13
2.3 缺少数据 14
2.3.1 从身边做起 14
2.3.2 比赛 14
2.4 一劳永逸的解决方案 15
2.5 界定机器学习过程 15
2.5.1 规划 15
2.5.2 开发 16
2.5.3 测试 16
2.5.4 报告 16
2.5.5 精炼 16
2.5.6 产品 16
2.6 建立数据团队 17
2.6.1 数学和统计学 17
2.6.2 编程 17
2.6.3 图形设计 17
2.6.4 行业知识 17
2.7 数据处理 18
2.7.1 使用个人计算机 18
2.7.2 计算机集群 18
2.7.3 云服务 18
2.8 数据存储 19
2.8.1 物理磁盘 19
2.8.2 云存储 19
2.9 数据隐私 19
2.9.1 文化规范 19
2.9.2 普遍的期望 20
2.9.3 用户数据匿名 20
2.9.4 不要穿过“底线” 21
2.10 数据质量和清洗 21
2.10.1 完整性检测 22
2.10.2 类型检测 22
2.10.3 长度检测 22
2.10.4 范围检测 22
2.10.5 格式检测 23
2.10.6 进退两难 23
2.10.7 国家名内包含的内容 26
2.10.8 数值和日期 27
2.10.9 有关数据清洗的最后看法 28
2.11 思考输入数据 28
2.11.1 原始文本 28
2.11.2 逗号分隔变量 28
2.11.3 JSON 29
2.11.4 YAML 30
2.11.5 XML 31
2.11.6 电子表格 32
2.11.7 数据库 32
2.11.8 图像 33
2.12 考虑输出数据 33
2.13 不要害怕实验 33
2.14 总结 34
第3章 决策树 35
3.1 决策树基础 35
3.1.1 决策树的用途 35
3.1.2 决策树的优点 36
3.1.3 决策树的局限 36
3.1.4 相关算法类型 36
3.1.5 决策树工作原理 37
3.2 Weka中的决策树 40
3.2.1 需求 40
3.2.2 训练数据 41
3.2.3 使用Weka创建决策树 42
3.2.4 为分类器生成Java代码 46
3.2.5 测试分类器代码 49
3.2.6 进一步的思考 51
3.3 总结 51
第4章 贝叶斯网络 52
4.1 从飞行员到回形针 52
4.2 图论 53
4.3 概率论 54
4.3.1 投掷硬币 54
4.3.2 条件概率 54
4.3.3 赌博中获胜 54
4.4 贝叶斯定理 55
4.5 贝叶斯网络原理 57
4.5.1 赋值 57
4.5.2 计算结果 58
4.6 节点的个数 59
4.7 利用领域专家的信息 59
4.8 贝叶斯网络演练 59
4.8.1 贝叶斯网络中的Java API 60
4.8.2 设计网络 60
4.8.3 编程 61
4.9 总结 69
第5章 人工神经网络 70
5.1 什么是神经网络 70
5.2 人工神经网络的应用 71
5.2.1 高频交易 71
5.2.2 信用分析 71
5.2.3 数据中心管理 71
5.2.4 机器人 72
5.2.5 药效监控 72
5.3 人工神经网络分解 72
5.3.1 感知机 72
5.3.2 激活函数 73
5.3.3 多层感知机 74
5.3.4 后向传播算法 75
5.4 人工神经网络的数据准备 76
5.5 Weka中的人工神经网络 76
5.5.1 新建数据集 76
5.5.2 将数据载入Weka中 78
5.5.3 配置多层感知机 79
5.5.4 训练网络 81
5.5.5 调整网络 83
5.5.6 增加测试数据规模 83
5.6 利用Java实现神经网络 84
5.6.1 创建项目 84
5.6.2 实现代码 86
5.6.3 CSV与Arff文件转换 88
5.6.4 运行神经网络 88
5.7 总结 89
第6章 关联规则学习 90
6.1 关联规则学习的应用 90
6.1.1 Web使用挖掘 90
6.1.2 啤酒和尿布 91
6.2 关联规则学习工作原理 92
6.2.1 支持度 92
6.2.2 置信度 93
6.2.3 提升度 93
6.2.4 确信度 93
6.2.5 计算步骤 94
6.3 算法 94
6.3.1 Apiori 94
6.3.2 FP-Growth 95
6.4 基于购物篮分析的实战 95
6.4.1 下载原始数据 95
6.4.2 在Eclipse中搭建工程 96
6.4.3 建立项目的数据文件 97
6.4.4 设置数据 99
6.4.5 运行Mahout 101
6.4.6 检查结果 103
6.4.7 结果整合 105
6.4.8 进一步开发 106
6.5 总结 106
第7章 支持向量机 107
7.1 什么是支持向量机 107
7.2 何处使用支持向量机 107
7.3 基本分类原则 108
7.3.1 二分类和多分类 108
7.3.2 线性分类器 109
7.3.3 置信度 109
7.3.4 最大化或最小化寻找直线 110
7.4 支持向量机如何实现分类 110
7.4.1 使用线性分类 110
7.4.2 使用非线性分类 112
7.5 在Weka中使用支持向量机 112
7.5.1 安装LibSVM 112
7.5.2 分类演示 113
7.5.3 用Java实现LibSVM 117
7.6 总结 122
第8章 聚类 123
8.1 什么是聚类 123
8.2 聚类应用 123
8.2.1 因特网 124
8.2.2 商业和零售业 124
8.2.3 执法部门 124
8.2.4 计算 124
8.3 聚类模型 125
8.3.1 k-均值的工作原理 125
8.3.2 计算一个数据集中聚类的数量 126
8.4 使用Weka做k-均值聚类 127
8.4.1 准备数据 128
8.4.2 工作台方法 129
8.4.3 命令行方法 133
8.4.4 编程方法 135
8.5 总结 143
第9章 实时机器学习——使用Spring XD框架 144
9.1 获取消防水管式的数据 144
9.1.1 使用实时数据的注意事项 144
9.1.2 实时系统的使用范围 145
9.2 使用Spring XD 146
9.2.1 Spring XD数据流 146
9.2.2 输入源、输出、处理单元 147
9.3 从Twitter数据中进行学习 148
9.3.1 开发计划 149
9.3.2 配置Twitter API开发者应用环境 150
9.4 配置Spring XD 152
9.4.1 启动Spring XD服务器 152
9.4.2 创建样本数据 153
9.4.3 Spring XD shell 153
9.4.4 数据流入门 154
9.5 Spring XD和Twitter 156
9.5.1 设置Twitter访问认证 156
9.5.2 创建第一个Twitter数据流 157
9.5.3 我们所在的位置 159
9.6 处理单元介绍 159
9.6.1 处理单元是如何工作的 160
9.6.2 创建自己的处理单元 160
9.7 实时情感分析 167
9.7.1 基本的分析如何工作 168
9.7.2 创建情感分析的处理单元 169
9.7.3 Spring XD Taps 172
9.8 总结 173
第10章 批处理系统的机器学习 174
10.1 这个是大数据吗 174
10.2 对批处理数据的若干考虑 175
10.2.1 量级和频率 175
10.2.2 需要多少数据 175
10.2.3 用何种处理方法 176
10.3 批处理实例 176
10.3.1 Hadoop 176
10.3.2 Sqoop 176
10.3.3 Pig 177
10.3.4 Mahout 177
10.3.5 基于云的Elastic Map Reduce 177
10.3.6 关于教程的提示 177
10.4 使用Hadoop框架 178
10.4.1 Hadoop架构 178
10.4.2 建立单一节点集群 179
10.5 MapReduce是如何工作的 183
10.6 挖掘标签 184
10.6.1 Hadoop支持Spring XD 184
10.6.2 本书的目标 185
10.6.3 什么是标签 185
10.6.4 建立MapReduce类 186
10.6.5 在现有数据上运行ETL 195
10.6.6 使用Mahout生成推荐 198
10.7 挖掘销售数据 204
10.7.1 欢迎来到我的咖啡店 204
10.7.2 小规模(数据)尝试 205
10.7.3 编写核心方法 205
10.7.4 使用Hadoop和MapReduce 207
10.7.5 使用Pig挖掘销售数据 210
10.8 规划批处理任务 218
10.9 总结 219
第11章 Apache Spark 221
11.1 Spark是不是Hadoop的替代品 221
11.2 Java、Scala还是Python 222
11.3 Scala速成 222
11.3.1 安装Scala 222
11.3.2 包 222
11.3.3 数据类型 223
11.3.4 类 223
11.3.5 调用函数 224
11.3.6 操作符 224
11.3.7 控制结构 224
11.4 下载和安装Spark 225
11.5 Spark简介 225
11.5.1 启动命令行终端 226
11.5.2 数据源 227
11.5.3 Spark初体验 227
11.5.4 Spark监控 229
11.6 Spark与Hadoop MapReduce 229
11.7 在Spark下编写独立运行的程序 232
11.7.1 用Scala编写Spark程序 232
11.7.2 安装SBT 232
11.7.3 用Java编写Spark程序 235
11.7.4 Spark程序小结 238
11.8 Spark SQL 238
11.8.1 基本概念 238
11.8.2 在RDD中使用SparkSQL 239
11.9 Spark流处理框架 247
11.9.1 基本概念 247
11.9.2 用Scala编写第一个流处理程序 248
11.9.3 用Java编写第一个流处理程序 250
11.10 MLib:机器学习算法库 252
11.10.1 依赖 253
11.10.2 决策树 253
11.10.3 聚类 254
11.11 总结 254
第12章 基于R语言的机器学习 255
12.1 安装R 255
12.1.1 Mac OS X 255
12.1.2 Windows 255
12.1.3 Linux 256
12.2 第一次运行R 256
12.3 安装RStudio 257
12.4 R基础 258
12.4.1 变量和向量 258
12.4.2 矩阵 258
12.4.3 列表 259
12.4.4 数据框 260
12.4.5 安装包 261
12.4.6 加载数据 262
12.4.7 绘制数据 263
12.5 简单统计 266
12.6 简单线性回归 267
12.6.1 构建数据 267
12.6.2 初始图 267
12.6.3 线性回归模型 268
12.6.4 预测 268
12.7 基本情感分析 269
12.7.1 加载词汇表的函数 269
12.7.2 编写函数给情感打分 269
12.7.3 函数测试 270
12.8 Apriori关联规则 271
12.8.1 安装arules包 271
12.8.2 训练数据 271
12.8.3 导入事务数据 272
12.8.4 运行Apriori算法 273
12.8.5 查看结果 273
12.9 从Java中访问R 273
12.9.1 安装rJava包 274
12.9.2 R中的第一段Java代码 274
12.9.3 创建一个Eclipse项目 275
12.9.4 创建Java/R类 276
12.9.5 运行示例 276
12.9.6 扩展R实现 278
12.10 R与Hadoop 278
12.10.1 RHadoop项目 278
12.10.2 在RHadoop上的Map Reduce任务示例 279
12.10.3 用R连接社交媒体 280
12.11 总结 282
附录A Spring XD快速入门 284
附录B Hadoop 1.x快速入门 286
附录C 常用UNIX命令 289
附录D 进一步阅读 299