描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787302619239
通过对《跨平台机器学习:ML.NET架构及应用编程》的学习,读者可以在专家的指导下,运用跨平台机器学习框架ML.NET来创建机器学习解决方案。
有了ML.NET,机器学习可以为所有.NET开发人员赋能,《跨平台机器学习:ML.NET架构及应用编程》可以帮助读者将ML.NET应用于实际的生产解决方案中。在对ML.NET进行基本概述之后,作者阐明了用于回归、分类、排名、异常检测等的微框架(ML任务)。对于每个ML任务,都提供了克服现实世界中常见挑战的见解。同时,书中还着重介绍了神经网络Keras,展示了一个完整的机器学习应用,以及如何在.NET中利用流行的Python 工具。
微软最有价值专家MVP(16届)在书中展示了以下主题:
l 构建更智能的机器学习解决方案,更贴近用户的需求;
l 了解ML.NET如何实例化经典ML管道,并简化情绪分析、欺诈检测和价格预测等常见场景;
l 实施数据处理和培训,生产基于机器学习的软件解决方案;
l 从基本预测转向更复杂的任务,包括分类、异常检测、推荐和图像分类;
l 执行二分类和多分类;使用聚类和无监督学习将数据组织成同质组;
l 发现异常值以检测可疑行为、欺诈、故障设备或其他问题;
l 充分利用 ML.NET 强大、灵活的预测功能;
l 实现排名、推荐、协同过滤的相关功能;
l 使用 ML.NET 迁移学习快速构建图像分类解决方案;
l 当标准算法和浅层学习不够时转向深度学习;
l 通过 Azure认知服务API购买神经网络,或探索使用 Keras和TensorFlow 构建自己的神经网络。
ML.NET 是面向.NET 开发人员的开源机器学习框架,可以帮助开发人员使用 C# 或 F# 创建自定义机器学习模型,从而将机器学习集成到 Web、移动、桌面、游戏和物联网应用中。《跨平台机器学习:ML.NET架构及应用编程》以ML.NET 为核心,介绍了架构及其基本知识,介绍了ML.NET 的八大机器学习应用场景:预测、分类、聚类、异常检查、预测、推荐、图像分类以及神经网络。 《跨平台机器学习:ML.NET架构及应用编程》适合数据工程师使用和参考。
第1章 人工智能软件 001
第2章 透视ML.NET架构 011
第3章 ML.NET基础 033
第4章 预测任务 055
第5章 分类任务 091
第6章 聚类任务 125
第7章 异常检查任务 149
第8章 预测任务 177
第9章 推荐任务 199
第10章 图像分类任务 219
第11章 神经网络概述 237
第12章 用于识别护照的神经网络 255
附录 模型的可解释性 271
详 细 目 录
第1章 人工智能软件 001
1.1 软件的源起 002
1.1.1 计算机的形式化 002
1.1.2 计算机工程设计 003
1.1.3 人工智能的诞生 004
1.1.4 作为副作用的软件 004
1.2 软件在今天的作用 005
1.2.1 自动化任务 006
1.2.2 反映现实世界 007
1.2.3 赋能用户 008
1.3 人工智能如同软件 008
第2章 透视ML.NET架构 011
2.1 Python与机器学习 012
2.1.1 Python为什么在机器学习中如此受欢迎 012
2.1.2 Python机器学习库的分类 013
2.1.3 Python模型顶部的端到端方案 016
2.2 ML.NET概述 017
2.2.1 ML.NET中的学习管道 018
2.2.2 模型训练执行摘要 024
2.3 使用训练好的模型 028
2.3.1 使模型可从外部调用 029
2.3.2 其他部署场景 030
2.3.3 从数据科学到编程 030
2.4 小结 031
第3章 ML.NET基础 033
3.1 通往数据工程 033
3.1.1 数据科学家的角色 034
3.1.2 数据工程师的角色 035
3.1.3 机器学习工程师的角色 036
3.2 从什么数据开始 037
3.2.1 理解可用的数据 037
3.2.2 构建数据处理管道 040
3.3 训练步骤 043
3.3.1 选择算法 044
3.3.2 衡量算法的实际价值 045
3.3.3 计划测试阶段 046
3.3.4 关于指标 047
3.4 在客户端应用程序中使用模型 048
3.4.1 获取模型文件 049
3.4.2 完整项目 049
3.4.3 预测打车费用 050
3.4.4 可伸缩性的考虑 052
3.4.5 设计恰当的用户界面 053
3.5 小结 054
第4章 预测任务 055
4.1 管道和评估器链 056
4.1.1 数据视图 056
4.1.2 转换器 057
4.1.3 估算器 058
4.1.4 管道 059
4.2 回归ML任务 059
4.2.1 ML任务的常规方面 060
4.2.2 支持的回归算法 060
4.2.3 支持的校验技术 063
4.3 使用回归任务 066
4.3.1 可用的训练数据 066
4.3.2 特征工程 071
4.3.3 访问数据库内容 074
4.3.4 合成训练管道 077
4.4 机器学习深入思考 087
4.4.1 简单线性回归 087
4.4.2 非线性回归 088
4.5 小结 089
第5章 分类任务 091
5.1 二分类机器学习任务 091
5.1.1 支持的算法 092
5.1.2 支持的验证技术 094
5.2 情感分析的二分类 094
5.2.1 了解可用的训练数据 094
5.2.2 特征工程 098
5.2.3 合成训练管道 101
5.3 多分类ML任务 106
5.4 使用多分类任务 110
5.4.1 了解可用的数据 110
5.4.2 合成训练管道 113
5.5 机器学习深入思考 121
5.5.1 分类的多面性 121
5.5.2 情感分析的另一个视角 122
5.6 小结 123
第6章 聚类任务 125
6.1 聚类ML任务 125
6.1.1 无监督学习 126
6.1.2 了解可用的训练数据 126
6.1.3 特征工程 131
6.1.4 聚类算法 132
6.1.5 合成训练管道 137
6.1.6 设置客户端应用程序 139
6.2 机器学习深入思考 143
6.2.1 第一步始终是聚类分析 144
6.2.2 数据集的无监督缩减 145
6.3 小结 147
第7章 异常检查任务 149
7.1 什么是异常 149
7.2 检查异常情况的常规方法 150
7.2.1 时间序列数据 150
7.2.2 统计技术 153
7.2.3 机器学习方法 154
7.3 异常检查ML任务 157
7.3.1 了解可用的训练数据 157
7.3.2 合并训练管道 160
7.3.3 设置客户端应用程序 167
7.4 机器学习深入思考 171
7.4.1 预测性维护 172
7.4.2 金融诈骗 174
7.5 小结 175
第8章 预测任务 177
8.1 预测未来 177
8.1.1 简单预测方法 178
8.1.2 预测的数学基础 178
8.1.3 常见的分解算法 180
8.1.4 SSA算法 181
8.2 预测ML任务 183
8.2.1 了解可用的数据 183
8.2.2 合成训练管道 185
8.2.3 设置客户端应用程序 190
8.3 机器学习深入思考 193
8.3.1 不是公园里的随机漫步 194
8.3.2 时间序列的其他方法 194
8.3.3 电力生产预测 195
8.4 小结 198
第9章 推荐任务 199
9.1 深入信息检索系统 200
9.1.1 排名的基本艺术 201
9.1.2 推荐的灵活艺术 201
9.1.3 协同过滤的精妙艺术 203
9.2 ML推荐任务 204
9.2.1 了解可用的数据 204
9.2.2 合成训练管道 208
9.2.3 设置客户端应用程序 212
9.3 机器学习深入思考 215
9.3.1 如果喜欢奈飞 215
9.3.2 如果你不喜欢奈飞 216
9.4 小结 217
第10章 图像分类任务 219
10.1 迁移学习 220
10.1.1 流行的图像处理神经网络 220
10.1.2 其他图像神经网络 220
10.2 通过合成进行迁移学习 221
10.2.1 ML.NET中的迁移学习模式 221
10.2.2 新的图像分类器的总体目标 222
10.2.3 了解可用的数据 223
10.2.4 合成训练管道 226
10.2.5 设置客户端应用程序 228
10.3 ML图像分类任务 230
10.3.1 图像分类API 231
10.3.2 使用图像分类API 232
10.4 机器学习深入思考 233
10.4.1 人脑的魔法 233
10.4.2 人工打造的神经网络 234
10.4.3 重新训练 235
10.5 小结 235
第11章 神经网络概述 237
11.1 前馈神经网络 237
11.1.1 人工神经元 238
11.1.2 网络的层级 240
11.1.3 Logistic神经元 241
11.1.4 训练神经网络 243
11.2 更复杂的神经网络 246
11.2.1 有状态神经网络 246
11.2.2 卷积神经网络 249
11.2.3 自动编码器 252
11.3 小结 253
第12章 用于识别护照的神经网络 255
12.1 使用Azure认知服务 255
12.1.1 问题的剖析和解决方案 256
12.1.2 与ID表单识别器协同工作 257
12.2 自己动手打造神经网络 261
12.2.1 神经网络的拓扑 262
12.2.2 训练时的麻烦 267
12.3 机器学习深入思考 268
12.3.1 商品和垂直解决方案 269
12.3.2 什么时候只能使用定制解决方案 269
12.4 小结 270
附录 模型的可解释性 271
我们需要有人能够对未来可能的新事物抱有梦想,想想为什么以前没有。
——约翰·肯尼迪,1963
今天,数据科学家持续受到热捧。丰富的数据,触手可及的云计算能力,这是机器学习最终的完美世界吗?从表面看,似乎已经有了所有必要的食材来烹制“应用人工智能”(applied AI)。但是,我们实际上仍然缺乏一个明确有效的组合方法。
如同其他学科具有其目的一样,数据科学的目的是证明某些事情是可能的。然而,数据科学本身并不生产解决方案,那是机器学习领域的另一个分支——数据工程——的目的。
各大企业正在热招数据科学家,但好的数据科学团队,其成果通常是可运行的模型,该模型的软件质量往往只是一个原型,而非可投入生产的工件。算法与数据紧密结合,且数据必须是完整、干净和平衡的。这部分工作谁来负责却往往并不明确。如此说来,这样的工作最多也只能算是半成品。然而,对于其业务会产生大量数据的大型组织(如能源公共事业、金融机构和制造业),组建一个与应用AI流水线。“生产”部分脱钩的数据科学团队。预算明显有限的小公司,则以服务方式采购一些应用数据科学的工作成果,这样可能更经济实惠。
从数据科学到生产,通常有一段很长的路要走,也有很多数据方面的工作要做,需要考虑下面几点:
数据如何存储?每天还是每小时?
数据是否要以某种中间格式的方式临时复制?
要想让模型工作的话,需要进行哪些转换?如何实现自动化?
一旦部署到生产环境,该模型的性能如何?
预计要以什么频率重新训练模型以适应实时数据(live data)的需求?
如果重新训练很频繁,又应该如何自动化任何相关任务?
收集最新数据集、运行训练并部署最新模型又该如何进行?
在机器学习模型方面,最大的问题可以追溯到所采用的数据。2021年7月,《麻省理工技术评论》发表了一篇文章,论述了人工智能在新冠疫情下所产生的影响。这篇文章的要点在于,在对适度开发的模型进行大规模审查时,从中发现的许多问题都与研究人员用来开发其工具的数据质量差有关。这样,几乎所有工具几乎都失去了其有效的用途。于是人们开始更好地理解数据工程和数据质量的作用。通过CSV稀疏文件来处理数据对探查某个想法来说是足够的,但要想建立一个健壮的基础结构,还是需要换用别的数据库(关系型、NoSQL或图)和某些严肃的查询语言。而如果需要这样做,就很有可能需要超越Python,进入经典编程语言的领域。也就是说,仅仅掌握数据科学还不够,还必须掌握严肃的编程和数据库技术。另一方面,从数据中寻找和特定业务相关的见解,正是我们最终的目的。
目前,常规意义上的AI(更具体地说就是机器学习)只是垂直问题的商品和直接解决方案之间的一种权衡。商业化的云服务提供安全、稳定和可接受的质量。虽然并不能涵盖所有可能的情况,但它们正在扩展,而且在不久的将来还有更多的扩展。
所有这一切都营造了一个环境,使我们能够构建同样的旧软件,却可以使用更强大的工具。我们不只是在谈论编程语言的基元和由框架提供的一些类。我们还在谈论由机器学习算法和商业化的云服务支持的智能和预测性工具。
在这个背景下,ML.NET完美充当了数据工程和商业化数据科学之间的桥梁,它和.NET Framework完全集成。ML.NET有用于浅层学习的内置算法、对Azure云服务的便利访问以及与预训练模型(如Keras或TensorFlow网络)的
整合。
本书面向的读者
在我们看来,如果您已经在用.NET,那么ML.NET就是做机器学习的完美工具,无论选择的算法和模型的内部机制是什么。
本书针对的是愿意(或需要)进入机器学习世界的.NET开发人员。如果是软件开发人员,想把数据科学和机器学习技能添加到自己的技能库中,那么本书就是理想的选择。如果是数据科学家,愿意学习更多Python以外的软件知识,那么本书也是一个理想的选择。
本书不面向的读者
本书从ML.NET的角度讨论机器学习。ML.NET是一个特定于平台的库。它主要是为数据工程师和机器学习工程师(而不是普通的数据科学家)量身定制的。这里澄清一下,机器学习工程师的核心职责是将外部训练好的模型实际融入到客户应用程序中执行更精细的任务,并对建立和训练基于数据科学规范的模型的过程进行监督。本书讨论如何选择具体的工具。
如果对机器学习解决方案的实际生产没有多大兴趣,这本书可能不是最理想的参考。它并不会展示前沿的数据科学技术,不过会教你如何开始利用ML.NET团队多年来一直在做的事情——在.NET中整合简单而有效的机器学习解决方案。
本书的组织方式
本书分为三部分。
第1章~第3章对ML.NET库进行基础性的概述。
第4章~第10章概述如何对常见问题进行数据处理、训练和评估等专门任务。这些问题包括回归、分类、排名和异常检测等。
第11章~第13章专门讨论所有浅层学习任务都不合适的场景下可能需要用到的神经网络。此外还要概述神经网络,提供一个同时使用商业化Azure认知服务和“手工打造”的定制Keras网络的护照识别的例子。
最后,附录要讨论模型的可解释性。
系统需求
要想完成本书的练习,需要准备好以下软硬件:
一台运行Windows 10/11,Linux或macOS的计算机
任意版本的Visual Studio 2019/2021或者Visual Studio Code
接入互联网,以便下载软件和本书示例文件
代码示例
书中所有代码(包括可能的勘误和补充内容)都可以通过以下网址获得:
https://MicrosoftPressStore.com/ProgrammingMLNET/downloads
评论
还没有评论。