关于我们
书单推荐
新书推荐
|
基于云计算的数据科学 在本书中,你将学到: ·使用App Engine应用实现自动化定期数据摄取。 ·在Google Data Studio中创建并生成数据仪表板。 ·构建实时数据分析管道,实现流式数据分析。 ·使用Google BigQuery实现可交互式数据探索。 ·在Cloud Dataproc群集上创建贝叶斯模型。 ·使用Spark构建逻辑回归机器学习模型。 ·使用Cloud Dataflow数据管道计算时间聚合特征。 ·使用TensorFlow构建高性能预测模型。 ·将你的模型部署为微服务,并且从批处理和实时数据管道中使用它。
前言 我目前在Google担任的角色使我可以与很多领域的数据科学家和数据工程师共同 工作,将数据处理和分析流程迁移到公有云上。对于很多工作来说,与在本地部署 上所做的都一样,方法也相同,区别只是将环境换成了租用的计算资源。尽管如此,目光长远的用户依然会重新思考他们的系统设计,改变使用数据的方式,从而能够更快地推动创新。 早在 2011 年,《哈佛商业评论》(Harvard Business Review)的一篇文章就提到, 云计算最大的收益之一,是帮助组织和机构以前所未有的方式共同工作。现在,这 一观点已得到广泛认可。麻省理工学院2017年的一项调查发现,通过向公有云转移, 更多受访者(45%)表示提高了敏捷性,而不是节约成本(34%)。 在本书中,我们将用示例向你展示这种全新、具有变革性,且更具协作性的数据科学实践方法。通过本书,你将学习如何实现端到端的数据管道。首先,我们会以无服务器的方式摄取数据,然后介绍数据探索、仪表板、关系型数据库、流数据,并最终展示如何训练并运行一个机器学习模型。本书涵盖了数据服务的所有方面,因为对于数据工程师来说,他们不仅要参与服务设计、开发统计和机器学习模型,还要掌握如何在大规模生产环境中实时部署和实施。 这本书适合谁 如果你使用计算机处理数据,那么这本书会适合你。本书针对的读者可以是数据分析师、数据库管理员、数据工程师、数据科学家,也可以是系统程序员。即使你现在的工作范围比较有限(也许只进行数据分析或构建模型,或者只是DevOps), 但只要你想进一步提升自己,那么就应该了解如何实现数据科学建模,以及如何在 生产系统下规模化实施。 Google 云计算平台旨在让你忽略基础架构的存在。无论是 Google BigQuery、Cloud Dataflow、Cloud Pub/Sub,还是 Cloud ML引擎,所有这些受欢迎的数据服务都是 无服务器且支持自动缩放的。你在 BigQuery 上提交的查询会在成千上万的节点上运 行,然后返回处理结果,你也无需启动群集或安装任何软件。同样,当你在Cloud Dataflow 中提交数据管道,或是在 Cloud Machine Learning Engine 中提交机器学习 任务时,你可以对数据进行大规模处理,并实现大规模模型训练,且无需担心集群 管理或故障恢复。Cloud Pub/Sub 是一项全球消息服务,该服务可以在无需人工干预 的情况下自动对订阅者和发布者的吞吐量和数量进行缩放。即使是开源解决方案(如 Apache Spark),Google云计算平台也可以轻松满足你的要求。你可以将数据保存 在 Google Cloud Storage上,而不是保存在 HDFS中,然后专门针对你的 Spark任 务启动一个群集即可。当任务执行完成,你可以毫无顾虑地删除该群集。由于这些群集的基础架构专门针对特定任务,因此你无需担心硬件会过度配置,也不必担心 性能不足等问题。另外,在 Google 云计算平台上,无论是存储中还是传输中的数据 都会被加密,以确保数据安全。这种能够让数据科学家从基础设施管理工作中得以解放的工作方式,无疑是令人难以置信的。 在 Google云计算平台上执行数据任务时,我们之所以能忘记虚拟机和群集的原因 是云计算平台上的网络连接性能。Google云计算平台数据中心内的网络单向带宽为 1 PBps,因此可以持续、高速地读取 Cloud Storage 中的数据。这就意味着你不需要 像传统的 MapReduce作业那样分割数据。相应的,Google云计算平台可以根据需 要将数据移动到新的计算节点,从而实现对计算任务的自动伸缩。因此,在 Google 云计算平台上开展数据科学工作时,你可以从群集管理中解放出来。 这些自动缩放、全面托管的云服务使大规模实施数据科学模型变得更加容易,这就是数据科学家不再需要将模型交给数据工程师的原因。相反,他们可以自己编写数据科学任务、提交到云端,然后这些任务就能以自动伸缩的方式自动执行。这种方式同时也让数据科学软件包变得越来越简单。因此,对于工程师来说,利用唾手可得的数据,结合预先准备好的模型来实现并运行自己的原始(通常已经是非常高质量的)模型已经变得非常容易。通过精心设计的软件包和易于使用的API,你无需 了解数据科学算法的深奥细节,所有你需要知道的,只有每种算法的作用以及如何将这些算法连接起来解决实际问题。通过对数据科学和数据工程进行这种融合,你就可以将自己的翅膀伸展到目前角色之外了。 在阅读本书时,我强烈建议你尝试使用示例代码,而不是简单地阅读文字内容。本 书提供了用于构建端到端管道的完整代码,你可以在 GitHub(https://github.com/ GoogleCloudPlatform/data-science-on-gcp)上获取。你可以创建一个 Google云计 算平台项目,在阅读完每一章之后,尝试参考示例代码和每个文件夹下的说明文件 README.md 注 1 来重复我们在书中所做的操作。 本书内容约定 本书使用以下排版约定: 斜体(italic) 表示新术语、网址、电子邮件地址、文件名和文件扩展名等。 等宽字体(constant width) 表示程序代码以及段落内用于引用的代码内容,如变量或函数名、数据库、数 据类型、环境变量、声明语句和关键字等。 等宽粗体(constant width bold) 表示应由用户逐字输入的命令或其他文本。 等宽斜体(constant width italic) 表示应由用户提供的值或根据上下文确定的值而替换的文本。 使用代码示例 更多补充资料(包括示例代码、练习等)可以从这里下载https://github.com/ GoogleCloudPlatform/data-science-on-gcp。 本书的目的是帮助你完成工作任务。通常,对于书中提供的示例代码,你可以直接在自己的程序和文档中使用,无需联系我们获取授权,除非你要再次分发大量示例代码。举例来说,如果你在编写程序时使用了本书提供的一部分代码,不用担心授 权问题;但如果你要以CD-ROM等方式销售或分发O’Reilly系列图书中的示例代码, 则需要获得我们的授权;在解答问题时如需引用本书提供的代码,你不需要取得授权;但如果你在自己的产品文档中使用本书的任意代码,则必须获得授权。 我们不强制要求版权声明,但我们感谢你能够引用本书。引用格式一般包含书 名、作者、出版商和 ISBN,例如:“Data Science on the Google Cloud Platform by Valliappa Lakshmanan (O’Reilly). Copyright 2018 Google Inc.,978-1-491-97456-8”。 如果你认为在使用示例代码时超出了合理范围或上述许可范围,请随时与我们联系: permissions@oreilly.com。 联系我们 任何有关本书的意见或疑问,请按照以下地址联系出版社。 美国: O’Reilly Media, Inc. 1005 Gravenstein Highway North Sebastopol, CA 95472 中国: 北京市西城区西直门南大街 2 号成铭大厦 C 座 807 室(100035) 奥莱利技术咨询(北京)有限公司 我们为本书提供了专门的网页,用于发布内容勘误、范例和其他相关信息。你可以 通过这里访问 http://bit.ly/datasci_GCP。 有关本书的任何评论或技术问题,请发送电子邮件至 bookquestions@oreilly.com。 了解与本书相关的更多信息、课程、会议和新闻,请访问我们的网站http://www. oreilly.com。 我们的 Facebook:http://facebook.com/oreilly。 我们的 Twitter:http://twitter.com/oreillymedia。 我们的 YouTube: http://www.youtube.com/oreillymedia。 致谢 大约一年前,我在 Google 工作时,我曾经简单地使用公有云作为租赁基础设施的一 种方式,配置自己的虚拟机,并在虚拟机上安装我要用的软件,然后跟平时的工作 流程一样运行我的数据处理任务。幸好,我意识到Google的大数据技术栈与众不同, 所以我开始学习如何充分利用 Google 云计算平台提供的数据和机器学习工具。 对我来说,最好的学习方法是编写代码,我也的确在这么做。在一次 Python小组聚 会上,大家让我讲一讲 Google 云计算平台,当时我用自己的代码做了展示和介绍。 后来的事实证明,在数据科学领域,在对比不同解决方法时,对听众来说,使用代码来展示如何构建端到端系统是颇具教育意义的。后来,我就把那次演讲的主要内 容写成本书的出版计划,并发给了 O’Reilly Media。 当然,本书的内容会比 60 分钟的代码演示深入许多。想象这样的场景,有一天在你 上班时收到了一封来自公司新员工发来的电子邮件,他在你们公司工作的时间还不 到 6 个月,但不知何故,他决定将你负责构建的一套复杂的系统平台写成一本书, 并寻求你的帮助。他和你既不在同一个团队,帮助他也不属于你的工作职责,你们 甚至不在同一个办公室工作。你会如何回应?你愿意吗? Google之所以能成为理想的工作场所,都是因为这里的同事。这也是 Google公司 文化的一个证明,这里的许多人,无论是工程师、技术主管、产品经理、解决方案 架构师、数据科学家、法律顾问,还是总监,他们都可以跨越不同团队,愉快地将自己的专业知识分享给他们从未见过的人(实际上我也从未见过其中很多人)。这本书也因为他们的贡献而变得更好,让本书受益无穷,这些人包括(按字母顺序排 列)William Brockman、Mike Dahlin、Tony Diloreto、Bob Evans、Roland Hess、 Brett Hesterberg、Dennis Huo、Chad Jennings、Puneith Kaul、Dinesh Kulkarni、 Manish Kurse、Reuven Lax、Jonathan Liu、James Malone、Dave Oleson、Mosha Pasumansky、Kevin Peterson、Olivia Puerta、Reza Rokni、Karn Seth、Sergei Sokolenko 及 Amy Unruh。同时,我还要特别感谢 Mike Dahlin、Manish Kurse和 Olivia Puerta 对本书每章内容的精心校对。在本书预览时,我收到了来自 Anthonios Partheniou和 David Schwantner的错误报告,这些报告很有价值。不用多说,任何 遗留的错误都由我负责。 在写作本书时,我曾一度陷入困境。有时候,遇到的是技术问题,对此我要感谢 (按字母顺序排列)Ahmet Altay、Eli Bixby、Ben Chambers、Slava Chernyak、 Marian Dvorsky、Robbie Haertel、Felipe Hoffa、Amir Hormati、Qi-ming (Bradley) Jiang、Kenneth Knowles、Nikhil Kothari 和 Chris Meyers 为我指引了前进方向。而 在有些时候,我需要搞清楚公司的政策或需要与正确的团队建立联系,获取所需的文档或统计数据。对此,我感谢那些在关键时刻为我提供帮助的同事,如果没有 他们,本书会逊色很多(也是按字母顺序排列):Louise Byrne、Apurva Desai、 Rochana Golani、Fausto Ibarra、Jason Martin、Neal Mueller、Philippe Poutonnet、 Brad Svee、Jordan Tigani、William Vampenebe和Miles Ward。谢谢大家的帮助和鼓励。 同时,我还要感谢 O’Reilly 团队的 Marie Beaugureau、Kristen Brown、Ben Lorica、 Tim McGovern、Rachel Roumeliotis 和 Heather Scherer 对我的信任,从而让本书从 草稿到出版没有遇到问题。 最后,也是最重要的,我要感谢 Abirami、Sidharth和 Sarada的理解和耐心,当我 专注于写作和编码时,他们亦是如此。是你们,让这一切变得有价值。 Valliappa Lakshmanan是Google云计算平台专家服务部门的技术主管。他希望将机器学习普及化,让任何人、从任何地方,在无需深入了解统计学、编程知识,也无需购买大量硬件的情况下使用Google云平台提供的卓越架构。
目录 前言 1 第 1 章 用数据做出更好的决策 9 许多相似的决策 11 数据工程师的角色 12 云计算让数据工程师成为可能 14 云计算使数据科学能力得到倍增 18 用案例研究揭示难解的真相 20 基于概率的决策 21 数据和工具 27 代码入门 28 本章总结 30 第 2 章 将数据摄取到云端 31 航空公司准点数据 31 可知性 33 训练 – 服务偏差 34 下载程序 35 数据集属性36 为什么不就地存储数据? 38 向上扩展 40 水平扩展 42 使用 Colossus 和 Jupiter 让数据存放在原位 44 摄取数据 47 对 Web 表单进行反向工程 48 下载数据集51 数据探索和清理 53 将数据上传到 Google 云端存储 55 每月下载计划 58 使用 Python 摄取数据 61 Flask Web App 68 在 App Engine 上运行 69 确保 URL 的安全 70 计划 Cron 任务 70 本章总结 73 代码实验 74 第 3 章 创建引人注目的仪表板 76 使用数据仪表板对模型进行解释 77 为什么要先构建数据仪表板? 79 准确、忠实于数据且良好的设计 80 将数据加载到 Google Cloud SQL 83 创建 Google Cloud SQL 实例 83 与 Google 云计算平台交互84 控制对 MySQL 的访问 86 创建表 87 向表中填充数据 89 建立第一个模型 90 应急表 91 阈值优化 92 机器学习 93 构建数据仪表板 94 Data Studio 入门 94 创建图表 96 为最终用户添加控件 98 用饼图显示所占比例 100 解释应急表105 本章总结 107 第 4 章 流数据:发布和摄取 109 设计事件馈送 109 时间校正 112 Apache Beam/Cloud Dataflow 113 解析机场数据 115 添加时区信息 116 将时间转换为 UTC 117 修正日期 120 创建事件 121 在云中运行数据管道 122 将事件流发布到 Cloud Pub/Sub 126 获取要发布的数据记录 129 对数据记录进行分页 130 构建事件集合 130 发布事件集合 131 实时流式处理 132 Java Dataflow 中的流式数据 133 执行流数据处理 138 使用 BigQuery 分析流式数据 140 实时数据仪表板 141 本章总结 144 第 5 章 交互式数据探索 145 探索性数据分析 146 将航班数据加载到 BigQuery 中 148 无服务器列式数据库的优点 148 访问控制 151 联合查询 156 摄取 CSV 文件 158 Cloud Datalab 中的探索性数据分析 164 Jupyter 笔记本 165 Cloud Datalab 166 在 Cloud Datalab 中安装软件包 169 适用于 Google 云计算平台的 Jupyter 魔术命令 170 质量控制 176 反常的数值176 清除异常数据:大数据是不同的 178 不同出发延误条件下的抵达延误 182 概率决策阈值的应用 184 经验概率分布函数 185 答案 187 评估模型 188 随机乱序分组 188 按日期分割189 训练和测试191 本章总结 196 第 6 章 Cloud Dataproc上的 贝叶斯分类器 197 MapReduce 和 Hadoop 生态系统 197 MapReduce 的工作原理 198 Apache Hadoop 200 Google Cloud Dataproc200 需要更高级的工具 202 关注任务,而不是集群 204 初始化操作205 使用 Spark SQL 进行量化 206 Cloud Dataproc 上的 Google Cloud Datalab 208 使用 BigQuery 进行独立检查 209 Google Cloud Datalab 中的 Spark SQL 211 直方图均衡化 215 动态调整群集大小 219 使用 Pig 实现贝叶斯分类 222 在 Cloud Dataproc 上运行 Pig 任务 224 将日期限制在训练数据集中 225 决策标准 226 对贝叶斯模型进行评估 229 本章总结 231 第 7 章 机器学习:Spark上的逻辑回归 233 逻辑回归 234 Spark 机器学习库 237 开始使用 Spark 机器学习 238 Spark 逻辑回归 239 创建训练数据集 241 处理边界情况 243 创建训练示例 245 训练 246 使用模型进行预测 249 对模型进行评估 250 特征工程 253 实验框架 254 创建保留数据集 257 特性点的选择 258 特征点的缩放和剪切 261 特征转换 263 变量分类 267 可扩展、可重复和实时性 269 本章总结 270 第 8 章 时间窗化的聚合特征 272 平均时间的需求 272 Java 中的 Dataflow 274 建立开发环境 275 使用 Beam 过滤数据 276 数据管道的控制选项和文本 I/O 280 在云端运行281 解析为对象283 计算平均时间 286 分组及合并286 并行执行和侧面输入 289 调试 291 BigQueryIO 292 对航班对象进行转换 294 批处理模式下的滑动窗口计算 295 在云端运行297 监控、故障排除和性能调整 299 数据管道的故障排除 301 侧面输入的限制 302 重新设计数据管道 305 删除重复项307 本章总结 310 第 9 章 使用TensorFlow的 机器学习分类器 312 使用更复杂的模型 313 将数据读入 TensorFlow 317 建立实验 322 线性分类器323 训练和评估的输入函数 325 服务输入函数 326 创建实验 326 执行训练 327 云中的分布式训练 329 对 ML 模型进行改进 331 深度神经网络模型 332 嵌入 335 宽深模型 337 超参数调整341 部署模型 349 使用模型预测 350 对该模型的解释 351 本章总结 353 第 10章 实时机器学习 355 调用预测服务 356 用于服务请求和响应的 Java 类357 发送请求并解析响应 359 预测服务的客户端 360 将预测结果添加到航班信息 361 批量输入和输出 361 数据处理管道 363 识别无效的服务响应 364 批量处理服务请求 365 流式数据管道 367 扁平化 PCollections 368 执行流式数据管道 369 延迟的和无序的数据记录 371 水印和触发器 376 事务,吞吐量和延迟 378 几种可选的流式接收器 379 Cloud Bigtable 380 设计表 382 设计行键 383 流式传输至 Cloud Bigtable 384 查询 Cloud Bigtable 中的数据 386 评估模型的性能 387 持续训练的必要性 388 评估管道 389 性能评估 391 边际分布 391 检查模型的行为 393 识别行为变化 396 本章总结 398 全书总结 398 附录 有关机器学习数据集中敏感数据的注意事项 401
你还可能感兴趣
我要评论
|