描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787111600510
编辑推荐
机器学习已逐步成熟。利用H2O软件,可以通过一个简单、易用的开源框架来进行机器学习和数据分析,该软件可支持广泛的操作系统和语言以及大数据规模。本书主要讲授如何使用H2O的学习算法,着重介绍了其中有用的部分以快速获得高效的结果。如果已熟悉R或Python、了解一些统计知识,并具有一些数据处理的经验,作者Darren Cook将首先介绍H2O的基础知识,然后在不同示例数据集上进行机器学习实践。在此将会学习一些目前常用的机器学习技术,如深度学习、随机森林、无监督式学习和集成学习。?学习如何利用H2O导入、处理和导出数据;?分析机器学习的关键概念,如交叉验证和验证数据集;?应用于包括回归、多项式分类和二项式分类在内的三种不同数据集;?利用H2O通过四种监督式机器学习算法来分析每一个样本数据集;?理解聚类分析和其他无监督式机器学习算法是如何工作的。
内容简介
《基于H2O的机器学习实用方法:一种强大的可扩展的人工智能和深度学习技术》主要介绍了H2O的基本概念和应用。全书共11章,首先介绍了H2O在R和Python下的安装和启动、数据导入/导出和操作以及本书所用的三种不同示例数据集和常用的模型参数。然后分别介绍了随机森林、梯度推进机、线性模型、深度学习和无监督式学习等算法在三种不同数据集中的应用,分析对比了默认算法和改进算法的性能。另外,还讨论了相关其他内容。
目 录
译者序原书前言第 1章 安装和快速启动 \ 1 1.1 安装准备 \ 1 1.1.1 安装 R \ 1 1.1.2 安装 Python \ 2 1.1.3 隐私保护 \ 2 1.1.4 安装 Java \ 2 1.2 利用 R(CRAN)安装 H2O \ 3 1.3 利用 Python(pip)安装 H2O \ 4 1.4 个学习示例 \ 5 1.4.1 利用 Python进行训练和预测 \ 8 1.4.2 利用 R进行训练和预测 \ 10 1.4.3 性能与预测 \ 12 1.4.4 运气不佳 \ 13 1.5 Flow \ 13 1.5.1 数据 \ 14 1.5.2 模型 \ 16 1.5.3 预测 \ 17 1.5.4 Flow中的其他注意事项 \ 18 1.6 小结 \ 18第2章 数据导入/数据导出\19 2.1 存储空间要求 \ 19 2.2 数据准备 \ 20 2.3 数据导入到 H2O \ 21 2.3.1 加载 csv文件 \ 21 2.3.2 加载其他格式文件 \ 23 2.3.3 从 R中直接加载 \ 23 2.3.4 从 Python中直接加载 \ 25 2.4 数据操作 \ 26 2.4.1 懒操作、命名和删除 \ 26 2.4.2 数据汇总 \ 27 2.4.3 列操作 \ 28 2.4.4 行聚合 \ 29 2.4.5 索引 \ 30 2.4.6 H2O中的数据拆分 \ 31 2.4.7 行和列 \ 35 2.5 数据从 H2O中导出 \ 38 2.5.1 导出数据帧 \ 38 2.5.2 POJO \ 39 2.5.3 模型文件 \ 40 2.5.4 保存所有模型 \ 40 2.6 小结 \ 41第3章 数据集 \ 42 3.1 数据集:建筑节能 \ 42 3.1.1 设置和加载 \ 43 3.1.2 数据列 \ 44 3.1.3 拆分数据 \ 45 3.1.4 观察 \ 46 3.1.5 关于数据集 \ 50 3.2 数据集:手写体 \ 50 3.2.1 设置和加载 \ 51 3.2.2 观察 \ 52 3.2.3 帮助建模 \ 54 3.2.4 关于数据集 \ 55 5.4 建筑节能:默认的随机森林 \ 91 3.3 数据集:足球比分 \ 56 3.3.1 相关性 \ 59 3.3.2 缺失数据.更多列 \ 62 3.3.3 如何训练和测试? \ 63 3.3.4 设置和加载 \ 63 3.3.5 其他第三方 \ 64 3.3.6 缺失数据(再次)\ 67 3.3.7 设置和加载(再次)\ 67 3.3.8 关于数据集 \ 70 3.4 小结 \ 70第 4章 常用模型参数 \ 71 4.1 支持测度 \ 71 4.1.1 回归指数 \ 72 4.1.2 分类指数 \ 72 4.1.3 二项式分类 \ 73 4.2 要素 \ 75 4.3 努力 \ 76 4.4 评分和验证 \ 76 4.5 提前终止 \ 77 4.6 检查点 \ 79 4.7 交叉验证(又名 k-folds)\ 81 4.8 数据加权 \ 82 4.9 抽样、归纳 \ 84 4.10 回归 \ 85 4.11 输出控制 \ 87 4.12 小结 \ 87第5章 随机森林\88 5.1 决策树 \ 88 5.2 随机森林 \ 89 5.3 参数 \ 89 5.5 网格搜索 \ 93 5.5.1 笛卡尔 \ 94 5.5.2 随机离散 \ 96 5.5.3 高层策略 \ 98 5.6 建筑节能:改进的随机森林 \ 99 5.7 MNIST:默认的随机森林 \ 101 5.8 MNIST:改进的随机森林 \ 102 5.8.1 增强数据 \ 105 5.9 足球比赛:默认的随机森林 \ 106 5.10 足球比赛:改进的随机森林 \ 108 5.11 小结 \ 110第 6章 梯度推进机 // 111 6.1 推进 // 111 6.2 好处、坏处和…神秘之处 // 112 6.3 参数 // 113 6.4 建筑节能:默认 GBM // 114 6.5 建筑节能:改进 GBM // 115 6.6 MNIST:默认 GBM // 119 6.7 MNIST:改进 GBM // 120 6.8 足球比赛:默认 GBM // 122 6.9 足球比赛:改进 GBM // 123 6.10 小结 // 125第 7章 线性模型 // 126 7.1 GLM参数 // 126 7.2 建筑节能:默认 GLM // 130 7.3 建筑节能:改进 GLM // 132 7.4 MNIST:默认 GLM // 136 7.5 MNIST:改进 GLM // 137 7.6 足球比赛:默认 GLM // 139 7.7 足球比赛:改进 GLM // 141 7.8 小结 // 142第 8章 深度学习(神经网络)// 143 8.1 什么是神经网络? // 143 8.1.1 数值与分类 // 145 8.1.2 神经网络层 // 146 8.1.3 激活函数 // 147 8.2 参数 // 148 8.2.1 深度学习正则化 // 148 8.2.2 深度学习评分 // 149 8.3 建筑节能:默认的深度学习 // 152 8.4 建筑节能:改进的深度学习 // 153 8.5 MNIST:默认的深度学习 // 157 8.6 MNIST:改进的深度学习 // 159 8.7 足球比赛:默认的深度学习 // 163 8.8 足球比赛:改进的深度学习 // 164 8.9 小结 // 168 8.10 附录:更多的深度学习参数 // 169第 9章 无监督学习 // 171 9.1 k均值聚类 // 172 9.2 深度学习自动编码器 // 174 9.2.1 层叠自动编码器 // 177 9.3 主成分分析 // 178 9.4 GLRM // 179 9.5 缺失数据 // 180 9.5.1 GLRM // 183 9.5.2 失去 R // 183 9.6 小结 // 187第 10章 其他内容 // 188 10.1 重要且需要分析的内容 // 188 10.2 安装版本的 H2O // 188 10.2.1 由源代码构建 // 189 10.3 命令行运行 // 189 10.4 聚类 // 189 10.4.1 EC2 // 190 10.4.2 其他云提供商 // 191 10.4.3 Hadoop // 191 10.5 Spark/Sparkling Water // 191 10.6 朴素贝叶斯 // 192 10.7 集成 // 192 10.7.1 层叠: h2o.ensemble // 193 10.7.2 分类集成 // 195 10.8 小结 // 195第 11章 后记:一切运行良好! // 196 11.1 建筑节能结果 // 196 11.2 MNIST结果 // 197 11.3 足球比赛结果 // 199 11.4 究竟有多差? // 200 11.4.1 越多越好 // 201 11.4.2 仍渴望更多 // 202 11.4.3 困难排除 // 202 11.4.4 自动编码器 // 203 11.4.5 卷积和收缩 // 204 11.4.6 集成 // 205 11.4.7 这就是可能差的情况. // 206 11.5 小结 // 206
前 言
经过漫长的发展,机器学习逐渐变得越来越成熟。它早可以追溯到 20世纪 50年代,当时开发出个根据经验进行学习的程序(下跳棋),这也是个神经网络。人工智能研究人员多次提到这是一个当今早就不再关注的“指日可待”的重大突破。但也许研究人员是一直沿着正确的道路进行研究,或许只是需要一个更大数量级的处理能力,或一个微小的算法调整,就可以将毫无意义的研究变成富有成效并具有远大前途的工作。在20世纪90年代早期,人们普遍将神经网络看作在人工智能方面取得的一项新的重大突破。当时本人曾多次尝试在计算机中实际应用神经网络,但在与利用特定领域的知识工程以及重新改进的树搜索方法所得到的结果相比时,发现其处理能力非常糟糕(结果仍是相当普通的)。而且其处理大规模数据的能力也很差。 20年后,当听说深度学习这一新概念在计算机领域取得了令人瞩目的成果时,本人感到非常困惑的是这与多年前所放弃研究的神经网络究竟有何不同。答案其实是“并没有太大不同”,或许只需要一个具有更强大处理能力(在这种情况下需提高 5~6个数量级)的算法,就能取得丰硕成果。H2O是一种用于机器学习和数据分析的软件。怀着想要了解深度学习所具有的强大功能的这一想法,促使本人深入学习 H2O(尽管并不仅限于此,还包括搜索树、线性模型、无监督学习等),结果立刻就留下了深刻印象。H2O具有下列特性:. 开源(免费的 Apache许可证);. 易于使用;. 可扩展到大数据;. 文档完备且具有商业支持;. 第三版(即成熟架构);. 广泛的操作系统 /语言支持。H2O.ai(开发 H2O的公司)聚集了高质量的优秀团队,将会发展得越来越好。在整个开发过程中,公司不仅始终坚持“如何才能使得 H2O更好地发挥作用”,而且始终坚持“如何使其在大数据范畴下有效工作”的发展理念。如果机器学习已完全成熟,那么H2O就好比既是一辆经济实用的家用车,同时也是一辆大载重量的货车。如果进一步深化比喻,本书将不仅介绍仪表盘控件所做的工作,而且还将讨论实现车辆从 A到 B的方式。为了尽可能实用,本书只对学习算法相关的数学原理或理论进行程度的解释。当然H2O也并非完美,以下是一些需要注意的问题。首先,H2O不支持GPU(它可实现深度学习,尤其是更快的学习)一。其次,集群都是针对低层(大数据),而不支持高层(复杂但相对较少的数据),因此对于后者,可能只需要一个单一的、快速的、有多个内核一Deep Water是一个正在开发的新的 H2O项目,可允许与其他深度学习库进行交互,因此 H2O将会很快支持 GPU。原书前言的机器。另外,集群也不具备高可用性( HA)。第三, H2O是 Java语言编译的,可以实现很好的优化,且 H2O算法以执行速度快而著称,当然从理论上来说,更加优化的 C 语言可能会更快。第四,在 H2O中不具有 SVM(状态向量机)算法。后, H2O还试图支持众多开发平台,因此每个平台都有一些简单的接口,有时会由于试图保持所有平台同步而导致开发过程较慢。换言之,如果还是用车辆来比喻:一级方程式赛车会在直道上击败 H2O,但实际情况中尚未出现这种情况。 选择 H2O的用户及原因一些知名公司( http://www.h2o.ai/customers/)已正在利用 H2O进行大数据处理, H2O网站已声称目前有超过 5000家公司在使用 H2O。同时,开发 H2O的 H2O.ai公司拥有 80多名员工,其中一半以上是开发人员。 但这些都是给投资者留下深刻印象的统计数据,而对于开发人员毫无意义。对于那些感觉已掌握所有所需机器学习库的 R和 Python开发人员而言, H2O所具有的主要优点是易用性和防止数据集过大而导致存储空间不足的有效扩展性。对于觉得已掌握 SparkML的用户来说, H2O算法数量较少,但运算速度明显更快。另外 H2O还有一个优点,就是智能默认值意味着代码更加紧凑且宜于阅读:直接利用一行语句就可以得到一个性能良好的的深度学习模型。本书的目的之一是介绍如何调整模型,但正如在书中所见,有时会由于无法比默认模型更好而不得不放弃调节。 关于读者在基于一些假设条件的基础上,将本书控制在 1000页以内。首先假设读者已熟悉 R或 Python语言。由于不会用到高级语言特性,因此具备任何编程语言的能力都足以理解书中内容,但本书中的示例仅提供了 R和 Python这两种语言。由于熟悉 pandas,Python用户可能更具优势,尤其是因为 pandas会使得所有的数据科学更加容易。 另外,还假设有一些心理暗示:为重复保存每个示例两次:希望 R用户能够理解 Py-thon示例中所发生的,而 Python用户可以理解 R示例。对于 R用户来说,这些 Python示例是一个好的开始(对于 R用户也是如此)。 即使使用电子表格或 SQL表,也需要具有一些数据处理的经验。在此,假设读者对机器学习和人工智能,及其在公共基础设施中越来越多的应用具有一些正确认识。也许读者阅读本书的目的是想实现部分功能,并确保这些转变是出于伦理道德,同时让所有人受益,不论种族、性别、国籍或信仰。如果的确如此,向您致敬。 另外,还假设读者了解一些统计知识。这并没什么可担心的,本书的书名中强调了实用性,尽量将机器学习算法的相关理论降低到只需了解如何进行调节(而不是能够从头开始实现)。若想了解更多知识,可以利用维基百科或搜索引擎。但至少应该了解模式中中位数的含义,知道什么是标准差和正态分布。 但更重要的是,希望读者能够了解统计存在误导,且机器学习可能会过拟合( https:// en.wikipedia.org/wiki/Over.tting)。当提到 p=0.05对一个实验具有显著意义时,这意味着每进行 20次该实验,可能会有一次是错误的。体会显著的明显时刻是在 xkcd(https://xkcd. com/882/)上。 在谈到计时的某些时候,这是介绍“我的机器”的一个好机会。书中所用的是一个中端便携式计算机,有一些年份了,具有 8GB内存、四核、 8个超线程。但已足以运行书中的所有示例,实际上 4GB的系统内存就足够了。然而,对于某些网格搜索(在第 5章中介绍),“假设”不能在本机运行而在云平台启动集群(第 10章简单介绍了“聚类”概念)。这样做只是出于实用性考虑:并不想等待 24h后完成一个实验,然后再写出来。 本书的排版约定本书通过不同排版风格表达内容,具体说明如下: 斜体字(Italic)表示新术语、文件名和文件扩展名。 等宽字体(Constant width)用于程序清单,以及在段落中引用的程序元素。如变量或函数名、数据库、数据类型、环境变量、语句和关键字。 等宽粗体字(Constant width)显示应由用户逐字输入的命令或其他文本。 等宽斜体字(Constant width)显示由用户提供的值或由上下文确定的值替代的文本。 表示提示或建议表示一般注释表示警告或注意事项代码示例使用https://github.com/DarrenCook/h2o/提供了可供下载的补充材料(代码示例、练习等)。 原书前言本书用于帮助实现所需工作。一般来说,本书提供了示例代码,可以在程序和文档中使用。不需要与作者联系以获得许可,除非复制了代码的主要部分。例如,在编写一个使用了本书中几个代码段的程序时,不需要任何权限。但销售或分销 O’Reilly图书中的光盘实例需要授权。引用本书或引用示例代码来回答问题不需要权限。但将本书中的大量示例代码导入到产品文档需要授权。 非常感谢,但请不必,这归于属性。属性通常包括标题、作者、出版社和 ISBN。例如本书(O’Reilly)。版权所有 .2017 Darren Cook,978-1-491-96469-6”。如果感觉所使用的示例未合理使用或达到上述许可,请随时与 O’Reilly出版社联系: [email protected]。 如何联系我们敬请对本书提出宝贵的建议和意见: 美国: O’Reilly Media, Inc.1005 Gravenstein Highway NothSebastopol, CA 95472中国: 北京市西城区西直门南大街 2号成铭大厦 C座 807室(100035)奥莱利技术咨询(北京)有限公司针对本书,提供了一个网页,其中列出了勘误表、示例和任何附加信息。可访问 http://bit.ly/practical-machine-learning-with-h2o。关于本书的任何评论或技术咨询,请发邮件到 [email protected]。有关图书、课程、会议和新闻的更多信息,请参见网站 http://www.oreilly.com。 Facebook地址: http://facebook.com/oreilly。 Twitter地址: http://twitter.com/oreillymedia。 YouTube地址: http://www.youtube.com/oreillymedia。 原书致谢首先要感谢技术顾问:谢谢对本书的肯定,真心感谢。同时也对本书的错误抱歉。感谢 Katharine Jarmul、Yulin Zhuang、Hugo Mathien、Erin LeDell、Tom Kraljevic。如果没有采纳他们所提出的建议或包括了一些调侃,敬请谅解。除此之外,还感谢 Erin和 Tom,他们为本人提供了非常有用的 H2O.ai问题的解答。另外还要非常感谢 Arno Candel、Tomas Nykodym、Michal Kurka、Navdeep Gill、SriSatish Ambati、Lauren DiPerna以及所有在此未列出的人员(抱歉!)感谢 Nicole Tache作为本书前半部分的编辑,以及 Debbie Hardin在 Nicole决定生孩子而离开本项目后接手本书其余部分的编辑。感谢你们保持冷静,全神贯注于本书建模而忘记截止日期。 感谢家人默默忍受本人写书的漫长时间。 后,感谢所有人:在 StackOver.ow、博客文章、视频教程、写书、维护维基百科准确地回答问题的人。他们大量的工作,弥补了作者的知识漏洞。这为本人提供了一个完整的循环:不要犹豫,让我知道书中的所有错误。或者简单地说,如何能做得更好。
评论
还没有评论。