Python预测分析实战
上QQ阅读APP看书,第一时间看更新

人们普遍对预测分析抱有一种常见的误解,认为预测分析就是建模。事实上,建模只是预测分析的一部分。多年来,人们就预测分析梳理出了相对规范的阶段,只不过不同领域的使用者会用不同的名称指代这些阶段。但是,各个阶段之间的顺序是有逻辑的,它们之间的关系也很容易理解。事实上,我们正是按照这些阶段的逻辑顺序加以组织的,具体如下。

理解问题和定义问题。

收集数据和准备数据。

使用探索性数据分析(Exploratory Data Analysis,EDA)挖掘数据信息。

构建模型。

评价模型。

沟通以及/或者部署。

我们将在后续章节详细介绍所有阶段。接下来,我们将简要介绍每个阶段的主要内容。我们认为,每个阶段都应该有一个明确的目标。

目标:理解问题和发现潜在的解决方案,同时定义解决问题所需要的条件。

这是预测分析过程的第一个阶段。这个阶段很关键,这时需要和利益相关方一起构建预测模型的目标,明确什么问题需要解决和解决方案的大致内容。

在这个阶段,我们还要明确项目的要求,如解决方案需要什么样的数据,数据需要什么格式,数据量需要多少,等等。最后,我们还要讨论模型输出的形式和提供的解决方案。相关内容详见第2章。

目标:得到可供分析的数据集。

这个阶段的主要任务是查看可用的数据。根据项目情况也许需要与数据库管理员沟通,请他们提供数据,也许还需要不同的数据源。有时候,数据可能还不存在,那么我们可能需要与某个团队协作,制订出收集数据的计划。记住,这个阶段的目标是获得可用于预测建模的数据。

在获取数据时,有可能会识别出数据中潜在的问题,因此这个阶段与前一个阶段紧密相关。在准备数据时,任务会在该阶段和前一阶段之间来回切换,因为在这个过程中很可能会发现,可用的数据无法解决问题,需要联合利益相关方,共同探讨具体情况,并重新思考解决方案。

在构建数据集时,可能还会发现数据带有某些问题,比如,可能数据集的某一列包含了许多缺失值,或者取值的编码不恰当。原则上,在这个阶段处理缺失值和离群点这样的问题非常适合,但实际情况往往并非如此,因此这个阶段与后一个阶段之间的界限也不太清晰。

目标:理解数据集。

一旦数据收集和准备完毕,我们就该进入用EDA分析数据集的阶段了。EDA是数值技术和可视化技术的组合,可以帮助理解数据集不同变量的含义和变量之间的潜在联系。通常,这一阶段与前一阶段和后一阶段的关系比较模糊,所以不要轻易认为数据集已经“做好准备”。分析过程从一开始就会遇到各种问题,例如,从一个来源得到了5个月的历史数据,从另一个来源得到的历史数据则可能只有两个月的;又如,可能发现数据集中的3个特征是多余的;再如,需要组合数据集中的一些特征生成新特征。所以,通常任务在多次往返于前几个阶段后才可能完成,最终准备好数据集。

要深入理解数据集,我们先要回答下面的问题。

数据中的变量类型是什么?

变量的分布是什么样的?

数据集中有缺失值吗?

有多余的变量吗?

数据集特征之间的关系是什么?

可以观测到离群点吗?

不同的特征对特征间的相关性有什么影响?

相关系数有意义吗?

数据集的特征和预测分析的目标之间存在什么关系?

这个阶段的所有问题要与项目的总目标相匹配。同时,我们必须牢记问题。一旦数据获得了良好的理解,我们就可以进行下一个阶段的工作——构建模型。

目标:生成可以解决问题的预测模型。

这个阶段会构建多个预测模型,然后通过评价选出最佳的一个。在这个阶段,我们必须选择所要训练估计的模型的类型。术语训练与机器学习有关,术语估计与统计有关。对于建模方法、模型的类型以及训练/估计过程,我们必须通过问题和解决方案加以确定。

在本书中,我们主要介绍如何使用Python构建模型及其数据科学生态系统,并比较不同的建模方法,如机器学习、深度学习和贝叶斯统计。在尝试不同的方法、模型类型和调参技术后,我们会让得到的最终模型进行“终极对决”,并希望最好的模型胜出,生成最佳的解决方案。

目标:从模型中选择最佳的一个模型,并评估该模型的解决方案。

在这个阶段中,我们要评价进入“终极对决”的模型,衡量它们的表现。这个阶段中的评价取决于问题,通常会用到一些主要指标。除了指标,还要考虑其他准则,如计算因素、可解释性、对用户友好的程度以及方法。我们会在第7章中深入探讨上述内容。模型评价会选择哪些准则和指标,也取决于问题。

记住,最佳的模型并不是最标新立异的、最复杂的、数学形式最棒的、计算效率最高的或者最前沿的,但一定是最有可能解决问题的。

目标:使用预测模型和预测结果。

最终,模型构建完毕,检验完成,并得到不错的评价。在理想的情况下,这个模型可以解决问题,其性能也很好。接下来,我们应该进入应用阶段了。模型的应用取决于项目,有时我们可以直接将预测结果作为报告的主题向利益相关方汇报。这就是沟通,而良好的沟通技巧有助于完成既定目标。

有时,模型会被整合为软件应用的一部分:网络端、桌面、移动端或任何其他类型的技术。这时我们很可能需要与应用团队密切交流,甚至参与其中。还有另一种可能性,即模型本身也许会成为一个“数据产品”。例如,信用卡评分应用会利用客户数据计算客户违约的可能性。我们将在第9章中以这个数据产品作为实例。

尽管我们按各阶段的顺序对其进行了介绍,但需要明确的是,这个分析过程是高度迭代和非线性的,实际建模时将在这些阶段中来回往复。相邻阶段的边界是模糊的,它们之间总有一些重叠,所以确定每个任务究竟归入哪个阶段并不是特别重要。举例来说,处理离群点的任务是属于“收集数据和准备数据”阶段的一部分,还是属于“使用EDA挖掘数据信息”阶段的一部分?这在实践中无关紧要,这个任务可以放在任何阶段,重点在于需要针对这个任务进行什么处理。

不过,在预测分析中,了解各阶段的逻辑顺序非常有用,这有助于工作的准备和组织,也有助于为项目的持续时间设定合理的预期。前一阶段是后一阶段的先决条件,各阶段的顺序是合理的。例如,不能在模型尚未构建之前就进行评价,但在评价模型后,如果认为这个模型不合适,可以返回“构建模型”阶段并提出新模型。

预测分析还有另一种流行框架,是跨行业的数据挖掘标准过程(Cross-Industry Standard Process for Data Mining,CRISP-DM),它类似于刚才描述的过程,在Wirth R和Hipp J的论文(2000)中有详细描述。在该框架中,分析过程分为6个主要阶段,如图 1-3 所示。需要着重强调的是,各个阶段的顺序并不严格,图 1-3 中的箭头仅描述了各阶段之间沟通较频繁的关系,这些关系取决于项目的特性或正在解决的问题。这6个阶段如下。

..\tu\1-3.tif

图1-3

业务理解。

数据理解。

数据准备。

建模。

评价。

部署。

这个过程还有其他的理解方式,例如,R. Peng(2016)用数据分析周转的概念描述了这个过程。他认为,周转包括如下内容。

开发预期。

收集数据。

匹配预期与数据。

提出问题。

探索性数据分析。

构建模型。

解释。

沟通。

“周转”这个词表达了这样一个事实:这些阶段不仅相互关联,还形成了完整的数据分析过程,整个过程仿佛一个很大的“轮子”。