Copyright ?2016 Packt Publishing. First published in the English language under the title “Mastering Scala Machine Learning”.All rights reserved.Chinese simplified language edition published by China Machine Press.Copyright ?2017 by China Machine Press.本书中文简体字版由Packt Publishing授权机械工业出版社出版。未经出版者书面许可,不得以任何方式复制或抄袭本书内容。
目录Contents
译者序
前言
第1章探索数据分析1
1.1Scala入门2
1.2去除分类字段的重复值2
1.3数值字段概述4
1.4基本抽样、分层抽样和一致抽样5
1.5使用Scala和Spark的Notebook工作8
1.6相关性的基础12
1.7总结14
第2章数据管道和建模15
2.1影响图16
2.2序贯试验和风险处理17
2.3探索与利用问题21
2.4不知之不知23
2.5数据驱动系统的基本组件23
2.5.1数据收集24
2.5.2数据转换层25
2.5.3数据分析与机器学习26
2.5.4UI组件26
2.5.5动作引擎28
2.5.6关联引擎28
2.5.7监控28
2.6优化和交互28
2.7总结29
第3章使用Spark和MLlib30
3.1安装Spark31
3.2理解Spark的架构32
3.2.1任务调度32
3.2.2Spark的组件35
3.2.3MQTT、ZeroMQ、Flume和Kafka36
3.2.4HDFS、Cassandra、S3和Tachyon37
3.2.5Mesos、YARN和Standalone38
3.3应用38
3.3.1单词计数38
3.3.2基于流的单词计数41
3.3.3SparkSQL和数据框45
3.4机器学习库46
3.4.1SparkR47
3.4.2图算法:Graphx和GraphFrames48
3.5Spark的性能调整48
3.6运行Hadoop的HDFS49
3.7总结54
第4章监督学习和无监督学习55
4.1记录和监督学习55
4.1.1Iirs数据集56
4.1.2类标签点57
4.1.3SVMWithSGD58
4.1.4logistic回归60
4.1.5决策树62
4.1.6bagging和boosting:集成学习方法66
4.2无监督学习66
4.3数据维度71
4.4总结73
第5章回归和分类74
5.1回归是什么74
5.2连续空间和度量75
5.3线性回归77
5.4logistic回归81
5.5正则化83
5.6多元回归84
5.7异方差84
5.8回归树85
5.9分类的度量87
5.10多分类问题87
5.11感知机87
5.12泛化误差和过拟合90
5.13总结90
第6章使用非结构化数据91
6.1嵌套数据92
6.2其他序列化格式100
6.3Hive和Impala102
6.4会话化104
6.5使用特质109
6.6使用模式匹配110
6.7非结构化数据的其他用途113
6.8概率结构113
6.9投影113
6.10总结113
第7章使用图算法115
7.1图简介115
7.2SBT116
7.3Scala的图项目119
7.3.1增加节点和边121
7.3.2图约束123
7.3.3JSON124
7.4GraphX126
7.4.1谁收到电子邮件130
7.4.2连通分量131
7.4.3三角形计数132
7.4.4强连通分量132
7.4.5PageRank133
7.4.6SVD++134
7.5总结138
第8章Scala与R和Python的集成139
8.1R的集成140
8.1.1R和SparkR的相关配置140
8.1.2数据框144
8.1.3线性模型150
8.1.4广义线性模型152
8.1.5在SparkR中读取JSON文件156
8.1.6在SparkR中写入Parquet文件157
8.1.7从R调用Scala158
8.2Python的集成161
8.2.1安装Python161
8.2.2PySpark162
8.2.3从Java/Scala调用Python163
8.3总结167
第9章Scala中的NLP169
9.1文本分析流程170
9.2Spark的MLlib库177
9.2.1TFIDF177
9.2.2LDA178
9.3分词、标注和分块185
9.4POS标记186
9.5使用word2vec寻找词关系189
9.6总结192
第10章高级模型监控193
10.1系统监控194
10.2进程监控195
10.3模型监控201
10.3.1随时间变化的性能202
10.3.2模型停用标准202
10.3.3A/B测试202
10.4总结202
Preface前言这是一本关于机器学习的书,它以Scala为重点,介绍了函数式编程方法以及如何在Spark上处理大数据。九个月前,当我受邀写作本书时,我的第一反应是:Scala、大数据、机器学习,每一个主题我都曾彻底调研过,也参加了很多的讨论,结合任何两个话题来写都具有挑战性,更不用说在一本书中结合这三个主题。这个挑战激发了我的兴趣,于是就有了这本书。并不是每一章的内容都像我所希望的那样圆满,但技术每天都在快速发展。我有一份具体的工作,写作只是表达我想法的一种方式。
下面先介绍机器学习。机器学习经历了翻天覆地的变换;它是由人工智能和统计学发展起来的,于20世纪90年代兴起。后来在2010年或稍晚些时候诞生了数据科学。数据科学家有许多定义,但JoshWills的定义可能最通俗,我有幸在Cloudera工作时和他共事过。这个定义在图1中有具体的描述。虽然细节内容可能会有争议,但数据科学确实是几个学科的交叉,数据科学家不一定是任何一个领域的专家。据JeffHammerbacher(Cloudera的创始人,Facebook的早期员工)介绍,第一位数据科学家工作于Facebook。Facebook需要跨学科的技能,以便从当时大量的社交数据中提取有价值的信息。虽然我自称是一个大数据科学家,但我已经关注这个交叉领域很久了,以至于有太多知识出现混淆。写这本书就是想使用机器学习的术语来保持对这些领域的关注度。
图1数据科学家的一种可能定义最近,在机器学习领域出现了另一个被广泛讨论的话题,即数据量击败模型的复杂度。在本书中可以看到一些SparkMLlib实现的例子,特别是NLP的word2vec。机器学习模型可以更快地迁移到新环境,也经常击败需要数小时才能构建的更复杂的模型。因此,机器学习和大数据能够很好地结合在一起。
最后也很重要的一点是微服务的出现。作者在本书中花了大量的篇幅介绍机器和应用程序通信,所以会很自然地提及Scala与Akkaactor模型。
对于大多数程序员而言,函数式编程更多是关于编程风格的变化,而不是编程语言本身。虽然Java8开始有来自函数式编程的lambda表达式和流,但是人们仍然可以在没有这些机制的情况下编写函数式代码,甚至可以用Scala编写Java风格的代码。使得Scala在大数据世界中名声鹊起的两个重要思想是惰性求值和不可变性,其中惰性求值可大大简化多线程或分布式领域中的数据处理。Scala有一个可变集合库和一个不可变集合库。虽然从用户的角度来看它们的区别很小,但从编译器的角度来看,不变性大大增加了灵活性,并且惰性求值能更好地与大数据相结合,因为REPL将大多数信息推迟到管道的后期处理,从而增加了交互性。
大数据一直备受关注,其主要原因是机器产生的数据量大大超越了人类在没有使用计算机以前的数量。Facebook、Google、Twitter等社交网络公司已经证明专门用于处理大数据的工具(如Hadoop、MapReduce和Spark)可以从这些数据块中提取丰富的信息。
本书后面将介绍关于Hadoop的内容。最初它能在廉价硬件上处理大量的信息,因为当时传统的关系数据库不能处理这样的信息(或能处理,但是代价过高)。大数据这个话题太大了,而Spark才是本书的重点,它是HadoopMapReduce的另一个实现,Spark提高了磁盘上持久化保存数据的效率。通常认为使用Spark有点贵,因为它消耗更多的内存,要求硬件必须更可靠,但它也更具交互性。此外,Spark使用Scala工作(也可以使用Java和Python等),但Scala是主要的API语言。因此Spark用Scala在数据管道的表达方面有一定的协同性。
本书主要内容第1章介绍数据分析师如何开始数据分析。除了允许用户使用新工具查看更大的数据集以外,该章并没有什么新东西。这些数据集可能分布在多台计算机上,但查看它们就像在本地机器上一样简单。当然,不会阻止用户在单个机器上顺序执行程序。但即使如此,作者写作的这个笔记本电脑也有四个核,可同时运行1377个线程。Spark和Scala(并行集合)允许用户透明地使用整个设备,有时并没有显式指定需要并行运行。现代服务器可对OS服务使用多达128个超线程。该章将展示如何使用新工具来进行数据分析,并用它来研究以前的数据集。
第2章介绍在Scala/Spark之前一直存在的数据驱动过程,也会介绍完全数据驱动的企业,这类企业通过多台数据生成机器的反馈来优化业务。大数据需要新的技术和架构来适应新的决策过程。该章借鉴了一些学术资料来阐述数据驱动型业务的通用架构。在这种架构下,大多数工人的任务是监控和调整数据管道。
第3章重点介绍Spark的体系结构,它是前面提及的HadoopMapReduce的替代者(或补充)。该章还将特别介绍MLlib所支持的几个算法。虽然这是一个崭新的话题,但许多算法都对应着各种实现。该章将给出一些例子,比如怎样运行org.apache.spark.mllib包中标准的机器学习算法。最后介绍Spark的运行模式及性能调整。
第4章介绍机器学习的原理,虽然SparkMLlib的内容可能会不断变化,但这些原理是不会变的。监督学习和无监
TheTranslator'sWords译者序大数据是当前热门的话题,其特点为数据量巨大,增长速度快,拥有各种类型。分布式机器学习是一种高效处理大数据的方法,其目的是从大数据中找到有价值的信息。目前各大互联网公司都投入巨资研究分布式机器学习。
在实现分布式机器学习算法时,函数式编程有天生的优势。这是因为函数式编程不会共享状态,也不会造成资源竞争。Scala是一种优秀的函数式编程语言,同时它也是基于Java虚拟机的面向对象的编程语言。使用Scala编程非常方便快捷。
Spark是2009年出现的一种基于内存的分布式计算框架,它的处理速度比经典的分布式计算框架Hadoop快得多。Spark的核心部分是由Scala实现的。Spark对于处理迭代运算非常有效,而分布式机器学习算法经常需要迭代运算,因此Spark能很好地与机器学习结合在一起。
本书共10章,介绍了如何使用Scala在Spark平台上实现机器学习算法,其中Scala的版本为2.11.7,Spark采用基于Hadoop2.6的版本,这些都是比较新的版本。本书从数据分析师怎么开始数据分析入手,介绍了数据驱动过程和Spark的体系结构;通过操作SparkMLlib库,介绍了机器学习的基本原理及MLlib所支持的几个算法;接着介绍了Scala如何表示和使用非结构化数据,以及与图相关的话题;再接着介绍了Scala与R和Python的集成;最后介绍了一些特别适合Scala编程的NLP常用算法及现有的Scala监控解决方案。总之,本书非常适合从事分布式机器学习的数据工作者,使用书中提供的大量针对性编程例子,可提高工程实战能力。
本书的第1~3章和第7章由重庆工商大学计算机科学与信息工程学院刘波博士翻译;第4~6章和第8~10章由重庆工商大学计算机科学与信息工程学院罗棻翻译。同时,刘波博士负责全书的技术审校工作。
翻译本书的过程也是译者不断学习的过程。为了保证专业词汇翻译的准确性,我们在翻译过程中查阅了大量相关资料。但由于时间和能力有限,书中内容难免出现差错。若有问题,读者可通过电子邮件(liubo7971@163.com;luofcn@163.com)与我们联系,欢迎一起探讨,共同进步。并且,我们也会将最终的勘误信息公布在http://www.cnblogs.com/mlcv/上。
本书的顺利出版还要特别感谢机械工业出版社华章公司的编辑在翻译过程中给予的帮助!
本书的翻译也得到如下项目资助:(1)国家自然科学基金一般项目,非同步脉冲神经膜系统研究,项目号:61502063;(2)重庆市检测控制集成系统工程实验室新技术新产品开放课题,基于图像内容的目标检测算法及应用研究,项目号:KFJJ2016042。
这本书的包装很精美,拿到手里就觉得很有质感,封面设计简洁大方,字体清晰,让人一眼就能感受到其专业性。我本来对机器学习这个领域了解不多,只是听说它在人工智能方面有着举足轻重的地位,所以一直想找一本合适的入门书来学习。在众多选择中,我被《Scala机器学习》这个书名吸引了。Scala这个语言我平时工作中接触得不多,但听说它在大数据和分布式计算领域非常流行,而且与机器学习结合也是一个很热门的方向。我期待这本书能带我领略Scala在机器学习领域的魅力,学习如何运用这门语言来构建强大的机器学习模型,解决实际问题。当然,我更看重的是这本书的实用性,希望它能提供清晰易懂的讲解,丰富的代码示例,以及对实际应用场景的深入分析,帮助我从零开始掌握Scala机器学习的核心技术。
评分我是一名正在探索机器学习领域的初学者,一直对如何将Scala这门强大且富有表现力的语言应用于机器学习感到好奇。在网上搜索相关资源时,《Scala机器学习》这本书引起了我的注意。从书名来看,它似乎能够填补我在这方面的知识空白。我希望这本书能为我提供一个坚实的理论基础,让我理解机器学习的核心概念,并在此基础上,学习如何利用Scala的语法优势和强大的库生态系统来构建和实现各种机器学习模型。我特别期待书中能够详细介绍Scala在数据处理、特征工程以及算法实现方面的最佳实践,或许还会涉及到一些分布式计算框架,如Spark,因为我知道Scala在这方面有着卓越的表现。我希望能通过这本书,不仅掌握机器学习的理论,更能学会用Scala来解决实际问题,为我的数据科学之路奠定坚实的基础。
评分这本书的序言部分写得相当有吸引力,它不仅点出了Scala在现代数据科学和机器学习领域日益增长的重要性,还强调了其函数式编程的特性如何为构建健壮、可扩展的机器学习系统提供了独特的优势。读完序言,我感觉自己仿佛置身于一个充满挑战和机遇的领域,迫不及待地想要深入探索。我尤其好奇的是,这本书将如何将Scala的语言特性与经典的机器学习算法相结合。是会从Scala的基础语法入手,逐步过渡到具体的算法实现,还是会直接讲解算法,然后展示如何在Scala中高效地实现它们?我希望作者能够提供一种循序渐进的学习路径,让像我这样对Scala不太熟悉的读者也能轻松上手。同时,我也对书中可能包含的案例研究非常感兴趣,期待看到Scala机器学习在实际业务场景中的应用,例如在金融风控、推荐系统或者自然语言处理等方面的解决方案。
评分这本书的排版和印刷质量都令人印象深刻。书页纸张厚实,触感温润,墨迹清晰,长时间阅读也不会感到眼睛疲劳。我最看重一本技术书籍的易读性,而《Scala机器学习》在这一点上做得非常出色。目录清晰明了,章节划分合理,每一章的标题都能够准确地反映其内容,便于读者快速定位感兴趣的主题。我尤其欣赏书中对概念的讲解方式,据说能够深入浅出,将复杂的机器学习原理用通俗易懂的语言阐述清楚,并辅以丰富的图示和流程图,帮助读者建立直观的理解。对于像我这样需要将理论知识与实践相结合的学习者来说,这一点至关重要。我非常期待书中能够包含大量实用的代码示例,并且这些代码能够清晰地展示如何在Scala环境中实现各种机器学习算法,包括数据预处理、模型训练、参数调优以及模型评估等关键环节。
评分这本书的作者在 Scala 和机器学习领域都拥有深厚的造诣,这让我对其内容充满了信心。我一直认为,一本优秀的机器学习书籍,不仅要讲解算法原理,更要提供实际可行的实现方法,并能结合实际应用场景进行深入分析。《Scala机器学习》这本书,据说是完美地结合了这几点。我特别期待书中能够深入剖析 Scala 语言在机器学习中的独特优势,例如其函数式编程的特性如何帮助我们编写出更简洁、更易于维护的代码,以及如何利用 Scala 的并发和分布式计算能力来处理大规模数据集。此外,我希望能看到书中提供大量的代码示例,并且这些示例都经过精心设计,能够清晰地展示如何一步步构建和训练机器学习模型,并且能够解释每一步背后的原理。我希望这本书能成为我学习 Scala 机器学习的有力助手,帮助我快速掌握这项前沿技术。
评分物流十分给力、书本包装不错
评分发货速度快,质量也不错,挺好的
评分不错,浅显易懂,上手很快,上面的话很幽默,不过作者也很无聊,居然跑去问三岁的小孩大数据是什么,小孩答:大数据能吃吗?
评分吾消费京东商城数年,深知各产品琳琅满目。然,唯此宝物与众皆不同,为出淤泥之清莲。使吾为之动容,心驰神往,以至茶饭不思,寝食难安,辗转反侧无法忘怀。于是乎紧衣缩食,凑齐银两,倾吾之所有而能买。东哥之热心、快递员之殷切,无不让人感激涕零,可谓迅雷不及掩耳盗铃儿响叮当仁不让世界充满爱。待打开包裹之时,顿时金光四射,屋内升起七彩祥云,处处皆是祥和之气。吾惊讶之余甚是欣喜若狂,呜呼哀哉!此宝乃是天上物,人间又得几回求!遂沐浴更衣,焚香祷告后与人共赏此宝。人皆赞叹不已,故生此宝物款型及做工,超高性价比之慨,且赞吾独具慧眼与时尚品位。产品介绍果然句句实言,毫无夸大欺瞒之嫌。实乃大家之风范,忠义之商贾。
评分应该还可以,暂时没看,有空再看
评分真本书还不错,简单的描述了机器学习和大数据的原理,浅显易懂。
评分快,配送员服务态度好,每样东西都是送货上门。希望京
评分书籍不错,印刷包装都不错。一些具體應用,比較有特色。京东送货一如既往的快赞一个。
评分一口气买了一个系列,都是不错的书,准备奋战一个夏天啦,啦啦啦啦
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 book.idnshop.cc All Rights Reserved. 静思书屋 版权所有