# 应用结构化框架：客户流失示例

本示例将逐步引导您完成定义机器学习问题的过程。您将学习如何将业务知识与事件触发器、目标、预测点和特征的框架相结合，以构建一个定义明确的问题。

出发点是商业案例“客户会流失吗？”。通过使用结构化框架，我们将把这归结为可以通过机器学习算法预测的更具体的内容。

## 事件触发器

事件触发器是触发创建新预测的动作或事件。我们将事件触发器标识为“客户已注册订阅”。这在数据中表示为创建了新客户。我们希望在客户层面预测他们是否会流失，所以每一行都需要代表一个客户。

利用我们的业务知识并通过检查数据进行确认，我们知道新客户的流失率最高。因此，我们决定特别关注新客户。事件触发器是一个新客户注册，我们可以将每个客户视为从他们订阅的那天起有一个单独的时间线。

事件触发器是新客户订阅时。水平线表示订阅后的天数。

事件触发器是新客户订阅时。水平线表示订阅后的天数。

事件触发器是新客户订阅时。水平线表示订阅后的天数。 ![新客户的时间表。](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Resources/Images/AutomatedMachineLearning/customer-churn-figure-1.png)

## 目标

目标是我们试图预测的结果。我们希望预测客户流失，所以我们知道我们的总体目标是“客户会流失吗？”。但我们需要更具体地创建一个高质量的机器学习模型。首先，我们认为“流失”意味着客户致电我们取消其订阅。

目标结果是客户致电取消其订阅。

目标结果是客户致电取消其订阅。

目标结果是客户致电取消其订阅。 ![具有目标的客户时间表。](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Resources/Images/AutomatedMachineLearning/customer-churn-figure-2.png)

接下来，我们决定取消呼叫的时间框（范围）。当我们查看多个取消的客户时，我们发现时间线不一致。一些客户在 45 天后取消，而另一些客户在 110 天后才取消。

从订阅到客户打电话取消订阅的天数。每一行代表不同的客户。

从订阅到客户打电话取消订阅的天数。每一行代表不同的客户。

从订阅到客户打电话取消订阅的天数。每一行代表不同的客户。 ![显示客户取消前天数的时间线。](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Resources/Images/AutomatedMachineLearning/customer-churn-figure-3.png)

我们有一个 90 天的免费试用计划，我们知道很多客户都从试用中流失。基于这种业务环境，我们最初的想法是使用 90 天的范围。通过预测谁将取消预订，我们计划提前联系这些客户，并提供奖励（如折扣或其他订阅功能），鼓励他们留下来。

客户注册后多少天取消的直方图证实了我们的商业直觉。在图中，我们可以看到过去三年中所有流失的客户的数据。

订阅后取消呼叫的天数分布。大多数取消都发生在客户订阅后 90 天左右。

订阅后取消呼叫的天数分布。大多数取消都发生在客户订阅后 90 天左右。

订阅后取消呼叫的天数分布。大多数取消都发生在客户订阅后 90 天左右。 ![显示客户取消前天数的直方图。](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Resources/Images/AutomatedMachineLearning/customer-churn-figure-4.png)

选择 90 天的范围似乎是一个很好的开始。然而，当我们在直方图上画出范围时，我们意识到有很多客户在 90 天的试用期后的几天内继续流失。原因可能是他们看到自己的信用卡被收取费用，或者几天后收到付款方式被拒绝的通知，然后才打电话取消订阅。

订阅后 90 天的范围

订阅后 90 天的范围

订阅后 90 天的范围 ![标有 90 天范围的直方图。](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Resources/Images/AutomatedMachineLearning/customer-churn-figure-5.png)

因为我们希望在我们的模型中包含这些“流失”的客户，所以我们决定将 110 天作为我们的目标范围更有意义。通过使用 110 天，我们捕获了大多数客户，他们的流失可能与免费试用计划有关。

订阅后 110 天的范围

订阅后 110 天的范围

订阅后 110 天的范围 ![标有 110 天范围的直方图。](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Resources/Images/AutomatedMachineLearning/customer-churn-figure-6.png)

既然我们已经定义了目标，我们就可以确定数据存储在何处，以及需要如何清理数据以在数据集中构建目标列。在此示例中，我们执行以下操作：

1. 从 Salesforce 中获取客户状态。

2. 提取状态、客户创建日期和客户取消日期：

   ![带有样本数据的表格。](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Resources/Images/AutomatedMachineLearning/customer-churn-table-2.png)

3. 清理提取的数据并将其转换为目标列：

   ![带有样本数据的表格。](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Resources/Images/AutomatedMachineLearning/customer-churn-table-3.png)

我们现在已经定义了事件触发器（新客户注册）和目标（客户在注册后 110 天内致电取消其订阅）。它们在图中的时间线上显示。

事件触发器是当新客户注册时 (1)，目标结果是当客户呼叫取消时 (2)，目标范围是订阅后 110 天 (3)。

事件触发器是当新客户注册时 (1)，目标结果是当客户呼叫取消时 (2)，目标范围是订阅后 110 天 (3)。

事件触发器是当新客户注册时 (1)，目标结果是当客户呼叫取消时 (2)，目标范围是订阅后 110 天 (3)。 ![显示事件触发器、目标和目标范围的时间线。](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Resources/Images/AutomatedMachineLearning/customer-churn-figure-7.png)

## 预测点

预测点是停止收集特征数据并预测每行目标的指定时间。预测点可以落在事件触发（订阅注册日）和目标范围（注册后的第 110 天）之间的任何位置。为了选择一个起点，我们可以考虑我们想要采取的行动。

在我们的示例中，如果预测客户会流失，客户支持团队可能会要求 30 天时间向客户提供保留服务。这意味着，最晚我们要预测目标范围前 30 天，即第 80 天。

预测点 (2) 设置在事件触发 (1) 和目标范围 (3) 之间的第 80 天。

预测点 (2) 设置在事件触发 (1) 和目标范围 (3) 之间的第 80 天。

预测点 (2) 设置在事件触发 (1) 和目标范围 (3) 之间的第 80 天。 ![显示预测点的时间线。](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Resources/Images/AutomatedMachineLearning/customer-churn-figure-8.png)

选择第 80 天作为我们的预测点将给我们 80 天的时间来收集新客户的数据。事件触发和预测点之间的这个时间帧被称为数据累积窗口。在数据累积窗口期间收集的数据用于生成特征。

数据累积窗口是事件触发和预测点之间的时间。

数据累积窗口是事件触发和预测点之间的时间。

数据累积窗口是事件触发和预测点之间的时间。 ![显示事件触发器和预测点之间的数据模拟窗口的时间线。](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Resources/Images/AutomatedMachineLearning/customer-churn-figure-9.png)

使用第 80 天作为预测点，留下 30 天的行动窗口，即预测点和目标范围之间的时间。这是客户支持团队要求联系客户的 30 天窗口。

操作窗口是预测点和目标范围之间的时间。

操作窗口是预测点和目标范围之间的时间。

操作窗口是预测点和目标范围之间的时间。 ![显示预测点和目标范围之间的数据模拟窗口的时间线。](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Resources/Images/AutomatedMachineLearning/customer-churn-figure-10.png)

除了考虑对预测采取行动所需的最小行动窗口外，我们还需要查看变动前的天数直方图。应用第 80 天的预测点，我们将得到以下结果：

取消调用与数据累积窗口和操作窗口的分布。

取消调用与数据累积窗口和操作窗口的分布。

取消调用与数据累积窗口和操作窗口的分布。 ![标记预测点和范围的直方图。](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Resources/Images/AutomatedMachineLearning/customer-churn-figure-11.png)

查看此直方图，我们意识到使用 80 天预测点无法最大化业务价值。尽管 80 天的数据有助于提高模型的准确性，但其可操作性成本很高：

* 首先，许多客户在第 80 天就已经流失，因此在我们做出任何预测之前，他们将在数据积累窗口期间流失。这也意味着我们不想将它们包括在我们的训练数据集中，因为我们在做出预测之前会知道结果。

* 第二，许多客户在第 80 到 90 天左右流失，因此客户成功团队将没有整整 30 天的时间接触这些客户。

在预测点之前取消订阅的客户将不包括在训练数据中。

在预测点之前取消订阅的客户将不包括在训练数据中。

在预测点之前取消订阅的客户将不包括在训练数据中。 ![显示在预测点之前大量流失的客户比例的直方图。](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Resources/Images/AutomatedMachineLearning/customer-churn-figure-12.png)

将预测点移动到第 60 天提供了准确性和可操作性之间的更好平衡。我们仍有 60 天的时间来收集数据，以用于我们模型中的功能，但我们现在已经提前预测，客户成功团队有 30 天的时间接触到我们预测将流失的大多数客户。通过减少数据累积窗口，我们可以预期模型精度会略有下降，但预测更具可操作性。

将预测点移动到第 60 天缩短了数据累积窗口，但为我们提供了更长的操作窗口。它将较少的客户排除在训练数据之外。

将预测点移动到第 60 天缩短了数据累积窗口，但为我们提供了更长的操作窗口。它将较少的客户排除在训练数据之外。

将预测点移动到第 60 天缩短了数据累积窗口，但为我们提供了更长的操作窗口。它将较少的客户排除在训练数据之外。 ![具有较早预测点和较长动作窗口的直方图。](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Resources/Images/AutomatedMachineLearning/customer-churn-figure-13.png)

## 特性

定义了事件触发器、目标和预测点后，我们就可以将最后一部分添加到数据集：特征。特征是训练数据集中每行数据的已知属性或观察值，机器学习算法从中学习一般模式。当应用数据集中出现一行新数据时，算法使用这些特征进行预测。

将特征视为基于对结果有影响的业务知识的假设。在我们的示例中，一些特征可能是客户位置、潜在客户来源、注册月份、登录次数或活动用户数。

有两类特征：

* 固定特征是最直接的，因为它们不会随时间变化。在我们的示例中，客户位置（注册时）、潜在客户来源和注册月份都被认为是固定的特征。一旦客户注册（就在事件触发时），他们就被知道了，无论我们将预测点放在何处，他们都将是已知的和恒定的。

* 窗口相关特征稍微复杂一些。这些是根据事件触发点和预测点之间的信息收集的特征。重要的是要确保您只使用及时知道的数据，否则模型可能会发生数据泄漏。（有关更多信息，请参阅[数据泄露](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/AutoML/data-leakage.htm)。）

一个简单的模型可能只使用第 0 天已知的信息，也就是说，只使用固定的特性。这将给出第 0 天的预测点，如图所示。

如果预测点在第 0 天，我们有 0 天时间收集数据，我们只能使用第 0 天已知的固定特征。行动窗口是整个 110 天。

如果预测点在第 0 天，我们有 0 天时间收集数据，我们只能使用第 0 天已知的固定特征。行动窗口是整个 110 天。

如果预测点在第 0 天，我们有 0 天时间收集数据，我们只能使用第 0 天已知的固定特征。行动窗口是整个 110 天。 ![预测点位于第 0 天的直方图。](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Resources/Images/AutomatedMachineLearning/customer-churn-figure-14.png)

生成的数据集将如下所示：

仅具有固定特征的训练数据

仅具有固定特征的训练数据

仅具有固定特征的训练数据 ![带有样本数据的表格。](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Resources/Images/AutomatedMachineLearning/customer-churn-table-4.png)

然而，我们可能还希望使用客户订阅后收集的数据，如我们的示例中预测点为第 60 天。

第 60 天的预测点给了我们 60 天收集数据和 50 天采取行动的时间。

第 60 天的预测点给了我们 60 天收集数据和 50 天采取行动的时间。

第 60 天的预测点给了我们 60 天收集数据和 50 天采取行动的时间。 ![预测点位于第 60 天的直方图。](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Resources/Images/AutomatedMachineLearning/customer-churn-figure-13.png)

现在，我们可以使用在客户注册后的前 60 天收集的信息，为我们的模型添加窗口相关特征。这个模型的数据集现在看起来像下表，包括窗口相关特征“前 60 天登录”和“60 天内的活跃用户”。

具有窗口相关特征的示例数据

具有窗口相关特征的示例数据

具有窗口相关特征的示例数据 ![带有样本数据的表格。](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Resources/Images/AutomatedMachineLearning/customer-churn-table-5.png)

注意，在本示例中，特征反映了整个数据累积窗口。它们也可以更小。例如，我们可以测量前 10 天或第 30-60 天的登录，只要特征不包括超过预测点的任何信息。

窗口相关特征收集起来可能更复杂，因为它们需要日期，并且需要额外的努力来确保它们在数据累积窗口内，以避免数据泄漏。但它们也可能是一些最强大的特征，因为它们可以反映更接近预测时间收集的信息。

## 由此产生的机器学习问题

我们从简单的用例“客户会流失吗？”开始。然后，我们将事件触发器定义为“新客户注册”，因为我们希望在单个客户级别进行预测。

我们用一个特定的结果定义了我们的目标-“客户来电取消其订阅（是或否）”-并将范围设置为 110 天，因为这是我们大多数试用客户取消订阅的时间。

通过查看过去三年中客户打电话取消注册后的天数直方图，我们确定了注册后 60 天的预测点。这将给我们 60 天的时间来收集信息（数据积累窗口），然后再进行预测，但仍会给客户支持团队时间对预测采取行动，以减少流失。

最后，我们收集了第 60 天之前可用的客户数据，以生成特征。

我们得出的机器学习问题是：“在前 60 天的活动结束后，客户会在第 110 天之前打电话取消吗？”

数据集现在已准备好用于自动机器学习，如下表所示。位置、潜在客户来源、加入月份和订阅金额是固定的特征，前 60 天登录和 60 天活跃用户是窗口相关特征，目标列为“在 110 天之前删除”。

具有固定特征 (1)、窗口相关特征 (2) 和目标 (3) 的样本数据

具有固定特征 (1)、窗口相关特征 (2) 和目标 (3) 的样本数据

具有固定特征 (1)、窗口相关特征 (2) 和目标 (3) 的样本数据 ![带有样本数据的表格。](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Resources/Images/AutomatedMachineLearning/customer-churn-table-6.png)