对未来的预测可以追溯到看手相的时代。预测分析需要对大量的历史数据进行分析和预处理,然后将结果提交给预测技术进行培训。一个预测模型需要将数据与良好的数学方法结合起来解决特定的问题。假设有一个明确定义的问题和一个旨在解决此问题的模型,那么必须详尽地衡量和评估所有预测错误。因此使用模型评估确定模型的准确度。随后使用评估结果选出最佳模型并设定理想的鉴别阈值。当结合业务规则后,预测模型将能够真正地对您的企业的底线产生影响。预测解决方案就是将数据、良好的数学方法和业务规则组合在一起,它们共同交付增强的业务决策功能。
预测分析允许公司和个人构建能够利用历史数据预测未来的解决方案。通常,如果未对试图解决的问题进行充分的定义,那么再优秀的预测模型也将派不上用场。
所有人都认为构建预测解决方案的第一步是数据分析和预处理,然后才是构建模型等,然而实际过程要比这更加简单。预测解决方案就是将数据和良好的数学方法结合起来解决特定问题。解决方案成功的前提是对问题进行明确定义。如果问题定义有误,那么解决方案评估结果将变得难以衡量,并因此无法进行有效的部署。另一方面,一个明确定义的问题将有助于清晰地评估所建议的解决方案的好坏。这使得所有参与方能够更轻松地理解并信任评估结果。
假设有一个明确定义的具体问题,数据科学家可以查看历史数据来确保它支持解决方案构建。即使数据并不完美,但可用的数据仍然可以提供足够的信息来构建成功的预测解决方案。完成数据分析后就将开始执行预处理。这一阶段之后就是模型构建,最终会产生一个预测模型。对模型进行评估(是否能够使用)后,将其放到一个业务上下文中并最终投入使用。本文将介绍创建预测解决方案的所有阶段,从数据预处理一直到实现有效部署。下面,我将使用 IBM SPSS Statistics 来阐述这几个阶段。
数据预处理:从原始数据到特性
是否应当从原始数据中直接构建预测模型?或者,在构建模型之前是否应先对数据进行预处理?答案照例是 “视情况而定”。尽管可能会按原样使用某些数据字段,但是大部分字段需要进行某种处理 (massaging)。
历史数据的形式多种多样。例如,数据可能包含有关某位客户的结构化和非结构化信息。在这种场景下,结构化数据包含诸如客户年龄、性别、最近一月内的购买次数等字段。这些信息是从客户帐户记录和历史交易中获得的。非结构化数据可能包括相同客户针对所购买商品或服务提供的反馈意见。在本系列文章的第 1 部分和第 2 部分中,我使用了类似的数据字段演示预测分析的一种应用:根据人员缩减预测客户流失。如果您按顺序阅读了前几篇文章,那么您现在应该已经对此问题有了大致的了解。
要构建一个预测模型来输出客户流失风险,我们决定将某些输入字段的值放到一起。例如,所有年龄在 21 岁以下的客户都划分在学生类别中。类似地,所有 55 岁以上的客户将划分到退休人员类别中。年龄介于 21 至 55 之间的客户则属于工人类别。很明显,这对最初的年龄字段进行了简化,然而这样做增加了将数据提交给某种预测技术以进行培训时的可预测性。实际上,数据预处理的最终目标就是增强输入字段的可预测性。通过从原始数据中挖掘特性,我们实际上突出显示了数据中的关键信息。通过这样做,我们简化了使用预测技术从数据中了解隐含的重要模式的过程。
预处理的另一个目的是修改数据,从而使数据适合于培训。例如,根据模型构建使用的技术,可能需要对前面提到的三个与年龄有关的分类进行离散。对于这种情况,如果客户 A 是 25 岁,那么她的年龄将通过三个不同的字段表示:学生、工人和退休人员,分别映射为 0、1 和 0。出于同样的考虑,任何连续的字段都需要进行标准化。在本例中,最近一个月内的购买次数将转化为一个介于 0 和 1 之间的数。注意,原始字段本身已经是经过预处理后的结果,因为它表示一个聚合:某段时期内发生的所有交易的总购买次数。
此外,我们还决定使用文本挖掘在评论中找出损耗提示并创建一个损耗度量,也由 0 到 1 之间的一个值表示。我们的想法是使用客户的特性列表表示每个客户并将它们结合为一条记录。如果选择了 100 个特性并且存在 100K 名客户,那么最终数据集将包含 100k 个行(或记录)以及 100 个列。
要让数据处理变得更简单,除了允许用户按照以上描述操作数据外,还有许多统计包可以使用户选择一个选项来自动预处理数据。例如,IBM SPSS Statistics 就允许自动构建特性。只需要选择 Transform menu > Prepare Data for Modeling 并单击 Automatic 即可。随后,您将被要求描述您的目标。可以从以下四个选项列表中选择。这些选项是:1) 平衡速度和准确度;2) 优化速度;3) 优化准确度;以及 4) 自定义分析。最后一个选项只推荐有经验的用户使用。IBM SPSS Statistics 还允许对数据应用各种转换。这可以通过 Transform 菜单轻松访问。
对数据进行适当的处理后,接下来将进行模型培训。
模型培训:从数据中获悉模式
在培训期间,所有数据记录都呈现给一种预测技术,该技术负责从数据中获悉模式。如果发生客户流失,数据中将包含可以区别流失客户和非流失客户的模式。注意,这里的目标是在输入数据(年龄、性别、最近一月购买的商品数量等)和目标或因变量(流失和非流失)之间创建一个映射函数。预测技术有许多种,诸如神经网络 (NN) 和支持矢量机等,都具有强大的功能,且能够学习复杂的任务。这些技术也具有通用性,可以用于解决各种问题。其他技术(如决策树和记分卡)也能够解释其预测背后的原理。由于本系列的第 2 部分已经对这些技术有所介绍,因此本文将主要侧重于 NN 技术。注意,相同的模型构建原理也适用于所有其他技术。从现在起,我将假设您是一名数据科学家,负责任务建模任务。
要在 IBM SPSS Statistics 中构建一个 NN,选择 Analyze menu > Neural Networks 并单击 Multilayer Perceptron。之后,将显示一个以制表符分隔的窗口,允许您为预测模型的构建配置所有必要的参数。
在 “Variables” 选项卡中,选择目标或因变量,以及您希望呈现给网络以供培训的所有输入变量。IBM SPSS Statistics 要求您将输入分为 Factor 和 Covariate。Factor 表示分类输入字段(如年龄),我们之前已将其转化为特定值:学生、工人和退休人员。IBM SPSS Statistics 将在培训开始前自动对这些值进行离散。Covariates 表示连续的变量。这些变量也将自动进行重新调节来改善网络培训。考虑到默认情况下会对分类变量进行离散,对连续变量进行重新调节,因此您无需在模型培训前做这些工作。
一种常见的做法是将包含处理过的数据的数据集分为两部分:一部分为模型培训预留,另一部分用于测试。第一个数据集通常包含总数据量的 70%。第二个数据集包含其余的数据,将用于模型验证(见下文)。这是 IBM SPSS Statistics 默认提供的分离。您可以通过选择 Partitions 选项卡来进行修改。
与任何其他预测技术一样,NN 附带了一些参数,可以根据数据和尝试解决的问题进行调整。在 Architecture 选项卡中,您可以选择使用某个选项实现自动架构选择,或者可以根据自己的专业水平对网络进行自定义,指定网络的层数和每个层的节点数。有关 NN 架构及其对培训的重要性等更多信息,请参阅本系列的第 2 部分。在 Training 选项卡中,您将看到其他参数,包括学习速度(网络学习应当有多快?)和优化算法。注意,选择错误的参数可能会导致无法实现学习。还需注意,和任何其他机器一样(使用或未使用计数器),针对某种预测技术设置某个参数总会产生副作用。例如,将 NN 的学习速度设置得过低将导致 NN 无法正常运行。如果设置得过高,那么 NN 将无法聚合。建议在一开始就使用 IBM SPSS Statistics 提供的默认参数。
IBM SPSS Statistics 还提供了其他配置选项卡,我们将在后面的小节中讨论。如果所有选项卡都进行了适当的配置,那么接下来就可以正式构建模型了。为此,在包含所有不同配置选项卡的窗口底部单击 OK 按钮。