产品特色
编辑推荐
大量Python库的参考
用丰富的案例,细析机器学习技巧与方法
一个基于场景的教程,带你承袭正确的思维方式(数据探索)
内容简介
《机器学习系统设计》是实用的Python机器学习教程,结合大量案例,介绍了机器学习的各方面知识。《机器学习系统设计》不仅告诉你“怎么做”,还会分析“为什么”,力求帮助读者掌握多种多样的机器学习Python库,学习构建基于Python的机器学习系统,并亲身实践和体验机器学习系统的功能。
《机器学习系统设计》适合需要机器学习技术的Python开发人员、计算机科学研究人员、数据科学家、人工智能程序员,以及统计程序员阅读参考。
作者简介
Willi Richert,机器学习和机器人学博士,目前任职于微软Bing搜索核心研发团队。他从事多种机器学习领域的研究,包括主动学习和统计机器翻译。
Luis Pedro Coelho,计算生物学家,主要关注生物图像信息学和大规模图像数据的处理,致力于生物标本图像分析中机器学习技术的应用,他还是Python计算机视觉库mahotas的主要开发人员。他于1998年开始开发开源软件,2004年起从事Python开发,并为多个Python开源库贡献了代码。另外,Luis拥有机器学习领域世界前列的卡内基-梅隆大学的博士学位,并发表过多篇科学论文。
内页插图
目录
目 录
第1章 Python机器学习入门 1
1.1 梦之队:机器学习与Python 1
1.2 这本书将教给你什么(以及不会教什么) 2
1.3 遇到困难的时候怎么办 3
1.4 开始 4
1.4.1 NumPy、SciPy和Matplotlib简介 4
1.4.2 安装Python 5
1.4.3 使用NumPy和SciPy智能高效地处理数据 5
1.4.4 学习NumPy 5
1.4.5 学习SciPy 9
1.5 我们第一个(极小的)机器学习应用 10
1.5.1 读取数据 10
1.5.2 预处理和清洗数据 11
1.5.3 选择正确的模型和学习算法 12
1.6 小结 20
第2章 如何对真实样本分类 22
2.1 Iris数据集 22
2.1.1 第一步是可视化 23
2.1.2 构建第一个分类模型 24
2.2 构建更复杂的分类器 28
2.3 更复杂的数据集和更复杂的分类器 29
2.3.1 从Seeds数据集中学习 29
2.3.2 特征和特征工程 30
2.3.3 最邻近分类 30
2.4 二分类和多分类 33
2.5 小结 34
第3章 聚类:寻找相关的帖子 35
3.1 评估帖子的关联性 35
3.1.1 不应该怎样 36
3.1.2 应该怎样 36
3.2 预处理:用相近的公共词语个数来衡量相似性 37
3.2.1 将原始文本转化为词袋 37
3.2.2 统计词语 38
3.2.3 词语频次向量的归一化 40
3.2.4 删除不重要的词语 41
3.2.5 词干处理 42
3.2.6 停用词兴奋剂 44
3.2.7 我们的成果和目标 45
3.3 聚类 46
3.3.1 K均值 46
3.3.2 让测试数据评估我们的想法 49
3.3.3 对帖子聚类 50
3.4 解决我们最初的难题 51
3.5 调整参数 54
3.6 小结 54
第4章 主题模型 55
4.1 潜在狄利克雷分配(LDA) 55
4.2 在主题空间比较相似度 59
4.3 选择主题个数 64
4.4 小结 65
第5章 分类:检测劣质答案 67
5.1 路线图概述 67
5.2 学习如何区分出优秀的答案 68
5.2.1 调整样本 68
5.2.2 调整分类器 68
5.3 获取数据 68
5.3.1 将数据消减到可处理的程度 69
5.3.2 对属性进行预选择和处理 70
5.3.3 定义什么是优质答案 71
5.4 创建第一个分类器 71
5.4.1 从k邻近(kNN)算法开始 71
5.4.2 特征工程 72
5.4.3 训练分类器 73
5.4.4 评估分类器的性能 74
5.4.5 设计更多的特征 74
5.5 决定怎样提升效果 77
5.5.1 偏差?方差及其折中 77
5.5.2 解决高偏差 78
5.5.3 解决高方差 78
5.5.4 高偏差或低偏差 78
5.6 采用逻辑回归 81
5.6.1 一点数学和一个小例子 81
5.6.2 在帖子分类问题上应用逻辑回归 83
5.7 观察正确率的背后:准确率和召回率 84
5.8 为分类器瘦身 87
5.9 出货 88
5.10 小结 88
第6章 分类II:情感分析 89
6.1 路线图概述 89
6.2 获取推特(Twitter)数据 89
6.3 朴素贝叶斯分类器介绍 90
6.3.1 了解贝叶斯定理 90
6.3.2 朴素 91
6.3.3 使用朴素贝叶斯进行分类 92
6.3.4 考虑未出现的词语和其他古怪情况 94
6.3.5 考虑算术下溢 95
6.4 创建第一个分类器并调优 97
6.4.1 先解决一个简单问题 97
6.4.2 使用所有的类 99
6.4.3 对分类器的参数进行调优 101
6.5 清洗推文 104
6.6 将词语类型考虑进去 106
6.6.1 确定词语的类型 106
6.6.2 用SentiWordNet成功地作弊 108
6.6.3 我们第一个估算器 110
6.6.4 把所有东西融合在一起 111
6.7 小结 112
第7章 回归:推荐 113
7.1 用回归预测房价 113
7.1.1 多维回归 116
7.1.2 回归里的交叉验证 116
7.2 惩罚式回归 117
7.2.1 L1和L2惩罚 117
7.2.2 在Scikit-learn中使用Lasso或弹性网 118
7.3 P大于N的情形 119
7.3.1 基于文本的例子 120
7.3.2 巧妙地设置超参数(hyperparameter) 121
7.3.3 评分预测和推荐 122
7.4 小结 126
第8章 回归:改进的推荐 127
8.1 改进的推荐 127
8.1.1 使用二值推荐矩阵 127
8.1.2 审视电影的近邻 129
8.1.3 组合多种方法 130
8.2 购物篮分析 132
8.2.1 获取有用的预测 133
8.2.2 分析超市购物篮 134
8.2.3 关联规则挖掘 136
8.2.4 更多购物篮分析的高级话题 137
8.3 小结 138
第9章 分类III:音乐体裁分类 139
9.1 路线图概述 139
9.2 获取音乐数据 139
9.3 观察音乐 140
9.4 用FFT构建第一个分类器 143
9.4.1 增加实验敏捷性 143
9.4.2 训练分类器 144
9.4.3 在多分类问题中用混淆矩阵评估正确率 144
9.4.4 另一种方式评估分类器效果:受试者工作特征曲线(ROC) 146
9.5 用梅尔倒频谱系数(MFCC)提升分类效果 148
9.6 小结 152
第10章 计算机视觉:模式识别 154
10.1 图像处理简介 154
10.2 读取和显示图像 155
10.2.1 图像处理基础 156
10.2.2 加入椒盐噪声 161
10.2.3 模式识别 163
10.2.4 计算图像特征 163
10.2.5 设计你自己的特征 164
10.3 在更难的数据集上分类 166
10.4 局部特征表示 167
10.5 小结 170
第11章 降维 171
11.1 路线图 171
11.2 选择特征 172
11.2.1 用筛选器检测冗余特征 172
11.2.2 用封装器让模型选择特征 178
11.3 其他特征选择方法 180
11.4 特征抽取 181
11.4.1 主成分分析(PCA) 181
11.4.2 PCA的局限性以及LDA会有什么帮助 183
11.5 多维标度法(MDS) 184
11.6 小结 187
第12章 大数据 188
12.1 了解大数据 188
12.2 用Jug程序包把你的处理流程分解成几个任务 189
12.2.1 关于任务 189
12.2.2 复用部分结果 191
12.2.3 幕后的工作原理 192
12.2.4 用Jug分析数据 192
12.3 使用亚马逊Web服务(AWS) 194
12.3.1 构建你的第一台机器 195
12.3.2 用starcluster自动创建集群 199
12.4 小结 202
附录A 更多机器学习知识 203
A.1 在线资源 203
A.2 参考书 203
A.2.1 问答网站 203
A.2.2 博客 204
A.2.3 数据资源 205
A.2.4 竞争日益加剧 205
A.3 还剩下什么 205
A.4 小结 206
索引 207
前言/序言
如果你手里(或者你的电子阅读器里)有这本书,可以说,这是一个幸运的巧合。毕竟,每年有几百万册图书印刷出来,供数百万读者阅读,而你恰好选择了这一本。可以说,正是机器学习算法引领你来阅读这本书(或者说是把这本书引领到你面前)。而我们作为本书的作者,很高兴看到你愿意了解更多的“怎么做”和“为什么”。
本书大部分内容都将涉及“怎么做”。例如,怎么处理数据才能让机器学习算法最大限度地利用它们?怎么选择正确的算法来解决手头的问题?
我们偶尔也会涉及“为什么”。例如,为什么正确评估很重要?为什么在特定情形下一个算法比另一个算法的效果更好?
我们知道,要成为该领域的专家还有很多知识要学。毕竟,本书只介绍了一些“怎么做”和极小一部分“为什么”。但在最后,我们希望这些内容可以帮你“启航”,然后快速前行。
本书内容
第1章通过一个非常简单的例子介绍机器学习的基本概念。尽管很简单,但也可能会有过拟合的风险,这对我们提出了挑战。
第2章讲解了使用真实数据解决分类问题的方法,在这里我们对计算机进行训练,使它能够区分不同类型的花朵。
第3章讲解了词袋方法的威力,我们可以在没有真正理解帖子内容的情况下,用它来寻找相似的帖子。
第4章让我们超越将每个帖子分配给单个簇的方式。由于真实的文本可以处理多个主题,我们可以看到如何把帖子分配到几个主题上。
第5章讲解了如何用逻辑回归判定用户的答案是好还是坏。在这个情景的背后,我们将学会用偏差-方差的折中调试机器学习模型。
第6章介绍了朴素贝叶斯的工作原理,以及如何用它对推文进行分类,来判断推文中的情感是正面的还是负面的。
第7章讨论了一个处理数据的经典课题,但它在今天仍然有意义。我们用它构建了一个推荐系统,这个系统根据用户所输入的喜欢和不喜欢的信息,为用户推荐新的商品。
第8章同时使用多种方法改进推荐效果。我们还可以看到如何只根据购物信息构建推荐系统,而不需要用户的评分数据(用户并不总会提供这一信息)。
第9章举例说明,如果有人把我们收集而成的庞大音乐库弄乱了,那么为歌曲建立次序的唯一希望就是让机器来对歌曲分类。你会发现,有时信任别人的专长比我们自己构建特征更好。
第10章讲解了如何在处理图像这个特定情景下应用分类方法。这个领域又叫做模式识别。
第11章告诉我们还有其他什么方法可以帮我们精简数据,使机器学习算法能够处理它们。
第12章讲解了不断膨胀的数据规模,以及这为何会为数据分析造成难题。在本章中,我们利用多核或计算集群,探索了一些更大规模数据的处理方法。另外,我们还介绍了云计算(将亚马逊的Web服务当做云计算提供商)。
附录A罗列了一系列机器学习的优质资源。
阅读需知
本书假定读者了解Python,并且知道如何利用easy_install或pip安装库文件。我们并不依赖于任何高等数学知识,如微积分或矩阵代数。
总体而言,本书将使用以下版本的软件,不过如果你使用任何新近版本,也没有问题。
。 Python 2.7
。NumPy 1.6.2
。SciPy 0.11
。Scikit-learn 0.13
读者对象
本书适合想通过开源库来学习机器学习的Python程序员阅读参考。我们会通过示例概述机器学习的基本模式。
本书也适用于想用Python构建机器学习系统的初学者。Python是一个能够快速构建原型系统的灵活语言,它背后的算法都是由优化过的C或C++编写而成。因此,它的代码运行快捷,并且十分稳健,完全可以用在实际产品中。
《智能决策的基石:现代工程中的机器学习系统构建》 在当今技术飞速发展的浪潮中,从智能手机的推荐算法到自动驾驶汽车的感知系统,再到医疗诊断的辅助工具,机器学习(ML)已经渗透到我们生活的方方面面,成为驱动创新和效率提升的核心引擎。然而,将前沿的机器学习模型转化为稳定、可靠、可扩展的实际应用,并非易事。这其中涉及一系列复杂且相互关联的工程挑战,而《智能决策的基石:现代工程中的机器学习系统构建》正是为应对这些挑战而生。 本书并非聚焦于机器学习算法本身(例如,深度学习的特定架构或优化技巧),而是将目光投向了构建和运维机器学习系统所需的端到端的工程实践。它深入探讨了如何将机器学习模型从实验室的原型阶段,成功地部署到生产环境,并确保其在长期运行中的性能、可靠性和可维护性。我们将一同解构构建强大、高效且可信赖的机器学习系统的全景图,涵盖从数据收集、处理、模型训练,到模型部署、监控、更新以及整个生命周期的管理。 核心目标: 本书旨在为工程师、数据科学家、技术领导者以及任何希望在实际应用中成功部署和管理机器学习系统的专业人士,提供一套系统性的工程方法论和实用的设计原则。我们力求超越理论的束缚,聚焦于“如何做”——如何构建一个真正能够产生业务价值的机器学习系统。 内容概述: 本书将从宏观视角出发,逐步深入到各个关键工程环节。 第一部分:机器学习系统的基石——数据工程与管理 在机器学习的体系中,数据是驱动一切的燃料。本部分将详细阐述高质量数据工程对于构建成功ML系统的重要性,并深入探讨相关的实践。 数据生命周期管理: 我们将审视数据从产生、采集、存储、处理、分析,到最终归档或销毁的完整生命周期。理解数据在不同阶段的特点和需求,是构建健壮系统的第一步。 数据采集与集成: 面对来自不同源头、不同格式的海量数据,如何设计高效、可靠的数据采集管道?如何处理结构化、半结构化和非结构化数据?本书将探讨各种数据源的集成策略,以及应对数据延迟、数据丢失等问题的方案。 数据预处理与特征工程: 这是将原始数据转化为模型可用输入的关键步骤。我们将深入探讨数据清洗(缺失值处理、异常值检测与处理)、数据转换(标准化、归一化、编码)、特征提取(降维、组合特征)以及特征选择等核心技术。我们还将讨论如何构建可重用的特征存储,以提高开发效率和模型一致性。 数据质量与治理: “Garbage in, garbage out”的古训在ML领域尤为突出。本书将强调数据质量的重要性,并介绍数据校验、数据审计、数据血缘追溯等数据治理实践,以确保模型训练和预测的准确性与可信度。 大规模数据存储与处理: 针对TB甚至PB级别的数据量,如何选择合适的存储方案(如数据湖、数据仓库)?如何利用分布式计算框架(如Spark、Hadoop)进行高效的数据处理和转换?我们将讨论不同存储和计算技术的权衡与选择。 第二部分:模型开发与训练的工程化 将想法转化为模型,再将模型转化为可运行的代码,是ML系统开发的核心环节。本部分将关注模型开发过程中遇到的工程挑战,并提供解决方案。 可复现的实验环境: 如何确保模型训练的可复现性?我们将探讨实验跟踪工具(如MLflow, TensorBoard)的使用,记录模型参数、代码版本、数据集、评估指标等,从而实现实验的审计和复用。 模型版本管理与迭代: ML模型并非一成不变,需要不断迭代和优化。本书将讨论模型版本控制的策略,以及如何管理模型的不同版本,方便回滚和A/B测试。 分布式模型训练: 训练复杂的ML模型往往需要强大的计算资源。我们将探讨数据并行、模型并行等分布式训练技术,以及如何在云端或本地集群中高效地进行模型训练。 超参数调优的工程化: 手动调优超参数耗时耗力。本书将介绍自动化超参数搜索技术(如网格搜索、随机搜索、贝叶斯优化)的工程实现,以及如何将其集成到训练流程中。 模型评估与选择的标准化: 如何设计科学的评估指标,以及如何根据业务目标选择最优模型?我们将讨论交叉验证、模型选择的策略,以及如何构建标准化的评估流程。 构建可部署的模型: 模型开发结束后,需要将其打包成易于部署的格式。我们将探讨模型序列化(如Pickle, ONNX)和模型优化(如量化、剪枝)的技术,为后续的部署环节做好准备。 第三部分:模型部署与服务化的工程实践 模型开发完成只是第一步,如何将模型成功地推向生产环境,为用户提供服务,是ML系统成功的关键。 部署架构的选择: 离线批量预测、近实时服务、实时在线预测,不同的业务场景需要不同的部署模式。本书将深入分析各种部署模式的优缺点,以及适用的场景。 模型推理服务的构建: 如何设计高效、低延迟的模型推理服务?我们将讨论RESTful API、gRPC等服务化框架的选择,以及如何优化推理性能。 容器化部署与编排: Docker等容器技术极大地简化了部署过程。本书将探讨如何利用Docker打包ML模型和推理服务,并结合Kubernetes等容器编排平台实现弹性伸缩和高可用性。 模型部署的自动化(CI/CD for ML): 将CI/CD(持续集成/持续部署)的概念引入ML领域。我们将讨论如何自动化模型的构建、测试、部署和上线流程,加速模型的迭代和发布。 边缘设备上的模型部署: 对于IoT设备、移动端等资源受限的环境,如何部署和运行ML模型?本书将探讨模型轻量化、模型转换以及边缘计算框架的应用。 模型安全性与合规性: 在模型部署过程中,如何确保数据的隐私、模型的安全,以及满足相关的法规要求(如GDPR)?我们将讨论模型加密、访问控制等安全措施。 第四部分:模型监控、维护与迭代 ML系统在生产环境中并非一劳永逸,其性能会随着时间、数据分布的变化而衰减(模型漂移)。因此,持续的监控和维护至关重要。 模型性能监控: 如何实时监控模型的预测准确率、延迟、吞吐量等关键指标?我们将讨论如何构建有效的监控仪表盘和预警系统。 数据漂移与模型漂移的检测: 数据分布的变化(Data Drift)和模型预测能力的下降(Concept Drift)是ML系统面临的主要挑战。本书将深入探讨检测这些漂移的技术和策略。 模型再训练与更新策略: 当检测到模型漂移时,如何及时触发模型再训练?我们将讨论自动化再训练的流程、周期性更新和事件驱动更新等策略。 A/B测试与灰度发布: 如何在上线新模型前,对其进行小范围的验证?本书将介绍A/B测试和灰度发布等方法,以降低模型更新的风险。 故障排除与性能优化: 当模型出现异常或性能下降时,如何快速定位问题并进行修复?我们将讨论常见的故障排除技巧和性能调优方法。 MLOps(机器学习运维): 本部分将整合前述的监控、维护和迭代等内容,引出MLOps的概念,强调其作为一套文化、实践和工具的集合,旨在自动化和规范ML系统的整个生命周期,实现高效、可靠的ML系统运维。 第五部分:构建可信赖的机器学习系统 除了技术上的实现,构建一个能够被信任的ML系统同样重要。 模型可解释性与可解释AI (XAI): 理解模型为何做出某个预测,对于诊断问题、建立信任和满足监管要求至关重要。本书将介绍LIME、SHAP等可解释性技术。 模型鲁棒性与公平性: 如何确保模型在面对对抗性攻击时依然稳定?如何避免模型产生歧视性的预测?我们将探讨模型鲁棒性测试和公平性评估的方法。 模型审计与追溯: 建立完整的模型训练和预测记录,确保在出现问题时能够追溯原因。 负责任的AI实践: 探讨在ML系统设计和部署中,如何考虑伦理、社会影响和潜在的负面后果。 本书特点: 工程导向: 强调实际操作和工程实现,而非纯粹的理论推导。 系统性: 覆盖ML系统从数据到部署、监控、维护的完整生命周期。 实用性: 提供大量可借鉴的设计模式、最佳实践和工具选型建议。 面向未来: 关注MLOps等新兴领域,帮助读者构建面向未来的ML系统。 《智能决策的基石:现代工程中的机器学习系统构建》将成为您在机器学习落地过程中不可或缺的指南。通过阅读本书,您将掌握构建、部署和维护强大的机器学习系统的工程能力,将前沿的AI技术转化为实际的业务价值。