本书使用当前流行的开源Python库,通过大量案例学习和代码示例,详细阐释将原始数据转化为强大洞见的过程。你将学到如何将原始数据转化为强大洞见,以及如何快速地将这些方法应用到自己的数据上,创建可靠并且易扩展的预测服务。
通过阅读本书,你将:
理解分析型应用中的组件以及设计决策
掌握使用Python Notebook进行探索式数据分析以及快速开发原型
学习如何针对不同的数据集应用回归、分类、聚类和机器学习算法
学习分析结构化数据和非结构化数据的高级方法
如何将一个机器学习模型部署到生产环境中
可视化模型的性能以及模型所产生的结果
在数据增长时使用Spark扩展解决方案
通过掌握预测分析的最佳实践,保证分析型应用的鲁棒性
作者简介
约瑟夫·巴布科克(Joseph Babcock)
现为AQR Capital Management机器学习研究员,之前曾是Netflix高级数据科学家。他有近10年的复杂数据集研究经验,解决了来自医疗健康和娱乐行业的众多大数据挑战。他毕业于美国约翰·霍普金斯大学医学院,获得了该校所罗门·斯奈德神经系统学科的博士学位,在该校就读期间,他运用机器学习预测了毒品对心脏方面的副作用。
内容简介
本书不仅涵盖了分类、回归、聚类等众多算法以及诸如深度学习等前端技术,还讲解了这些方法的工作原理,以及如何在实践中应用它们。你将学到如何针对特定的问题选择正确的解决方法,以及如何开发具有吸引力的可视化界面,从而将预测性模型中所获得的洞见应用在实际工作中。
全书共9章,第1章介绍一个分析管道的核心组件以及它们之间的交互方式;第2章讨论着手搭建分析型应用所需完成的工作;第3章演示如何将一个数据集里的相似项定义成组;第4章探讨几种回归模型的拟合,包括将输入参数调整到正确数值范围并对类别特征做出正确说明;第5章阐述如何使用分类模型并介绍几种提升模型性能的策略;第6章讨论非结构化数据,涉及文本数据、图像数据及降维技术等;第7章介绍如何用深度神经网络来处理复杂数据;第8章讲述一个基本预测服务所包含的三个组件——客户端、服务器和Web应用;第9章介绍对预测模型的性能进行监控的若干策略。
通过学习本书,你将逐步掌握将原始数据转化为重要结论的过程。本书所涉及的大量案例学习和代码样例,均使用现下流行的开源Python库,阐述了分析应用完整的开发过程。详细的案例讲述了常见应用场合下健壮、可扩展的应用。你将学会如何快速将这些模型应用到自己的数据中去。
本书内容
第1章讲述了如何描述一个分析管道中的核心组件以及组件间的交互方式,也探讨了批处理和流处理之间的区别,以及每种应用最适用的一些情况,还讲解了基于两种范式的基础应用样例以及每一步所需的设计决策。
第2章讨论了着手搭建分析型应用所需完成的诸多工作。运用IPython notebook,我们讨论了如何使用pandas将文件中的数据上传到数据帧中、重命名数据集中的列名、过滤掉不想要的行、转换类型以及创建新的列。另外,我们将整合不同来源的数据,并使用聚合和旋转进行一些基本的统计分析。
第3章将演示如何将一个数据集里的相似项定义成组。这种探索性分析是我们在理解新数据集过程中经常第一个使用的。我们探索计算数据点值间相似性的不同方法,并描述这些度量可能最适合于哪些数据。我们既探讨分裂聚类算法(将数据分解成一组一组更小的部分),也探讨凝聚聚类算法(每个数据点都是一个聚类的开始)。通过一系列数据集,我们将展示每种算法在哪些情景下性能更好或者更差,以及如何优化它们。我们也看到了首个(比较小的)数据管道——PySpark中基于流数据的聚类应用。
第4章探讨了几种回归模型拟合模型,包括将输入参数调整到正确数值范围并对类别特征做出正确说明。我们对线性回归进行拟合、评估,也包括正则化回归模型。我们还研究树回归模型的用处,以及如何优化参数选项来拟合模型。最后,我们会讨论一个基于PySpark的简单随机森林模型,该模型也可以用于更大的数据集。
第5章阐述了如何使用分类模型并介绍几种提升模型性能的策略。除了转换类别特征之外,我们讨论了如何利用ROC曲线对逻辑回归准确性进行解释。为了尝试提升模型的性能,我们讲解了SVM的用处。最后,我们将使用梯度提升决策树算法,以期在测试数据集上可以取得较好的性能。
第6章讨论复杂的、非结构化的数据。其中还涉及了降维技术(例如HashingVectorizer)、矩阵分解(例如PCA、CUR和NMR)以及概率模型(例如LDA),讨论了图像数据,包括标准化操作和阈值转换操作,并介绍如何使用降维技术找出图像之间的共同模式。
第7章介绍了将深度神经网络作为一种生成模型的方法,来处理那些工程师难以处理其特征的复杂数据。我们将研究如何使用反向传播训练神经网络,并探究附加层难以达到最优的原因。
第8章描述了一个基本预测服务的三个组件,并探讨这种设计如何使我们与其他用户或者软件系统分享预测模型的结果。
第9章介绍几个监控初步设计后预测模型性能的策略。我们也会讨论一些模型的性能或组件会随时间变化的场景。
阅读准备
你需要安装好最新版的Python、PySpark以及Jupyter notebook。
读者人群
本书主要针对业务分析员、BI分析员、数据科学家,或是一些已经掌握高级分析员理论知识的初级数据分析员。通过阅读本书,上述读者将可以运用Python设计并构建高级分析解决方案。读者必须具备基础Python开发经验。
本书约定
在本书中,你会发现很多用以区别不同信息的文本样式。以下是一些文本样式的例子,以及每种样式所代表含义的解释。
正文中的代码、数据库表名、文件夹名称、文件名、文件扩展名、路径名、虚拟URL、用户输入,以及Twitter用户名等均以以下模式展现:“使用head()和tail()来查看以下数据的开头和结尾。”
任何命令行的输入或者输出都会采用以下形式:
新名词和重要文字会以加粗格式给出。屏幕上的文字(例如菜单或者对话框)在文中以如下形式展现:“回到文件标签栏,你会注意到在右上角有两个选项。”
表示警示或重要提醒。
表示提示和技巧。
下载样例代码
你可以用自己的账户登录http://wwwpacktpubcom下载本书上的样例代码文件。如果你是通过其他途径购买本书,可以访问http://wwwpacktpubcom/support,注册账户申请这些文件。
你也可以访问华章官网http://wwwhzbookcom,通过注册并登录个人账号,下载本书的代码。
下载本书彩图
我们也提供本书的PDF文件,支持彩色版的截屏/图表。这些彩色图片会帮助你更好地理解输出的变化。文件下载地址:https://wwwpacktpubcom/sites/default/files/downloads/MasteringPredictiveAnalyticswithPython_ColorImagespdf。
计算机科学/大数据分析与处理
本书使用当前流行的开源Python库,通过大量案例学习和代码示例,详细阐释将原始数据转化为强大洞察力的过程。你将学到如何将原始数据转化为强大洞察,以及如何快速地将这些方法应用到自己的数据上,创建可靠并且易扩展的预测服务。
通过阅读本书,你将:
·理解分析型应用中的组件以及设计决策
·掌握使用Python Notebook进行探索式数据分析以及快速开发原型
·学习如何针对不同的数据集应用回归、分类、聚类和机器学习算法
·学习分析结构化数据和非结构化数据的高级方法
·如何将一个机器学习模型部署到生产环境中
·可视化模型的性能以及模型所产生的结果
·在数据增长时使用Spark扩展解决方案
·通过掌握预测分析的最佳实践,保证分析型应用的鲁棒性
(美)约瑟夫?巴布科克(Joseph Babcock) 著:暂无相关简介
余水清 译:暂无简介
2016年初发生的一件事,让人们对于人工智能的迅速发展刮目相看,即由谷歌开发的人工智能机器人程序AlphaGo战胜了人类围棋世界冠军职业九段棋手李世石,最终比分为4∶1。在此之后,AlphaGo一路过关斩将,与世界上数十位围棋高手对战,竟然无一失败,可谓是战绩辉煌。
毫无疑问,在围棋领域,AlphaGo已经明显超越了一般人类的智能水平。它的设计和开发涉及了很多的核心技术,深度学习就是其中之一。所谓深度学习,就是指多层的人工神经网络以及对神经网络进行训练和优化的方法。前面一层神经网络把大量数据矩阵化之后作为输入,通过非线性激活方法计算权重,再产生另一个数据集合,以此作为输出,同时也作为后面一层神经网络的输入。这个过程就像生物神经大脑的工作机理一样,通过合适的矩阵数量,多层组织链接在一起,形成神经网络“大脑”,对数据进行精准复杂的处理,既使得处理速度得以提高,又使得处理的准确度和精确度也达到了一个非常高的水平。
深度学习和人工神经网络是典型的无监督学习算法之一,其他典型的无监督学习算法还包括分组和聚类,在这些算法当中,由于不需要事先有典型的输入和输出作为训练样本,因此具有极大的灵活性。此外还有分类和回归等有监督学习算法和半监督学习方法。这些机器学习算法在大数据处理方面有着各自的应用场景,如果应用得当,将会使大数据处理如虎添翼。
AlphaGo只是机器学习技术与大数据相结合的典型案例之一。移动互联网和物联网(IOT)的飞速发展,使人类社会累积数据的速度达到前所未有的程度,这里所谓的大数据包括几乎一切形式的结构化、半结构化以及非结构化的数据,例如网络日志、音频、视频、图片、地理位置信息等。因此,如何对这些数据进行高效的采集、存储、处理并从中发掘到有价值的信息,就是大数据分析处理需要解决的问题。具体来说就是时下比较热门的几个技术热点:物联网和工业物联网(IIoT),主要解决的是数据的采集问题; 云计算,主要解决高效存储和计算问题;数据分析技术,主要解决如何有效对数据进行挖掘,并从中发现应用价值的问题。本书主要关注数据分析技术之一,即预测性分析技术,以及如何将分析结果以可视化的方式展现给利益相关者。当然,数据能够进行正确分析的前提是有高质量的数据,因此,本书也会适当地提及对于不同类型的数据如何进行清洗和过滤,从而为后期分析模型的构建打好基础。
说到大数据分析,不得不提及当前对大数据进行处理分析的编程语言,首屈一指的当属R了。作为MATLAB和SAS等昂贵而复杂的统计软件的免费替代品,简单易用的R迅速风靡全球,在金融街的表现尤为突出。但是R的优点也许也是其缺点,例如在建模技术上并不是很完善,处理海量数据时显得有些笨重,等等。而Python结合了R语言的快速性、处理复杂数据的能力以及更务实的语言特质,迅速地成为主流,尤其是近几年成长得很快。由于直观、易于学习,以及生态系统近年来急剧增长,Python在统计分析领域迅速占有一席之地。IPython notebook和NumPy可以用作快速进行数据分析和处理的一种轻便工具,而Python可以作为中等规模数据处理的强大工具。丰富的数据社区也是Python的优势,因为可供用户随时获取到大量的工具包和功能。另外,Python也可以与多种关系型数据库(例如MySQL、PostGreSQL等)和非关系型数据库(例如MongoDB、Hadoop等)进行无缝集成,再加上对于分布式计算框架(例如Spark)的支持,让基于Python构建的数据分析和预测系统可以很容易地扩展到大规模数据集上。因此,基于Python构建大数据的分析预测系统无疑是比较好的解决方案之一。
回到本书的主要内容上,本书先对数据分析系统的基本架构和主要处理流程进行了扼要介绍,然后从分类和无监督学习开始,逐一讲解每种机器学习算法的主要工作原理,并且在每章的最后一节给出详细的案例讨论,从而将理论很好地落实到实现中。通过对每一种具体学习算法理论部分的介绍,我们可以窥见本书作者Joseph Babcock坚实的理论功底;而落实到具体的Python实现上,我们又可以体会到Python的强大和简洁。因此,我觉得对数据分析、数据建模或者机器学习感兴趣的读者都可以读一读本书。但是译者个人觉得,读者最好具备一定的统计学知识和基本的Python编程经验,不然会稍显吃力。
值得一提的是,机器学习和人工智能已经写进了2017年的政府工作报告,因此从某种程度上说,已经上升到了国家战略层面。我们有理由相信,在可以预见的未来,基于机器学习和人工智能的数据处理和分析预测技术必将为人们的生活和工作带来极大的改变。因此,本书可以为那些对机器学习算法和预测分析技术感兴趣的人指出大致的方向。而对于那些早已投身其中的先行者来说,本书也不失为一个比较好的参考。
对我本人而言,本书的翻译过程也是一次对于机器学习知识的重新学习和对于预测分析技术的全面梳理。感谢机械工业出版社华章分社和静编辑的信任和支持,同时也感谢家人的理解和支持。由于译者水平有限,如有不当之处,尚请广大读者批评指正。
余水清
2017年3月
译者序
关于审稿人
前言
第1章数据转换成决策——从分析应用着手
11设计高级分析方案
111数据层:数据仓库、数据湖和数据流
112模型层
113部署层
114报告层
12案例学习:社交媒体数据的情感分析
121数据输入和转换
122合理性检查
123模型开发
124评分
125可视化和报告
13案例学习:针对性电子邮件活动
131数据输入和转换
132合理性检查
133模型开发
134评分
135可视化和报告
14总结
第2章Python数据分析和可视化初探
21在IPython中探索分类和数值型数据
211安装IPython notebook
212notebook的界面
213加载和检视数据
214基本操作——分组、过滤、映射以及透视
215用Matplotlib绘制图表
22时间序列分析
221清洗和转换
222时间序列诊断
223连接信号和相关性
23操作地理数据
231加载地理数据
232工作在云上
24PySpark简介
241创建SparkContext
242创建RDD
243创建Spark DataFrame
24总结
第3章在噪声中探求模式——聚类和无监督学习
31相似性和距离度量
311数值距离度量
312相关相似性度量和时间序列
313分类数据的相似性度量
314k均值聚类
32近邻传播算法——自动选择聚类数量
33k中心点算法
34凝聚聚类算法
35Spark中的数据流聚类
36总结
第4章从点到模型——回归方法
41线性回归
411数据准备
412模型拟合和评价
413回归输出的显著性差异
414广义估计方程
415混合效应模型
416时间序列数据
417广义线性模型
418线性模型的正则化
42树方法
421决策树
422随机森林
43利用PySpark进一步扩展——预测歌曲的发行年份
44总结
第5章数据分类——分类方法和分析
51逻辑回归
511多分类逻辑分类器:多元回归
512分类问题中的数据格式化
513基于随机梯度下降法的学习逐点更新
514使用二阶方法联合优化所有参数
52拟合模型
53评估分类模型
54通过支持向量机分离非线性边界
541人口普查数据的拟合和SVM
542Boosting:组合小模型以改善准确度
543梯度提升决策树
55分类方法比较
56案例学习:在PySpark中拟合分类器模型
57总结
第6章词语和像素——非结构化数据分析
61文本数据分析
611文本数据清洗
612从文本数据中提取特征
613利用降维来简化数据集
62主分量分析
621隐含狄利克雷分布
622在预测模型中使用降维
63图像
631图像数据清洗
632利用图像阈值来突出显示对象
633图像分析中的降维
64案例学习:在PySpark中训练一个推荐系统
65总结
第7章自底向上学习——深度网络和无监督特征
71使用神经网络学习模式
711单一感知器构成的网络
712感知器组合——一个单层神经网络
713反向传播的参数拟合
714判别式模型与生成式模型
715梯度消失及“解去”
716预训练信念网络(贝叶斯网络)
717使用dropout来正则化网络
718卷积网络和纠正单元
719利用自编码网络压缩数据
7110优化学习速率
72TensorFlow库与数字识别
721MNIST数据
722构建网络
73总结
第8章利用预测服务共享模型
81预测服务的架构
82客户端和发出请求
821GET请求
822POST请求
823HEAD请求
824PUT请求
825DELETE请求
83服务器——Web流量控制器
84利用数据库系统持久化存储信息
85案例学习——逻辑回归服务
851建立数据库
852Web服务器
853Web应用
86总结
第9章报告和测试——分析型系统迭代
91利用诊断检查模型的健康度
911评估模型性能的变化
912特征重要性的变化
913无监督模型性能的变化
92通过A/B测试对模型进行迭代
921实验分配——将客户分配给实验
922决定样本大小
923多重假设检验
93沟通指南
931将术语转换为业务价值
932可视化结果
933报告服务器
934报告应用
935可视化层
94总结