新書推薦:
《
高敏感女性的力量(意大利心理学家FSP博士重磅力作。高敏感是优势,更是力量)
》
售價:NT$
286.0
《
元好问与他的时代(中华学术译丛)
》
售價:NT$
398.0
《
汽车传感器结构·原理·检测·维修
》
售價:NT$
500.0
《
怪谈百物语:不能开的门(“日本文学史上的奇迹”宫部美雪重要代表作!日本妖怪物语集大成之作,系列累销突破200万册!)
》
售價:NT$
296.0
《
罗马政治观念中的自由
》
售價:NT$
230.0
《
中国王朝内争实录:宠位厮杀
》
售價:NT$
281.0
《
凡事发生皆有利于我(这是一本读了之后会让人运气变好的书”治愈无数读者的心理自助经典)
》
售價:NT$
203.0
《
未来特工局
》
售價:NT$
254.0
編輯推薦:
欢迎阅读《利用Python调试机器学习模型》,这是一本可以帮助你掌握机器学习技术的综合指南。本书旨在引导你了解机器学习的基本概念,并深入推进到掌握专家级模型开发的复杂技巧,确保你的学习旅程既富于教育意义,又具有实用价值。
內容簡介:
《利用Python调试机器学习模型》详细阐述了利用Python调试机器学习模型的基本解决方案,主要包括超越代码调试、机器学习生命周期、为实现负责任的人工智能而进行调试、检测机器学习模型中的性能和效率问题、提高机器学习模型的性能、机器学习建模中的可解释性和可理解性、减少偏差并实现公平性、使用测试驱动开发以控制风险、生产测试和调试、版本控制和可再现的机器学习建模、避免数据漂移和概念漂移、通过深度学习超越机器学习调试、高级深度学习技术、机器学习最新进展简介、相关性与因果关系、机器学习中的安全性和隐私、人机回圈机器学习等内容。此外,本书还提供了相应的示例、代码,以帮助读者进一步理解相关方案的实现过程。
本书可作为高等院校计算机及相关专业的教材和教学参考用书,也可作为相关开发人员的自学用书和参考手册。
關於作者:
Ali Madani曾任Cyclica公司的机器学监,该公司处于药物发现的人工智能技术开发前沿,之后被Recursion Pharmaceuticals收购。Ali在新公司继续专注于机器学习在药物发现中的应用。Ali在多伦多大学获得博士学位,专业方向是癌症研究任务中的机器学习建模。Ali还在加拿大滑铁卢大学获得数学硕士学位。
目錄 :
第1篇 机器学习建模的调试
第1章 超越代码调试 3
1.1 技术要求 3
1.2 机器学习概览 4
1.3 机器学习建模的类型 5
1.3.1 监督学习 6
1.3.2 无监督学习 6
1.3.3 自监督学习 7
1.3.4 半监督学习 7
1.3.5 强化学习 7
1.3.6 生成式机器学习 7
1.4 软件开发中的调试 8
1.4.1 Python中的错误消息 9
1.4.2 调试技巧 11
1.4.3 调试器 13
1.4.4 高质量Python编程的最佳实践 14
1.4.5 版本控制 16
1.4.6 Python之外的调试 17
1.5 用于建模的数据中的缺陷 18
1.5.1 数据格式和结构 18
1.5.2 数据数量和质量 19
1.5.3 数据偏差 19
1.6 以模型和预测为中心的调试 20
1.6.1 欠拟合和过拟合 20
1.6.2 模型测试和生产环境中的推理 21
1.6.3 用于改变全貌的数据或超参数 21
1.7 小结 22
1.8 思考题 22
1.9 参考文献 22
第2章 机器学习生命周期 25
2.1 技术要求 25
2.2 在开始建模之前需要了解的事项 26
2.3 数据收集 27
2.4 数据选择 28
2.5 数据探索 28
2.6 数据整理 29
2.6.1 结构化 29
2.6.2 充实和丰富 29
2.6.3 数据转换 30
2.6.4 数据清洗 33
2.7 建模数据准备 38
2.7.1 特征选择和提取 38
2.7.2 设计评估和测试策略 40
2.8 模型训练与评估 42
2.9 测试代码和模型 44
2.10 模型部署与监控 45
2.11 小结 45
2.12 思考题 46
2.13 参考文献 46
第3章 为实现负责任的人工智能而进行调试 47
3.1 技术要求 47
3.2 机器学习中的公正建模公平性 47
3.2.1 数据偏差 48
3.2.2 算法偏差 50
3.3 机器学习中的安全和隐私 50
3.3.1 数据隐私 50
3.3.2 数据隐私攻击 51
3.3.3 数据中毒 51
3.3.4 对抗性攻击 51
3.3.5 输出完整性攻击 52
3.3.6 系统操纵 53
3.3.7 安全且具备隐私保护功能的机器学习技术 53
3.4 机器学习建模的透明度 54
3.5 负责并接受建模检查 55
3.6 数据和模型治理 57
3.7 小结 58
3.8 思考题 59
3.9 参考文献 59
第2篇 改进机器学习模型
第4章 检测机器学习模型中的性能和效率问题 63
4.1 技术要求 63
4.2 性能和误差评估措施 64
4.2.1 分类 64
4.2.2 回归 70
4.2.3 聚类 73
4.3 性能评估可视化 74
4.3.1 仅有汇总统计指标还不够 75
4.3.2 可视化可能会产生误导 75
4.3.3 不要一厢情愿地解释绘图 76
4.4 偏差和方差诊断 77
4.5 模型验证策略 80
4.6 误差分析 83
4.7 超越性能 84
4.8 小结 86
4.9 思考题 86
4.10 参考文献 87
第5章 提高机器学习模型的性能 89
5.1 技术要求 89
5.2 提高模型性能的选项 90
5.2.1 网格搜索 92
5.2.2 随机搜索 93
5.2.3 贝叶斯搜索 94
5.2.4 连续减半 95
5.3 合成数据的生成 95
5.3.1 不平衡数据的过采样 96
5.3.2 SMOTE技术原理 96
5.3.3 编写绘图函数 97
5.3.4 生成合成数据集 98
5.3.5 使用SMOTE方法 99
5.3.6 使用Borderline-SMOTE方法 100
5.3.7 使用ADASYN方法 101
5.3.8 其他基于SMOTE的方法 102
5.4 改进预训练数据处理 103
5.4.1 异常检测和离群值去除 104
5.4.2 善加利用低质量或相关性较低的数据 107
5.5 通过正则化方法提高模型的泛化能力 109
5.5.1 正则化方法的原理 109
5.5.2 编写绘图函数 111
5.5.3 评估Lasso模型 112
5.5.4 评估岭模型 113
5.5.5 评估Elastic-Net 113
5.5.6 评估SVM分类模型 114
5.6 小结 115
5.7 思考题 115
5.8 参考文献 115
第6章 机器学习建模中的可解释性和可理解性 119
6.1 技术要求 119
6.2 可理解性机器学习与黑盒机器学习 119
6.2.1 可理解的机器学习模型 120
6.2.2 复杂模型的可解释性 121
6.3 机器学习中的可解释性方法 122
6.4 局部可解释性技术 123
6.4.1 特征重要性 123
6.4.2 反事实解释 125
6.4.3 基于样本的可解释性 125
6.4.4 基于规则的可解释性 125
6.4.5 显著图 126
6.5 全局可解释性技术 126
6.5.1 收集局部解释 126
6.5.2 知识蒸馏 127
6.5.3 反事实总结 127
6.6 在Python中实践机器学习的可解释性 127
6.6.1 使用SHAP进行解释 128
6.6.2 使用LIME进行解释 134
6.6.3 使用多样化反事实解释(DiCE)的反事实生成 138
6.7 仅有可解释性还不够 140
6.8 小结 140
6.9 思考题 141
6.10 参考文献 141
第7章 减少偏差并实现公平性 143
7.1 技术要求 143
7.2 机器学习建模中的公平性 144
7.2.1 人口平等 144
7.2.2 概率均等 145
7.2.3 机会平等 145
7.2.4 敏感变量的代理 146
7.3 偏差的来源 146
7.3.1 数据生成和收集中引入的偏差 146
7.3.2 模型训练和测试中的偏差 149
7.3.3 生产环境中的偏差 150
7.4 使用可解释性技术 150
7.4.1 查看整体数据集的SHAP汇总图 150
7.4.2 找到要分析偏差的特征 151
7.4.3 进行特征之间的相关性分析 151
7.4.4 对特征进行可解释性分析 152
7.5 Python中的公平性评估和改进 154
7.5.1 提供了机器学习公平性相关功能的Python库 154
7.5.2 计算敏感特征的差异影响比 155
7.5.3 使用拒绝选项分类 156
7.6 小结 158
7.7 思考题 158
7.8 参考文献 159
第3篇 低错误的机器学习开发与部署
第8章 使用测试驱动开发以控制风险 163
8.1 技术要求 163
8.2 机器学习建模的测试驱动开发 164
8.2.1 单元测试 164
8.2.2 Pytest的基本操作步骤 164
8.2.3 确定要为其设计单元测试的组件 165
8.2.4 定义单元测试函数 166
8.2.5 运行Pytest 166
8.2.6 Pytest固定装置 168
8.3 机器学习差异测试 169
8.4 跟踪机器学习实验 171
8.4.1 选择机器学习实验跟踪工具的重要注意事项 171
8.4.2 常用的机器学习实验跟踪工具 172
8.4.3 使用MLflow Tracking 172
8.5 小结 175
8.6 思考题 175
8.7 参考文献 176
第9章 生产测试和调试 177
9.1 技术要求 177
9.2 基础设施测试 178
9.2.1 基础设施即代码工具 178
9.2.2 基础设施测试工具 179
9.2.3 使用Pytest进行基础设施测试 180
9.3 机器学习管道的集成测试 180
9.3.1 集成测试的主要内容 181
9.3.2 集成测试的流行工具 181
9.3.3 使用Pytest进行集成测试 182
9.3.4 使用requests和Pytest进行集成测试 183
9.4 监控和验证实时性能 184
9.4.1 通过监控了解部署前模型和生产环境中模型之间的差异 184
9.4.2 可用于监控模型的Python工具 185
9.4.3 数据漂移评估方法 186
9.5 模型断言 186
9.5.1 模型断言的用途 186
9.5.2 在Python中使用模型断言 187
9.6 小结 188
9.7 思考题 189
9.8 参考文献 189
第10章 版本控制和可再现的机器学习建模 191
10.1 技术要求 191
10.2 机器学习中的可再现性 192
10.3 数据版本控制 193
10.3.1 常用的数据版本控制工具 193
10.3.2 数据版本控制示例 194
10.4 模型版本控制 195
10.4.1 理解模型版本控制的必要性 195
10.4.2 执行模型版本控制的要点 196
10.5 小结 197
10.6 思考题 197
10.7 参考文献 197
第11章 避免数据漂移和概念漂移 199
11.1 技术要求 199
11.2 避免模型漂移 200
11.2.1 避免数据漂移 200
11.2.2 解决概念漂移问题 202
11.3 检测漂移 202
11.3.1 使用alibi_detect进行漂移检测练习 202
11.3.2 使用evidently进行漂移检测练习 205
11.4 小结 208
11.5 思考题 208
11.6 参考文献 208
第4篇 深度学习建模
第12章 通过深度学习超越机器学习调试 211
12.1 技术要求 211
12.2 人工神经网络简介 211
12.2.1 全连接神经网络 212
12.2.2 优化算法 214
12.3 神经网络建模框架 216
12.3.1 用于深度学习建模的PyTorch 216
12.3.2 训练模型 219
12.3.3 深度学习的超参数调优 220
12.3.4 PyTorch中的模型可解释性 221
12.3.5 PyTorch开发的深度学习模型的公平性 221
12.3.6 PyTorch Lightning 222
12.4 小结 222
12.5 思考题 223
12.6 参考文献 223
第13章 高级深度学习技术 225
13.1 技术要求 225
13.2 神经网络的类型 226
13.2.1 基于数据类型的分类 226
13.2.2 不同数据类型示例 227
13.2.3 将不同类型数据重新格式化为表格数据的一些挑战 227
13.3 用于图像形状数据的卷积神经网络 228
13.3.1 卷积的概念 228
13.3.2 卷积神经网络的应用 229
13.3.3 卷积神经网络的常用模型 230
13.3.4 性能评估 231
13.3.5 使用PyTorch进行CNN建模 232
13.3.6 卷积神经网络的图像数据转换和增强 234
13.3.7 使用预先训练的模型 235
13.4 用于语言建模的Transformer 236
13.4.1 标记化 238
13.4.2 语言嵌入 241
13.4.3 使用预训练模型进行语言建模 241
13.5 使用深度神经网络对图进行建模 243
13.5.1 认识图 244
13.5.2 图神经网络 245
13.5.3 使用PyTorch Geometric构建图神经网络 246
13.6 小结 250
13.7 思考题 250
13.8 参考文献 251
第14章 机器学习最新进展简介 255
14.1 技术要求 255
14.2 生成式建模 255
14.2.1 ChatGPT和其他生成式AI的成功故事 256
14.2.2 生成式深度学习技术 257
14.2.3 基于文本的生成式模型的提示工程 258
14.2.4 使用PyTorch进行生成式建模 260
14.3 强化学习 262
14.3.1 基于人类反馈的强化学习 263
14.3.2 使用PyTorch设计RLHF 263
14.4 自监督学习 265
14.4.1 常见自监督学习技术 266
14.4.2 使用PyTorch进行自监督学习 266
14.5 小结 269
14.6 思考题 269
14.7 参考文献 269
第5篇 模型调试的高级主题
第15章 相关性与因果关系 275
15.1 技术要求 275
15.2 作为机器学习模型一部分的相关性 276
15.3 因果建模可降低风险并提高性能 276
15.4 评估机器学习模型中的因果关系 278
15.4.1 识别因果特征的方法 278
15.4.2 因果推理 279
15.4.3 贝叶斯网络 281
15.5 使用Python进行因果建模 282
15.5.1 使用dowhy进行因果效应估计 282
15.5.2 使用bnlearn通过贝叶斯网络进行因果推理 284
15.6 小结 286
15.7 思考题 287
15.8 参考文献 287
第16章 机器学习中的安全性和隐私 289
16.1 技术要求 289
16.2 加密技术及其在机器学习中的应用 290
16.2.1 常见加密技术 290
16.2.2 在Python中实现AES加密 290
16.3 同态加密 292
16.4 差分隐私 293
16.5 联邦学习 295
16.6 小结 297
16.7 思考题 297
16.8 参考文献 297
第17章 人机回圈机器学习 299
17.1 机器学习生命周期中的人类 299
17.1.1 主动和被动人机回圈 300
17.1.2 专家反馈收集 300
17.2 人机回圈建模 301
17.3 小结 302
17.4 思考题 303
17.5 参考文献 303
附录A 思考题答案 305
第1章 超越代码调试 305
第2章 机器学习生命周期 307
第3章 为实现负责任的人工智能而进行调试 307
第4章 检测机器学习模型中的性能和效率问题 308
第5章 提高机器学习模型的性能 309
第6章 机器学习建模中的可解释性和可理解性 311
第7章 减少偏差并实现公平性 312
第8章 使用测试驱动开发以控制风险 313
第9章 生产测试和调试 313
第10章 版本控制和可再现的机器学习建模 315
第11章 避免数据漂移和概念漂移 315
第12章 通过深度学习超越机器学习调试 316
第13章 高级深度学习技术 316
第14章 机器学习最新进展简介 317
第15章 相关性与因果关系 318
第16章 机器学习中的安全性和隐私 318
第17章 人机回圈机器学习 319
內容試閱 :
欢迎阅读本书,这是一本可以帮助你掌握机器学习技术的综合指南。本书旨在引导你了解机器学习的基本概念,并深入推进到掌握专家级模型开发的复杂技巧,确保你的学习旅程既富于教育意义,又具有实用价值。
本书超越了简单的代码片段,深入研究了制作可靠的工业级模型的整体过程。从阐释模块化数据准备的细微差别,到讨论将模型无缝集成到更广泛的技术生态系统中,本书的每一章都旨在弥合你的基本理解和高级专业知识之间的差距。
本书的学习旅程不仅仅停留在模型创建上,我们还将深入评估模型性能,了解各种问题,并提供有效的解决方案。本书强调在生产环境中引入和维护可靠模型的重要性,提供解决数据处理和建模问题的技术。在本书中,你将了解可再现性的重要性并获得实现可再现性的技能,从而确保你的模型一致且值得信赖。此外,本书还强调模型的公平性、消除偏差和模型可解释性艺术的重要性,确保你的机器学习解决方案符合伦理道德、透明且易于理解。
随着学习旅程的推进,我们还将探索深度学习和生成式建模的前沿领域,并使用PyTorch和scikit-learn等著名Python库进行实战练习。
在不断发展的机器学习领域,持续学习和适应能力至关重要。本书不仅是机器学习领域各种新颖知识的宝库,也是激励你尝试和创新的动力。当我们深入研究每个主题时,都会邀请你带着好奇心和探索意愿来研究,以确保你获得的知识是深刻且可操作的。让我们脚踏实地,步步为营,一起创造机器学习的美好未来。
本书读者
本书面向数据科学家、数据分析师、机器学习工程师、Python开发人员和希望为不同工业应用的生产构建稳定可靠、高性能、可再现、值得信赖和可解释的机器学习模型的学生。你只需具备基本的Python技能即可深入学习本书所讨论的概念和实际示例。
无论你是机器学习新手还是经验丰富的从业者,本书提供的广泛而丰富的知识和实践见解,都可以帮助你提高建模技能。
内容介绍
本书共分为5篇17章,各篇章内容如下。
? 第1篇:机器学习建模的调试,包括第1章~第3章。
? 第1章“超越代码调试”,简要介绍了机器学习建模类型和代码调试,阐释了为什么说调试机器学习模型超越了代码调试。
? 第2章“机器学习生命周期”,介绍如何为项目设计模块化机器学习生命周期。
? 第3章“为实现负责任的人工智能而进行调试”,解释了负责任的机器学习建模中的一些问题、挑战和技术。
? 第2篇:改进机器学习模型,包括第4章~第7章。
? 第4章“检测机器学习模型中的性能和效率问题”,介绍如何正确评估机器学习模型的性能,讨论了性能评估可视化、偏差和方差诊断及模型验证策略等。
? 第5章“提高机器学习模型的性能”,介绍了一些提高机器学习模型的性能和泛化能力的技术。例如合成数据生成和正则化方法等。
? 第6章“机器学习建模中的可解释性和可理解性”,讨论了机器学习可解释性技术,并提供了在Python中实践可解释性的实例。
? 第7章“减少偏差并实现公平性”,阐释了机器学习建模中的公平性和偏差概念,介绍了一些可用于评估模型中的公平性和偏差的技术细节和工具。
? 第3篇:低错误的机器学习开发与部署,包括第8章~第11章。
? 第8章“使用测试驱动开发以控制风险”,展示了如何使用测试驱动开发工具和技术来降低不可靠建模的风险。
? 第9章“生产测试和调试”,介绍了基础设施测试和机器学习管道的集成测试,讨论了生产环境中的模型监控技术。
? 第10章“版本控制和可再现的机器学习建模”,介绍如何使用数据版本控制和模型版本控制来实现机器学习项目的可再现性。
? 第11章“避免数据漂移和概念漂移”,介绍如何检测机器学习模型中的漂移,以便在生产环境中拥有可靠的模型。
? 第4篇:深度学习建模,包括第12章~第14章。
? 第12章“通过深度学习超越机器学习调试”,介绍了人工神经网络(全连接神经网络)和用于深度学习建模的PyTorch。
? 第13章“高级深度学习技术”,讨论了用于不同数据类型深度学习建模的卷积神经网络(CNN)、Transformer和图神经网络(GNN)。
? 第14章“机器学习最新进展简介”,介绍了生成式建模、强化学习(RL)和自监督学习(SSL)的最新进展。
? 第5篇:模型调试的高级主题,包括第15章~第17章。
? 第15章“相关性与因果关系”,解释了因果建模的好处和一些实用技术,讨论了如何评估机器学习模型中的因果关系。
? 第16章“机器学习中的安全性和隐私”,展示了在机器学习设置中保护隐私和确保安全性的一些挑战,并介绍了一些应对此类挑战的技术。
? 第17章“人机回圈机器学习”,解释了人机回圈建模的好处和挑战。
充分利用本书
为了充分理解本书内容,你需要掌握以下基础知识和技能。
? 通过集成开发环境(integrated development environment,IDE)、Jupyter Notebook或Colab Notebook访问Python。
? Python编程基础知识。
? 对机器学习建模和术语(例如监督学习、无监督学习)以及模型训练和测试等操作有一些基本了解。
拥有一个包含所有必需库的虚拟环境将帮助你顺利运行本书每一章中的代码,这些代码在本书配套GitHub存储库中以Jupyter Notebook的形式提供。
本书所需的Python库包括:
? sklearn >= 1.2.2
? numpy >= 1.22.4
? pandas >= 1.4.4
? matplotlib >= 3.5.3
? collections >= 3.8.16
? xgboost >= 1.7.5
? sklearn >= 1.2.2
? ray >= 2.3.1
? tune_sklearn >= 0.4.5
? bayesian_optimization >= 1.4.2
? imblearn, pytest >= 7.2.2
? shap >= 0.41.0
? aif360 >= 0.5.0
? fairlearn >= 0.8.0
? pytest >= 3.6.4
? ipytest >= 0.13.0
? mlflow >= 2.1.1
? libi_detect >= 0.11.1
? lightgbm >= 3.3.5
? evidently >= 0.2.8
? torch >= 2.0.0
? torchvision >= 0.15.1
? transformers >= 4.28.0
? datasets >= 2.12.0
? torch_geometric == 2.3.1
? dowhy == 0.5.1
? bnlearn == 0.7.16
? tenseal >= 0.3.14
? pycryptodome = 3.18.0
? pycryptodomex = 3.18.0
或者,你也可以使用在线服务(如Colab),并将本书配套GitHub存储库中的Notebook作为Colab Notebook运行。
书中涉及的软/硬件和操作系统要求如表P-1所示。
表P-1 书中涉及的软/硬件和操作系统要求
书中涉及的软/硬件要求 操作系统要求
Python 3.6及以上版本 Windows、macOS或Linux
DVC 1.10.0及以上版本
本书中的每个代码单元都省略了导入所需库的操作,以消除重复并节省篇幅。本书配套GitHub存储库将帮助你确定每段代码所需的库并了解如何安装它们。由于本书不是单命令教程书,因此大多数示例都包含多行进程。在大部分章节中,如果不注意所需的库、它们的安装以及之前的代码行,将无法复制和粘贴单独的行。
下载示例代码文件
本书的代码包已经在GitHub上托管,网址如下,欢迎访问。
https://github.com/PacktPublishing/Debugging-Machine-Learning-Models-with-Python
如果代码有更新,也会在现有GitHub存储库上更新。
本书约定
本书中使用了许多文本约定。
(1)有关代码块的设置如下所示:
import pandas as pd
orig_df = pd.DataFrame({
‘age’: [45, 43, 54, 56, 54, 52, 41],
‘gender’: [‘M’, ‘F’, ‘F’, ‘M’, ‘M’, ‘F’, ‘M’],
‘group’: [‘H1’, ‘H1’, ‘H2’, ‘H3’, ‘H2’, ‘H1’, ‘H3’],
‘target’: [0, 0, 1, 0, 1, 1, 0]})
(2)当我们希望你注意代码块的特定部分时,相关行或项目将以粗体显示:
in_encrypt = open(”molecule_enc.bin”, ”rb”)
nonce, tag, ciphertext = [in_encrypt.read(x) for x in (16, 16, -1) ]
in_encrypt.close()
(3)任何命令行输入或输出都采用如下所示的形式:
python -m pytest
(4)术语或重要单词在括号内保留其英文原文,方便读者对照查看。示例如下:
我们还将讨论机器学习建模中的技术,并提供与这些类别不平行的代码示例,例如主动学习(active learning)、迁移学习(transfer learning)、集成学习(ensemble learning)和深度学习(deep learning,DL)。
(5)本书还使用了以下两个图标。
表示警告或重要的注意事项。
表示提示或小技巧。