本书详细讲述了预测分析的原理、技术及实现,并深入讨论了大数据。重点着眼于掌握提高开发、实行预测分析所需的6项关键实用技能。本书还提供了来自市场、医疗和零售等行业的真实案例,有助于读者针对产品实现自己的预测分析。
本书是一本与众不同的预测分析书,从技术和概念的角度介绍了很多不同的主题,如分析方法、敏捷、元数据、SQL、抽样和生存分析等。书中首先简洁地讲述预测分析的发展历史及R安装基础知识,然后详细介绍预测分析建模的6个步骤,你将学习输入、清洗以及准备建模数据所需的技巧。作者还探讨了为什么协作非常重要,敏捷迭代建模循环如何提高你的成功率,使你能顺利开发并部署佳的模型,进而在云计算环境中进一步扩展你的技能,通过学习Databricks和SparkR,你将能够对海量的数据进行预测模型的开发。
通过阅读本书,你将:
?掌握如今业务上使用的核心预测分析算法
?学习实现一个成功的预测分析项目的6个步骤
?根据需求遴选正确的算法
?使用预测分析来研究医疗领域的问题
?实现预测分析来挽留和获得你的客户
?利用文本挖掘来理解非结构化数据
?在个人电脑或者Spark/Hadoop环境中开发模型
?为客户实现预测分析产品
Preface 前 言这是另一类关于预测分析的书。我写这本书的初衷是为传统分析人员介绍一些使用开放源码工具的预测分析技术。
不过,我很快意识到,传统分析工具的某些特性可以使新一代数据科学家受益。我曾经在企业数据解决方案方面做了大量工作,我很有兴趣撰写一些不同类型的主题,如分析方法、敏捷、元数据、SQL分析和可重复的研究,这些研究在一些数据科学/预测分析书中经常被忽略,但对分析项目的成功是至关重要的。
我还想写一些很少被提及的分析技术,这些技术超出了标准回归和分类任务的范围,例如使用生存分析来预测客户流失,使用购物篮分析作为推荐引擎。
由于基于云计算的解决方案已经有了很大的进展,我认为增加一些关于云分析(大数据)的内容很重要,所以我加入了一些在Spark环境中开发预测分析解决方案的章节。
本书的重点之一是触类旁通,我希望无论你的技术方向是什么,也无论你如何理解数据科学、预测分析、大数据,甚至是诸如预测这样的术语,都可以在这里找到适合自己需求的内容。
此外,作为数据科学团队的一部分,我要向领域专家们致敬。通常情况下,这些精通领域业务知识的分析师没有耀眼的头衔,但他们对于分析项目的成功至关重要。希望我讨论的一些话题能打动他们的心弦,让他们对预测分析的一些技术概念更感兴趣。
当Packt邀请我写一本关于预测分析的书时,我首先想到的是寻找一种优秀的开源语言,来弥合传统分析与当今数据科学家之间的鸿沟。我认真地考虑过这个问题,是因为每种语言在如何表达问题的解决方案方面都有细微的差别。然而,我决定最终不在意那些细节,因为预测分析这个概念不是依赖于任何一种编程语言的,而且编程语言的选择通常由个人偏好以及你所在的公司决定。
我最终选择了R语言,因为我的专业背景是统计学,我觉得R语言具有良好的统计学严谨性,现在它不但已经和SAS等适合的软件做了合理的整合,而且还与关系数据库系统以及Web协议有很好的整合。它还具有出色的绘图和可视化系统,以及用户贡献的许多好用的软件包,涵盖了大部分的统计和预测分析功能。
关于统计数据,我建议你尽可能多地学习相关知识。了解统计数据可以帮助你区分优良的模型与糟糕的模型,并通过了解基本概念—如中心倾向度量(平均值、中位数、众数)、假设检验、p值和效应大小—来帮助你识别不良数据中的许多问题。如果你了解数据统计,将不再仅仅以自动的方式运行封装好的软件,而是可以多少了解一些底层的运行机制。
R语言的一个缺点是它在内存中处理数据,因此在单个PC上使用时,软件会限制数据集的大小,使之处理不了更大的数据集。对于本书中使用的数据集,在单个PC上运行R程序来处理应该没有问题。 如果你有兴趣分析大数据,本书将用几章的篇幅讨论在云环境中的R和Spark,你可以在这些章中看到如何处理分布在许多不同计算机上的大型数据集。
谈到本书中使用的数据集,我不想使用那些你经常看到的、被人们反复分析的数据集。其中一些数据集的确非常适合用来演示技术,但我想要一些新的东西。然而,我没有看到多少我认为对本书有用的数据。有些数据来源不明,有些需要正式的使用许可,有些缺少好的数据字典。所以,在许多章节中,我最终使用R中的模拟技术生成自己的数据。我觉得这是一个不错的选择,因为借此机会我能够介绍一些可以在工作中使用的数据生成技术。
我使用的数据涵盖了广泛的范围,包括市场营销、零售和医疗保健应用。我本来希望能增加一些财务方面的预测分析用例,但时间不够用了。也许我会把这方面的内容留到另一本书中去讲!
本书主要内容第1章从介绍预测分析的发展历史开始,然后讨论预测分析从业人员的一些不同角色,并描述他们从事的行业。接下来讨论在PC上组织预测分析项目的方法,介绍R语言,并以简短的预测模型为例结束该章。
第2章讨论如何将预测模型的开发过程组织成几个阶段,每个阶段都有不同的目标,如探索和问题定义,最后是预测模型的实际开发。该章讨论两种重要的分析方法:CRISP-DM和SEMMA。在该章中贯穿了一些示例代码,以展示一些方法的核心思想,希望你不会感到枯燥。
第3章介绍可以将自己的输入数据引入到R程序中的各种方法。该章还讨论使用标准SQL函数和R dplyr包的各种数据预处理方法。没有输入数据?没问题。该章将展示如何使用R语言的wakefield包生成你自己的模拟数据。
第4章从对有监督算法和无监督算法的讨论开始。该章的其余部分集中在回归算法,它是一种代表性的有监督算法。你将了解如何解释回归算法的输出,如模型系数和残差图。该章甚至提供一个交互式游戏,利用交互测试,看看你是否能够辨别一系列的残差是不是随机的。
第5章重点讨论另外三种广泛使用的核心预测算法,而且把它们与回归结合起来,可用于解决许多(可能是大部分)预测分析问题。该章讨论的最后一个算法(支持向量机(SVM))通常用于诸如非结构化文本之类的高维数据,因此示例代码将附带使用一些客户投诉评论的文本挖掘技术。
第6章讨论一种称为生存分析的具体建模技术,并展
作者简介
拉尔夫·温特斯(Ralph Winters)目前在一家医疗服务公司担任数据架构师。他已经给很多名列世界500强的大企业提供过自己在统计和分析方面的经验,包括金融、市场营销、保险、医疗和制药领域的企业。他的工作包括很多不同类型的预测分析项目,包括客户保留、反洗钱、客户之声文本挖掘分析,以及医疗风险和客户选择模型。
Contents 目 录
译者序
关于作者
关于审校者
前言
第1章预测分析入门 1
1.1许多行业中都有预测分析 2
1.1.1市场营销中的预测分析 2
1.1.2医疗中的预测分析 2
1.1.3其他行业中的预测分析 3
1.2技能和角色在预测分析中都很重要 3
1.3预测分析软件 4
1.3.1开源软件 5
1.3.2闭源软件 5
1.3.3和平共处 5
1.4其他有用的工具 5
1.4.1超越基础知识 6
1.4.2数据分析/研究 6
1.4.3数据工程 6
1.4.4管理 7
1.4.5数据科学团队 7
1.4.6看待预测分析的两种不同方式 7
1.5R 8
1.5.1CRAN 8
1.5.2安装R语言 8
1.5.3其他安装R语言的方法 8
1.6预测分析项目是如何组织的 9
1.7图形用户界面 10
1.8RStudio入门 11
1.8.1重新布局以保持和示例一致 11
1.8.2部分重要面板的简要描述 12
1.8.3创建新项目 13
1.9R语言控制台 14
1.10源代码窗口 15
1.11第一个预测模型 16
1.12第二个脚本 18
1.12.1代码描述 19
1.12.2predict函数 20
1.12.3检验预测误差 21
1.13 R语言包 22
1.13.1stargazer包 22
1.13.2安装stargazer包 23
1.13.3保存工作 24
1.14参考资料 24
1.15本章小结 24
第2章 建模过程 25
2.1结构化方法的优点 25
2.2分析过程方法 26
2.2.1CRISP-DM和SEMMA 27
2.2.2CRISP-DM和SEMMA的图表 27
2.2.3敏捷过程 28
2.2.4六西格玛和根本原因 28
2.2.5是否需要数据抽样 28
2.2.6使用所有数据 29
2.2.7比较样本与群体 29
2.3第一步:理解业务 30
2.4第二步:理解数据 36
2.4.1衡量尺度 36
2.4.2单变量分析 38
2.5第三步:数据准备 43
2.6第四步:建模 44
2.6.1具体模型说明 45
2.6.2逻辑回归 46
2.6.3支持向量机 47
2.6.4决策树 47
2.6.5降维技术 51
2.6.6主成分 51
2.6.7聚类 52
2.6.8时间序列模型 52
2.6.9朴素贝叶斯分类器 53
2.6.10文本挖掘技术 54
2.7第五步:评估 57
2.7.1模型验证 58
2.7.2曲线下面积 59
2.7.3样本内和样本外测试、前进测试 60
2.7.4训练/测试/验证数据集 60
2.7.5时间序列验证 61
2.7.6最佳冠军模型的基准测试 61
2.7.7专家意见:人与机器 61
2.7.8元分析 61
2.7.9飞镖板方法 61
2.8第六步:部署 62
2.9参考资料 62
2.10本章小结 62
第3章 输入和探索数据 64
3.1数据输入 64
3.1.1文本文件输入 65
3.1.2数据库表格 66
3.1.3电子表格文件 67
3.1.4XML和JSON数据 67
3.1.5生成你自己的数据 68
3.1.6处理大型文件的技巧 68
3.1.7数据整理 68
3.2连接数据 69
3.2.1使用sqldf函数 69
3.2.2生成数据 70
3.2.3检查元数据 71
3.2.4使用内部连接和外部连接来合并数据 72
3.2.5识别有多个购买记录的成员 73
3.2.6清除冗余记录 74
3.3探索医院数据集 74
3.3.1str(df)函数的输出 74
3.3.2View函数的输出 75
3.3.3colnames函数 75
3.3.4summary函数 76
3.3.5在浏览器中打开文件 77
3.3.6绘制分布图 77
3.3.7变量的可视化绘图 78
3.4转置数据帧 80
3.5缺失值 84
3.5.1建立缺失值测试数据集 84
3.5.2缺失值的不同类型 85
3.5.3纠正缺失值 87
3.5.4使用替换过的值运行回归 90
3.6替换分类变量 91
3.7异常值 91
3.7.1异常值为什么重要 91
3.7.2探测异常值 92
3.8数据转换 96
3.8.1生成测试数据 97
3.8.2Box-Cox转换 97
3.9变量化简/变量重要性 98
3.9.1主成分分析法 98
3.9.2全子集回归 102
3.9.3变量重要性 104
3.10参考资料 106
3.11本章小结 106
第4章 回归算法导论 107
4.1监督学习模型和无监督学习模型 108
4.1.1监督学习模型 108
4.1.2无监督学习模型 108
4.2回归技术 109
4.3广义线性模型 110
4.4逻辑回归 110
4.4.1比率 111
4.4.2逻辑回归系数 111
4.4.3示例:在医疗中使用逻辑回归来预测疼痛阈值 112
4.4.4GLM模型拟合 114
4.4.5检验残差项 115
4.4.6添加变量的分布图 116
4.4.7p值及其效应量 117
4.4.8p值及其影响范围 118
4.4.9变量选择 119
4.4.10交互 121
4.4.11拟合优度统计量 123
4.4.12置信区间和Wald统计 124
4.4.13基本回归诊断图 124
4.4.14分布图类型描述 124
4.4.15拟合优度:Hosmer-Lemeshow检验 126
4.4.16正则化 127
4.4.17示例:ElasticNet 128
4.4.18选择一个正确的Lambda 128
4.4.19基于Lambda输出可能的系数 129
4.5本章小结 130
第5章决策树、聚类和SVM导论 131
5.1决策树算法 131
5.1.1决策树的优点 131
5.1.2决策树的缺点 132
5.1.3决策树的基本概念 132
5.1.4扩展树 132
5.1.5不纯度 133
5.1.6控制树的增长 134
5.1.7决策树算法的类型 134
5.1.8检查目标变量 135
5.1.9在rpart模型中使用公式符号 135
5.1.10图的解释 136
5.1.11输出决策树的文本版本 137
5.1.12修剪 138
5.1.13渲染决策树的其他选项 139
5.2聚类分析 140
5.2.1聚类分析应用于多种行业 140
5.2.2什么是聚类 140
5.2.3聚类的类型 141
5.2.4k均值聚类算