应用结构化框架:客户流失示例
本示例将逐步引导您完成定义机器学习问题的过程。您将学习如何将业务知识与事件触发器、目标、预测点和特征的框架相结合,以构建一个定义良好的问题。
出发点是商业案例“客户会流失吗?”。通过使用结构化框架,我们将把这归结为可以通过机器学习算法预测的更具体的内容。
事件触发器
事件触发器是触发创建新预测的动作或事件。我们将事件触发器标识为“客户已注册订阅”。这在数据中表示为创建了新客户。我们希望在客户层面预测他们是否会流失,所以每一行都需要代表一个客户。
利用我们的业务知识并通过检查数据进行确认,我们知道新客户的流失率最高。因此,我们决定特别关注新客户。事件触发器是一个新客户注册,我们可以将每个客户视为从他们订阅的那天起有一个单独的时间线。
目标
目标是我们试图预测的结果。目标是我们试图预测的结果。我们希望预测客户流失,所以我们知道我们的总体目标是“客户会流失吗?”。但我们需要更具体地创建一个高质量的机器学习模型。首先,我们认为“流失”意味着客户致电我们取消其订阅。
接下来,我们决定取消呼叫的时间范围(地平线)。当我们查看多个取消的客户时,我们发现时间线不一致。一些客户在 45 天后取消,而另一些客户在 110 天后才取消。
我们有一个 90 天的免费试用计划,我们知道很多客户都从试用中流失。基于这种业务环境,我们最初的想法是使用 90 天的期限。通过预测谁将取消预订,我们计划提前联系这些客户,并提供奖励(如折扣或其他订阅功能),鼓励他们留下来。
客户取消注册后多少天的直方图证实了我们的商业直觉。在图中,我们可以看到过去三年中所有客户的数据。
选择 90 天的地平线似乎是一个很好的开始。然而,当我们在直方图上画出地平线时,我们意识到有很多客户在 90 天的试用期后的几天内继续流失。原因可能是他们看到自己的信用卡被收取费用,或者几天后收到付款方式被拒绝的通知,然后才打电话取消订阅。
因为我们希望在我们的模型中包含这些“流失”的客户,所以我们决定将 110 天作为我们的目标期限更有意义。通过使用 110 天,我们捕获了大多数客户,他们的流失可能与免费试用计划有关。
既然我们已经定义了目标,我们就可以确定数据存储在何处,以及需要如何清理数据以在数据集中构建目标列。在此示例中,我们执行以下操作:
-
从 Salesforce 中获取客户状态。
-
提取状态、客户创建日期和客户取消日期:
-
清理提取的数据并将其转换为目标列:
我们现在已经定义了事件触发器(新客户注册)和目标(客户在注册后 110 天内致电取消其订阅)。它们在图中的时间线上显示。.
预测点
预测点是停止收集特征数据并预测每行目标的指定时间。预测点可以落在事件触发(订阅注册日)和目标范围(注册后的第 110 天)之间的任何位置。为了选择一个起点,我们可以考虑我们想要采取的行动。
在我们的示例中,如果预测客户会流失,客户支持团队可能会要求 30 天时间向客户提供保留服务。这意味着,最晚我们要预测目标地平线前 30 天,即第 80 天。
选择第 80天 作为我们的预测点将给我们 80 天的时间来收集新客户的数据。事件触发和预测点之间的这个时间帧被称为数据累积窗口。在数据累积窗口期间收集的数据用于生成特征。
使用第 80 天作为预测点留下 30 天的行动窗口,这是预测点和目标地平线之间的时间。这是客户支持团队要求联系客户的 30 天窗口。
除了考虑对预测采取行动所需的最小行动窗口外,我们还需要查看变动前的天数直方图。应用第 80 天的预测点,我们将得到以下结果:
查看此直方图,我们意识到使用 80 天预测点无法最大化业务价值。尽管 80 天的数据有助于提高模型的准确性,但其可操作性成本很高:
-
首先,许多客户在第 80 天就已经开始大量生产了,因此在我们做出任何预测之前,他们将在数据积累窗口期间开始大量生产。这也意味着我们不想将它们包括在我们的训练数据集中,因为我们在做出预测之前会知道结果。
-
第二,许多客户在第 80 到 90 天左右流失,因此客户成功团队将没有整整 30 天的时间接触这些客户。
将预测点移动到第 60 天提供了准确性和可操作性之间的更好平衡。我们仍有 60 天的时间来收集数据,以用于我们模型中的功能,但我们现在已经提前预测,客户成功团队有 30 天的时间接触到我们预测将流失的大多数客户。通过减少数据累积窗口,我们可以预期模型精度会略有下降,但预测更具可操作性。
特征
定义了事件触发器、目标和预测点后,我们就可以将最后一部分添加到数据集:特征。特征是训练数据集中每行数据的已知属性或观察值,机器学习算法从中学习一般模式。当应用数据集中出现一行新数据时,算法使用这些特征进行预测。
将特征视为基于对结果有影响的业务知识的假设。在我们的示例中,一些特征可能是客户位置、潜在客户来源、注册月份、登录次数或活动用户数。
有两类特征:
-
固定特征是最直接的,因为它们不会随时间变化。在我们的示例中,客户位置(注册时)、潜在客户来源和注册月份都被认为是固定的特征。一旦客户注册(就在事件触发时),他们就被知道了,无论我们将预测点放在何处,他们都将是已知的和恒定的。
-
依赖于窗口的功能稍微复杂一些。依赖于窗口的功能稍微复杂一些。重要的是要确保您只使用及时知道的数据,否则模型可能会发生数据泄漏。(有关更多信息,请参阅数据泄露。)
一个简单的模型可能只使用第 0 天已知的信息,也就是说,只使用固定的特性。这将给出第 0 天的预测点,如图所示。
生成的数据集将如下所示:
然而,我们可能还希望使用客户订阅后收集的数据,如我们的示例中预测点为第 60 天。
现在,我们可以使用在客户注册后的前 60 天收集的信息,为我们的模型添加依赖于窗口的功能。这个模型的数据集现在看起来像下表,包括依赖于窗口的功能“前 60 天登录”和“60 天内的活跃用户”。
注意,在本示例中,特征反映了整个数据累积窗口。它们也可以更小。例如,我们可以测量前 10 天或第 30-60 天的登录,只要特征不包括超过预测点的任何信息。
依赖于窗口的特征收集起来可能更复杂,因为它们需要日期,并且需要额外的努力来确保它们在数据累积窗口内,以避免数据泄漏。但它们也可能是一些最强大的特征,因为它们可以反映更接近预测时间收集的信息。
由此产生的机器学习问题
我们从简单的用例“客户会流失吗?”开始。然后,我们将事件触发器定义为“新客户注册”,因为我们希望在单个客户级别进行预测。
我们用一个特定的结果定义了我们的目标-“客户来电取消其订阅(是或否)”-并将期限设置为 110 天,因为这是我们大多数试用客户取消订阅的时间。
通过查看过去三年中客户打电话取消注册后的天数直方图,我们确定了注册后 60 天的预测点。这将给我们 60 天的时间来收集信息(数据积累窗口),然后再进行预测,但仍会给客户支持团队时间对预测采取行动,以减少流失。
最后,我们收集了第 60 天之前可用的客户数据,以生成特征。
由此产生的机器学习问题是:“在前 60 天的活动结束后,客户会在第 110 天之前打电话取消吗?”
数据集现在已准备好用于自动机器学习,如下表所示。位置、潜在客户来源、加入月份和订阅金额是固定的特征,前 60 天登录和 60 天活跃用户是依赖于窗口的特征,目标列为“在 110 天之前删除”。