书 名 | 机器学习:软件工程方法与实现 | 作 者 | 张春强、张和平、唐 振 |
---|---|---|---|
出版社 | 机械工业出版社 | 出版时间 | 2020年12月5日 |
页 数 | 430 页 | 定 价 | 109 元 |
开 本 | 16 开 | 装 帧 | 平装 |
ISBN | 9787111669227 |
前言
第一部分 工程基础篇
第1章 机器学习软件工程方法 2
1.1 机器学习简述 2
1.1.1 机器学习与人工智能、深度学习等的关系 2
1.1.2 机器学习类别与范式 4
1.2 软件工程方法 13
1.2.1 机器学习中的软件工程 15
1.2.2 编码和测试 18
1.3 朴素贝叶斯测试驱动开发案例 21
1.3.1 开发准备 22
1.3.2 开发邮件分类器 24
1.4 本章小结 29
第2章 工程环境准备 30
2.1 Anaconda 31
2.1.1 安装Anaconda 31
2.1.2 使用conda管理环境 32
2.1.3 Jupyter Notebook 基础使用和示例 34
2.2 使用Pipenv定制Python环境 37
2.2.1 Pipenv简介 38
2.2.2 Pipenv基础使用和示例 39
2.3 Docker打包环境 41
2.3.1 Docker简述 42
2.3.2 Docker架构 43
2.3.3 Docker基础使用和示例 45
2.3.4 打包示例 46
2.4 标准化在数据科学项目中的意义 48
2.5 数据科学项目工程环境 49
2.5.1 开发镜像 50
2.5.2 项目工程模板 51
2.5.3 操作演示 54
2.6 本章小结 55
第3章 实验数据准备 56
3.1 常用数据分布 56
3.1.1 伯努利分布 58
3.1.2 二项分布 58
3.1.3 泊松分布 58
3.1.4 均匀分布 59
3.1.5 正态分布 59
3.1.6 指数分布 60
3.2 开源数据集 62
3.2.1 开源数据集介绍 62
3.2.2 scikit-learn中的数据集 63
3.3 scikit-learn数据集生成接口 66
3.3.1 常用接口 66
3.3.2 分类模型随机数据生成 67
3.3.3 回归模型随机数据生成 68
3.3.4 聚类模型随机数据生成 69
3.4 随机数生成简介 70
3.4.1 随机数生成的原理和概念 71
3.4.2 随机数生成示例 72
3.4.3 随机数应用场景介绍 72
3.5 本章小结 73
第二部分 机器学习基础篇
第4章 机器学习项目流程与核心概念 76
4.1 机器学习项目流程 76
4.1.1 如何定义Y 78
4.1.2 如何取样X 81
4.1.3 如何划分数据集 83
4.1.4 如何选择学习算法 84
4.1.5 数据分析和处理 85
4.1.6 特征工程 87
4.1.7 模型训练与调参 88
4.1.8 模型评估与报告 89
4.1.9 模型部署 91
4.1.10 模型监控 91
4.1.11 模型重训或重建 92
4.2 机器学习算法8个核心概念 92
4.2.1 损失函数和正则化 92
4.2.2 欠拟合与过拟合、偏差与方差 98
4.2.3 交叉验证 101
4.2.4 数据泄露 104
4.3 本章小结 106
第5章 数据分析与处理 107
5.1 变量的类型 107
5.2 常用分析方法 108
5.2.1 整体数据概览 109
5.2.2 单变量可视化分析 110
5.2.3 双变量可视化分析 113
5.2.4 多变量可视化分析 118
5.3 缺失值分析与处理 120
5.3.1 数据缺失的类型 120
5.3.2 查看缺失情况 120
5.3.3 缺失值处理方式 122
5.4 异常值分析与处理 126
5.4.1 查看异常情况 126
5.4.2 异常值处理 129
5.5 数据分析工具包开发实战 129
5.5.1 核心功能 129
5.5.2 使用示例 130
5.5.3 核心代码 131
5.6 本章小结 139
第三部分 特征篇
第6章 特征工程 142
6.1 特征工程简介 142
6.2 特征处理基础方法和实现 144
6.2.1 定量特征 146
6.2.2 序数特征 148
6.2.3 类别特征 149
6.2.4 WOE编码 153
6.2.5 日期特征 155
6.3 特征离散化方法和实现 156
6.3.1 等宽和等频离散法 158
6.3.2 信息熵分箱原理与实现 161
6.3.3 Best-KS分箱原理与实现 167
6.3.4 卡方分箱原理与实现 172
6.3.5 分箱效果 178
6.4 本章小结 178
第7章 基于Featuretools的自动特征衍生 180
7.1 特征衍生 180
7.2 Featuretools简介 181
7.2.1 安装 182
7.2.2 核心概念和接口介绍 182
7.3 Featuretools原理 186
7.3.1 特征综合抽象 187
7.3.2 深度特征综合算法 187
7.4 Featuretools实践案例 189
7.4.1 流程 189
7.4.2 捷信数据 189
7.4.3 构建实体和实体集 191
7.4.4 构建关系 193
7.4.5 特征基元 196
7.4.6 深度特征合成 197
7.5 本章小结 198
第8章 特征选择 199
8.1 特征选择概述 199
8.1.1 特征选择及其意义 200
8.1.2 业务层特征选择 200
8.1.3 技术层特征选择 201
8.2 特征选择流程与模式 204
8.2.1 数据质量和特征质量 204
8.2.2 串联和并联流程 205
8.2.3 特征选择结果评价 206
8.3 特征预测力指标 206
8.3.1 相关性指标 207
8.3.2 关联性指标 208
8.4 过滤法与实现 211
8.4.1 常用单指标过滤法 211
8.4.2 相关性与IV双指标过滤法 213
8.4.3 最小冗余最大相关 214
8.5 包裹法与实现 215
8.5.1 前向选择实现 217
8.5.2 后向选择实现 218
8.5.3 Stepwise实现 219
8.6 嵌入法与实现 222
8.6.1 基于随机森林的特征选择 222
8.6.2 基于正则的特征选择 223
8.7 特征选择工具包开发实战 224
8.8 本章小结 230
第四部分 模型篇
第9章 线性模型 232
9.1 普通线性回归模型 232
9.1.1 线性回归 233
9.1.2 线性回归的假设 236
9.1.3 线性模型如何解决非线性问题 236
9.2 广义线性模型 238
9.2.1 建模方法论 238
9.2.2 示例 240
9.3 正则化的回归 240
9.3.1 正则化原理 240
9.3.2 Lasso和Ridge回归 241
9.3.3 正则化效果演示 241
9.4 逻辑回归 247
9.4.1 模型原理 247
9.4.2 最大似然估计 249
9.4.3 LogisticRegression解析与示例 249
9.5 金融评分卡 252
9.5.1 评分卡简介 252
9.5.2 加性原理 253
9.5.3 评分刻度与实现 254
9.6 解决共线性 257
9.7 本章小结 257
第10章 树模型 259
10.1 树结构 259
10.2 决策树 260
10.3 决策树算法 261
10.3.1 熵和基尼指数 261
10.3.2 ID3算法 263
10.3.3 C4.5算法 266
10.3.4 CART 267
10.4 树的剪枝 269
10.4.1 预剪枝 269
10.4.2 后剪枝 269
10.5 特征处理 270
10.5.1 连续值处理 271
10.5.2 缺失值处理 271
10.6 决策树实现示例 272
10.7 本章小结 275
第11章 集成模型 276
11.1 模型的可变组件 276
11.1.1 数据集之行列采样 277
11.1.2 算法之同质和异质 277
11.2 层次化的集成方法 278
11.2.1 投票组合法 278
11.2.2 前向逐步叠加法 280
11.3 Bagging方法 281
11.3.1 Bootstrap和Aggregating 281
11.3.2 Bagging模型性能分析实验 282
11.3.3 Bagging偏差和方差解析 286
11.3.4 随机森林 289
11.4 Boosting方法 291
11.4.1 Boosting的原理与实现示例 291
11.4.2 Boosting建模解析示例 299
11.4.3 Boosting的集大成者:XGBoost 300
11.5 Stacking概述与实现示例 301
11.6 Super Learner与ML-Ensemble 304
11.6.1 Super Learner实现示例 305
11.6.2 ML-Ensemble集成库 307
11.7 本章小结 312
第12章 模型调参 313
12.1 模型调参概述 313
12.1.1 调参问题定义 313
12.1.2 超参数和作弊的随机种子 314
12.1.3 调参三要素 315
12.2 调参流程和方法 316
12.2.1 调参流程 316
12.2.2 超参选取策略和特定模型超参推荐 317
12.2.3 自动调参之元学习和代理模型 318
12.3 Model-Free方法 321
12.3.1 网格搜索 321
12.3.2 随机搜索 323
12.4 XGBoost自动调参工具开发实战 324
12.4.1 功能和易用性设计 324
12.4.2 使用示例 325
12.4.3 代码清单 326
12.5 贝叶斯方法 333
12.5.1 贝叶斯优化介绍 333
12.5.2 BayesianOptimization优化实例 334
12.6 部分开源调参项目简介 337
12.6.1 Ray-Tune 337
12.6.2 optuna 339
12.7 本章小结 341
第13章 模型性能评估 342
13.1 训练误差vs测试误差 342
13.2 模型评估常见的数据切割方法 343
13.2.1 留出法 343
13.2.2 交叉验证法 345
13.2.3 留一法 346
13.2.4 自助取样法 347
13.3 性能度量 348
13.3.1 分类任务 348
13.3.2 回归任务 357
13.4 本章小结 360
第14章 模型解释 361
14.1 模型解释概述 361
14.1.1 模型解释的意义 362
14.1.2 局部和全局解释 363
14.2 模型解释可视化方法 364
14.2.1 PDP 364
14.2.2 ICE 370
14.3 解释线性模型 371
14.4 解释树模型 372
14.4.1 树模型特征的重要性 373
14.4.2 决策路径 374
14.4.3 Treeinterpreter 375
14.5 模型无关解释方法 378
14.5.1 特征重要性方法 378
14.5.2 代理模型:LIME 380
14.5.3 基于博弈论的SHAP 383
14.6 本章小结 390
第15章 模型上线之模型即服务 391
15.1 模型上线方案 391
15.1.1 是否提供独立服务 392
15.1.2 是否提取模型细节 392
15.2 提取系数上线:回归模型和评分卡 393
15.3 自动规则提取上线:决策树示例 393
15.3.1 规则转化为Python代码 395
15.3.2 规则转化为C/Java等代码 396
15.3.3 规则转化为SQL代码 396
15.4 PMML和ONNX 398
15.4.1 PMML 398
15.4.2 ONNX 400
15.5 编译为共享库加速预测 401
15.5.1 Treelite原理 401
15.5.2 使用示例 402
15.5.3 部署方法 403
15.6 原生模型持久化 404
15.6.1 写接口 405
15.6.2 读接口 406
15.7 RESTful Web Services构建 406
15.7.1 快速构建API服务 407
15.7.2 自动化模型上线框架设计与实现 409
15.8 基于Docker大规模微服务上线架构 417
15.8.1 架构设计 417
15.8.2 定制镜像 418
15.8.3 编排可扩展服务示例 419
15.9 本章小结 420
第16章 模型稳定性监控 421
16.1 背景和监控方法 421
16.1.1 背景 421
16.1.2 监控方法 422
16.2 PSI和CSI 423
16.2.1 PSI 423
16.2.2 CSI 425
16.3 工程实现 425
16.3.1 功能简介 426
16.3.2 代码清单和示例 426
16.4 其他监控角度 429
16.5 监控异常处理方案 430
16.6 本章小结 430 2100433B
这是一部指导读者如何将软件工程的思想、方法、工具和策略应用到机器学习实践中的著作。
作者融合了自己10年的工程实践经验,以Python为工具,详细阐述机器学习核心概念、原理和实现,并提供了数据分析和处理、特征选择、模型调参和大规模模型上线系统架构等多个高质量源码包和工业应用框架,旨在帮助读者提高代码的设计质量和机器学习项目的工程效率。
全书共16章,分为4个部分:
第一部分 工程基础篇(1~3章)
介绍了机器学习和软件工程的融合,涉及理论、方法、工程化的数据科学环境和数据准备;
第二部分 机器学习基础篇(4、5章)
讲述了机器学习建模流程、核心概念,数据分析方法;
第三部分 特征篇(6~8章)
详细介绍了多种特征离散化方法和实现、特征自动衍生工具和自动化的特征选择原理与实现;
第四部分 模型篇(9~16章)
首先,深入地剖析了线性模型、树模型和集成模型的原理,以及模型调参方法、自动调参、模型性能评估和模型解释等;然后,通过5种工程化的模型上线方法讲解了模型即服务;最后,讲解了模型的稳定性监控的方法与实现,这是机器学习项目的最后一环。
涂料的施工方法多数有有排刷、棍刷、喷枪、批四种。 排刷 是最省料,但...
工程硕士就业前景非常不错,单证的都是考的都不是一月份的联考的在职研究生。 工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的的学科。它涉及程序设计语言、数据库、开发工具、系统平台、标准、设计...
考勤机机器安装方法 1.把考勤机通电,打开机器,使机器处于正常工作状态。 &nbs...
本文阐述了价值工程(ValueEngineering,,简称VE)和软件工程(SoftwareEngineering,简称SE)在方法论方面的一致性和在技术手段实现方面的相似性和互补性。分析这些特点具有深刻的理论间意义和实践意义。共同的思想方法和相似性的技术手段,可以对价值工程和软件工程在具体实施方面进行接轨,而差异性和互补性可以相互借鉴。在实践方面可以为价值工程在软件开发和信息化工程(InformationEngineering,简称IE)中的应用铺平道路,同时为两者的理论发展提供一个新的突破口。
计算机软件工程方法的进展研究
软件逆向工程有多种实现方法,主要有三:
1.分析通过信息交换所得的观察。
最常用于协议逆向工程,涉及使用总线分析器和数据包嗅探器。在接入计算机总线或网络的连接,并成功截取通信数据后,可以对总线或网络行为进行分析,以制造出拥有相同行为的通信实现。此法特别适用于设备驱动程序的逆向工程。有时,由硬件制造商特意所做的工具,如JTAG端口或各种调试工具,也有助于嵌入式系统的逆向工程。对于微软的Windows系统,受欢迎的底层调试器有SoftICE。
2.反汇编,即使用反汇编器,把程序的原始机器码,翻译成较便于阅读理解的汇编代码。这适用于任何的计算机程序,对不熟悉机器码的人特别有用。流行的相关工具有OllyDebug和IDA。
3.反编译,即使用反编译器,尝试从程序的机器码或字节码,重现高级语言形式的源代码。
随着互联网技术的飞速发展,全球逐渐步入大数据时代,智能化的趋势越来越明显,各行各业几乎都喊出了智能化的口号。机器学习作为人工智能的一个重要研究方向,在一定程度上成为IT人才的必要技能。本书以一个自研机器学习算法框架的构建为主线,首先介绍了机器学习的相关概念和背景,然后按照代数矩阵运算层、最优化方法层、算法模型层和业务功能层的分层顺序对算法框架展开讲述,旨在通过理论和实践相结合的方式,帮助广大零算法基础的开发人员了解和掌握一定的算法能力,同时也为算法设计人员提供工程实践中的参考范例。
本书实用性强,适合零算法基础的开发人员阅读,也适合具备一定算法能力且希望在工程实践中有所借鉴的工程技术人员阅读。另外,本书还适合作为算法设计人员及机器学习算法爱好者的参考书。
《机器人设计与实现》是按照搭积木的方法指导机器人爱好者如何设计、制作机器人平台,如何赋予机器人智能,使机器人能够运动、感知周围的环境和服从命令。《机器人设计与实现》搭积木的方法为读者提供了一整套实用、易懂、低成本的设计理念,而且为读者提供了充分的想象空间,使读者可以将自己的想法与书中的方法结合,从而设计出自己满意的高智能机器人。