机器学习是设计与应用算法的科学,可从数据中进行学习和预测,其应用已经非常普遍。金融领域集中了大量的交易数据,为人工智能技术的运用奠定了良好的数据基础。本书面向金融领域的读者,介绍了机器学习技术的原理与实践。
本书包括10章,介绍了神经网络算法、结构化数据的处理、计算机视觉处理技术、时间序列分析、自然语言处理、生成模型的应用、强化学习技术、数据建模与调试、贝叶斯推理和概率编程等内容。
本书由资深金融从业者编写,融合了其在金融项目中关于机器学习的实践经验,适合金融领域的数据科学家、数据分析师、金融科技公司的技术研发人员以及对金融领域的机器学习技术感兴趣的读者阅读。
1. 本书是聚焦于金融业的现代机器学习使用指南
2. 配套代码+图片讲解帮助读者快速上手
3. 详细的理论推到和算法分析,引导读者了解机器学习的内核
4. 知识点与代码示例环环相扣,理论与编程实践完美结合
简尼斯·克拉斯(Jannes Klaas)是一名拥有金融学和经济学背景的量化分析师。他曾主导过两个机器学习训练营项目,也同研发数据驱动类应用的公司和交易策略类公司有过合作。目前,他的研究领域包括系统风险和大规模自动化的知识挖掘。
第 1章 神经网络和基于梯度的优化 1
1.1 本书的内容概要 2
1.2 什么是机器学习 3
1.3 监督学习 4
1.4 非监督学习 5
1.5 强化学习 5
1.5.1 极其有效的数据 6
1.5.2 模型即是错 6
1.6 创建工作区 8
1.7 使用Kaggle内核 8
1.8 使用AWS深度学习AMI 12
1.9 近似函数 12
1.10 前向传递 13
1.11 逻辑回归器 14
1.12 优化模型参数 17
1.13 评估模型损失 18
1.13.1 梯度下降 19
1.13.2 反向传播 20
1.13.3 参数更新 22
1.13.4 阶段小结 22
1.14 深度网络 25
1.15 Keras简介 29
1.15.1 导入Keras库 30
1.15.2 Keras中的双层模型 30
1.15.3 Keras和TensorFlow 33
1.16 张量和计算图 33
1.17 练习 35
1.18 本章小结 35
第 2章 机器学习在结构化数据中的应用 37
2.1 数据 38
2.2 启发式模型、基于特征的模型和E2E模型 40
2.3 机器学习软件栈 41
2.4 启发式方法 42
2.4.1 使用启发式模型来预测 42
2.4.2 F1分数 43
2.4.3 基于混淆矩阵的评价 44
2.5 特征工程方法 45
2.5.1 特征源于直觉—诈骗者永不眠 46
2.5.2 专家视角—转账后提款 48
2.5.3 统计奇事—余额中的错误 48
2.6 Keras库的数据准备 49
2.6.1 one-hot编码 50
2.6.2 实体嵌入(entity embeddings) 51
2.7 使用Keras创建预测模型 54
2.7.1 提取目标 55
2.7.2 创建测试集 55
2.7.3 创建验证集 56
2.7.4 训练数据的过采样 56
2.7.5 构建模型 57
2.8 基于决策树方法的简要入门 61
2.8.1 一个简单的决策树 61
2.8.2 随机森林 62
2.8.3 XGBoost 63
2.9 E2E模型 64
2.10 练习 65
2.11 本章小结 65
第3章 计算机视觉的应用 66
3.1 卷积神经网络 68
3.1.1 过滤MNIST数据集 68
3.1.2 第二个过滤器 70
3.2 彩色图片的过滤技术 71
3.3 Keras ConvNet组成模块 72
3.3.1 Conv2D 72
3.3.2 最大池化 76
3.3.3 Flatten层 77
3.3.4 Dense层 78
3.3.5 训练MNIST 78
3.4 神经网络的延展 83
3.4.1 动量 83
3.4.2 Adam优化器 84
3.4.3 正则化(regularization) 85
3.4.4 失效(dropout) 88
3.4.5 批归一化(BatchNorm) 90
3.5 采用大图片数据集 91
3.6 采用预训练模型 93
3.6.1 修改VGG16 95
3.6.2 随机图像增强 96
3.7 模块度权衡 99
3.8 计算机视觉不止分类 100
3.8.1 人脸识别 100
3.8.2 边框预测 102
3.9 练习 104
3.10 本章小结 104
第4章 理解时间序列 106
4.1 数据的可视化与Pandas准备 107
4.1.1 汇总全局特征统计 109
4.1.2 检查采样时间序列 112
4.1.3 不同平稳特性 115
4.1.4 为什么平稳性重要 116
4.1.5 让时间序列具有平稳性 116
4.1.6 何时忽略平稳性问题 118
4.2 快速傅里叶变换 118
4.3 自相关 121
4.4 构建训练和测试方案 123
4.5 回测 124
4.6 中位数预测 126
4.7 ARIMA模型 128
4.8 卡曼滤波 131
4.9 神经网络预测 136
4.10 Conv1D 142
4.11 因果卷积和扩张卷积 143
4.12 简单的RNN 145
4.13 LSTM 146
4.14 循环dropout 149
4.15 贝叶斯深度学习 150
4.16 练习 153
4.17 本章小结 154
第5章 用自然语言处理解析文本数据 155
5.1 spaCy的入门指南 156
5.2 命名实体识别 158
5.3 词性标记 166
5.4 基于规则的匹配 168
5.4.1 在匹配器中添加自定义函数 170
5.4.2 匹配器添加到pipeline中 172
5.4.3 基于规则和学习相结合的系统 172
5.5 正则表达式 173
5.5.1 Python正则表达式 174
5.5.2 Pandas正则表达式 175
5.5.3 何时使用正则表达式 175
5.6 文本分类任务 175
5.7 准备数据 176
5.7.1 清理字符 176
5.7.2 词形还原 177
5.7.3 制定目标 178
5.7.4 准备训练集和测试集 179
5.8 词袋模型 179
5.9 主题模型 181
5.10 单词嵌入 183
5.10.1 针对单词向量训练的预处理 184
5.10.2 加载预先训练的单词向量 186
5.10.3 单词向量的时间序列模型 190
5.11 具有单词嵌入的文档相似度 191
5.12 快速浏览Keras函数API 192
5.13 注意力机制 195
5.14 注意力模块 197
5.15 seq2seq模型 199
5.15.1 seq2seq架构概述 199
5.15.2 数据 200
5.15.3 字符编码 202
5.15.4 构建推断模型 206
5.15.5 翻译 208
5.16 练习 210
5.17 本章小结 211
第6章 生成模型的应用 212
6.1 理解自编码器 213
6.1.1 MNIST的自编码器 214
6.1.2 信用卡自编码器 217
6.2 使用t-SNE可视化隐空间 221
6.3 变分自编码器 225
6.3.1 MNIST实例 226
6.3.2 使用Lambda层 227
6.3.3 Kullback-Leibler散度 228
6.3.4 创建自定义损失 230
6.3.5 使用VAE生成数据 231
6.3.6 针对端到端诈骗检测系统的VAE 233
6.4 时间序列的VAE 234
6.5 GAN 236
6.5.1 MNIST GAN 238
6.5.2 理解GAN隐向量 245
6.5.3 GAN训练技巧 245
6.6 使用更少的数据—主动学习 248
6.6.1 高效使用标签预算 248
6.6.2 采用机器来为人类打标签 250
6.6.3 未打标签数据的伪标签 251
6.6.4 使用生成模型 251
6.7 用于诈骗检测的SGAN 251
6.8 练习 258
6.9 本章小结 258
第7章 金融市场中的强化学习 259
7.1 “接水果”游戏—强化学习的快速指南 260
7.1.1 Q-learning将强化学习变成监督学习 262
7.1.2 定义Q-learning模型 265
7.1.3 训练玩“接水果”游戏 266
7.2 马尔可夫过程和贝尔曼方程—强化学习的形式化介绍 268
7.3 优势动作评论(A2C)模型 273
7.3.1 学习平衡 275
7.3.2 学习交易 286
7.4 进化策略和基因算法 290
7.5 强化学习工程的实用建议 292
7.5.1 设计良好的收益函数 292
7.5.2 强鲁棒性的强化学习 294
7.6 强化学习技术前沿 295
7.6.1 多代理强化学习 295
7.6.2 学习如何去学习 296
7.6.3 通过强化学习理解大脑 297
7.7 练习 298
7.8 本章小结 298
第8章 调试和发布产品 299
8.1 调试数据 300
8.1.1 如何查看数据是否胜任任务 300
8.1.2 没有足够数据该怎么办 302
8.1.3 单元测试数据 302
8.1.4 保证数据隐私并遵守法规 306
8.1.5 为训练准备数据 308
8.1.6 了解何种输入导致何种预测 309
8.2 调试模型 311
8.2.1 Hyperas搜索超参 311
8.2.2 高效的学习率搜索 316
8.2.3 学习率调度 318
8.2.4 TensorBoard监控训练 320
8.2.5 梯度爆炸和消失 324
8.3 部署 325
8.3.1 快速上线 326
8.3.2 理解和监控指标 327
8.3.3 了解数据的来源 328
8.4 性能建议 329
8.4.1 使用合适的硬件 329
8.4.2 使用分布式训练和TF估计器 329
8.4.3 使用CuDNNLSTM优化层 331
8.4.4 优化管道 331
8.4.5 使用Cython加速代码 334
8.4.6 缓存频繁的请求 336
8.5 练习 336
8.6 本章小结 336
第9章 挑战偏见 338
9.1 机器学习中不公平的来源 339
9.2 法律视角 340
9.3 量化公平 341
9.4 训练公平 344
9.5 因果学习 354
9.5.1 获得因果模型 355
9.5.2 工具变量 356
9.5.3 非线性因果模型 357
9.6 解释模型来确保公平 359
9.7 不公平则是复杂系统的失败 364
9.7.1 复杂系统本质上是危险系统 365
9.7.2 诸多故障引发灾难 365
9.7.3 复杂系统以降级模式运行 365
9.7.4 人工操作既能引发事故也能防止事故 365
9.7.5 无事故操作要求有故障经验 365
9.8 开发公平模型的检查清单 366
9.8.1 模型开发人员的目标是什么 366
9.8.2 数据存在偏见吗 366
9.8.3 错误是否有偏见 366
9.8.4 如何整合反馈 367
9.8.5 模型可解释吗 367
9.8.6 模型部署后会发生什么 367
9.9 练习 367
9.10 本章小结 368
第 10章 贝叶斯推理和概率编程 369
10.1 贝叶斯推理入门指南 370
10.1.1 扁平先验 371
10.1.2 < 50%先验 373
10.1.3 先验与后验 374
10.1.4 马尔可夫链蒙特卡罗算法 376
10.1.5 Metropolis-Hastings MCMC 381
10.1.6 从概率编程到深度概率编程 386
10.2 本章小结 387
结束语 388
推荐读物 389