有时候,要解决问题,只需要换个角度看问题。 即使过去10年来,类似的问题以同样的方式解决,但效果不同,但事实并非只有这种方法。
有一个主题是客户流失。 这是不可避免的,因为任何公司的客户都可能出于多种原因停止使用其产品或服务。 当然,对于公司来说,流失是很自然的,但不是最可取的行为,所以每个人都想尽量减少这种流失。 更好的是,预测特定类别的用户或特定用户的流失概率,并建议一些保留他们的步骤。
如果可能的话,有必要分析并尝试留住客户,至少出于以下原因:
- 吸引新客户比保留客户的成本更高。 为了吸引新客户,通常需要花费一些钱(广告),而现有客户可以通过特殊条件的特别优惠来激活;
- 了解顾客离开的原因是改进产品和服务的关键.
有一些标准方法可以预测客户流失。 但在一场人工智能锦标赛上,我们决定尝试使用威布尔分布。 它最常用于生存分析、天气预报、自然灾害分析、工业工程等。 威布尔分布是一种由两个参数参数化的特殊分布函数 и
.
总的来说,这是一件有趣的事情,但对于预测资金流出以及整个金融科技来说,它并不经常使用。 下面我们将告诉您我们(数据挖掘实验室)如何做到这一点,同时赢得人工智能锦标赛“银行人工智能”类别的金牌。
关于一般流失率
让我们了解一下什么是客户流失以及为什么它如此重要。 客户群对于企业来说很重要。 例如,新客户来到这个基地,从广告中了解到某种产品或服务,生活一段时间(积极使用该产品),并在一段时间后停止使用它。 这个时期被称为“客户生命周期”——这个术语描述了客户从了解产品、做出购买决定、支付、使用并成为忠实消费者,并最终停止使用该产品所经历的阶段。由于这样或那样的原因。 因此,客户流失是客户生命周期的最后阶段,即客户停止使用服务,对于企业而言,这意味着客户已停止带来利润或任何利益。
每个银行客户都是一个特定的人,他专门根据自己的需要选择一张或另一张银行卡。 如果你经常旅行,一张有里程的卡会派上用场。 买了很多 - 你好,现金返还卡。 他在特定商店购买了很多东西 - 并且已经有专门的合作伙伴塑料可以用于此。 当然,有时会根据“最便宜的服务”标准来选择卡。 总的来说,这里有足够的变量。
一个人也可以选择银行本身 - 当你来自哈巴罗夫斯克时,从一家仅在莫斯科和该地区设有分支机构的银行选择一张卡有什么意义? 即使此类银行的卡的利润至少高出 2 倍,附近是否有银行网点仍然是一个重要标准。 是的,2019 年已经到来,数字化是我们的一切,但一些银行的许多问题只能在分行解决。 另外,部分人群对实体银行的信任程度远高于智能手机上的应用程序,这一点也需要考虑在内。
因此,一个人可能有很多理由拒绝银行产品(或银行本身)。 我换了工作,卡的资费也从工资变成了“对于凡人来说”,利润减少了。 我搬到了另一个没有银行分行的城市。 我不喜欢在分行与不合格的操作员进行互动。 也就是说,关闭帐户的原因可能比使用产品的原因更多。
而客户不仅可以明确表达自己的意图——来银行写一份声明,而且可以简单地停止使用产品而不终止合同。 决定使用机器学习和人工智能来理解此类问题。
此外,客户流失可能发生在任何行业(电信、互联网提供商、保险公司,一般来说,只要有客户群和定期交易)。
我们做了什么
首先,有必要描述一个清晰的界限——从什么时候我们开始考虑客户离开。 从为我们提供工作数据的银行的角度来看,客户的活动状态是二元的——他要么活跃,要么不活跃。 “活动”表中有一个 ACTIVE_FLAG 标志,其值可以是“0”或“1”(分别为“非活动”和“活动”)。 一切都会好起来的,但一个人就是这样,他可以主动使用一段时间,然后一个月就退出主动列表——他生病了,去另一个国家度假,甚至去测试了其他银行的卡。 或者在长时间不活动后,再次开始使用银行的服务
因此,我们决定将不活动期称为特定的连续时间段,在此期间其标志设置为“0”。
经过不同长度的不活动期后,客户会从不活动变为活跃。 我们有机会计算“不活动期的可靠性”的经验值程度——即一个人在暂时不活动后再次开始使用银行产品的概率。
例如,此图显示客户端在几个月不活动 (ACTIVE_FLAG=1) 后恢复活动 (ACTIVE_FLAG=0)。
在这里,我们将澄清一些我们开始使用的数据集。 因此,该银行在下表中提供了 19 个月的汇总信息:
- “活动”——每月客户交易(通过银行卡、网上银行和手机银行),包括工资单和营业额信息。
- “卡”——有关客户拥有的所有卡的数据,以及详细的费率表。
- “协议” - 有关客户协议的信息(开放式和封闭式):贷款、存款等,指示每个协议的参数。
- “客户”——一组人口统计数据(性别和年龄)和可用的联系信息。
为了工作,我们需要除“地图”之外的所有表格。
这里还有另一个困难 - 在这些数据中,银行没有表明卡上发生了什么样的活动。 也就是说,我们可以了解是否有交易,但我们无法再确定它们的类型。 因此,尚不清楚客户是在提取现金、领取工资还是将钱用于购物。 我们也没有账户余额数据,这本来是有用的。
样本本身是公正的——在这个样本中,在超过 19 个月的时间里,银行没有做出任何尝试来留住客户并最大限度地减少资金外流。
那么,关于不活动的时期。
为了制定流失的定义,必须选择不活动的时期。 创建某个时间点的客户流失预测 ,您必须有至少 3 个月的客户历史记录
。 我们的历史记录仅限于 19 个月,因此我们决定保留 6 个月的不活动期(如果有的话)。 对于高质量预测的最短期限,我们花了 3 个月的时间。 我们根据对客户数据行为的分析,凭经验获取了 3 个月和 6 个月的数据。
我们对客户流失的定义如下:客户流失的月份 这是 ACTIVE_FLAG=0 的第一个月,从本月开始,ACTIVE_FLAG 字段中至少有六个连续的零,换句话说,即客户端有 6 个月不活动的月份。
离开的客户数量
剩余客户数量
流失率是如何计算的?
在此类竞争中以及在一般实践中,经常以这种方式预测流出。 客户在不同时间段使用产品和服务,与其交互的数据被表示为固定长度n的特征向量。 这些信息通常包括:
- 描述用户特征的数据(人口统计数据、营销细分)。
- 银行产品和服务的使用历史(这些是始终与我们需要的特定时间或间隔时间段相关的客户操作)。
- 外部数据(如果可以获取的话)——例如来自社交网络的评论。
之后,他们得出了流失的定义,每个任务都有不同的定义。 然后他们使用机器学习算法来预测客户离开的可能性 基于因素向量
。 为了训练算法,使用了一种众所周知的构建决策树集成的框架,
该算法本身还不错,但在预测流失方面有几个严重的缺点。
- 他没有所谓的“记忆”。 模型的输入是与当前时间点相对应的指定数量的特征。 为了存储有关参数变化历史的信息,需要计算表征参数随时间变化的特殊特征,例如,过去1,2,3、XNUMX、XNUMX个月的银行交易数量或金额。 这种方法只能部分反映临时变化的性质。
- 固定的预测范围。 该模型只能预测预定义时间段内的客户流失,例如提前一个月预测。 如果需要对不同时间段(例如三个月)进行预测,则需要重建训练集并重新训练新模型。
我们的方法
我们立即决定不使用标准方法。 除了我们之外,还有497人报名参加了锦标赛,每个人背后都有着丰富的经验。 因此,在这种情况下尝试按照标准方案做某事并不是一个好主意。
我们开始通过预测客户流失次数的概率分布来解决二元分类模型面临的问题。 可以看到类似的方法
以下是取决于参数的威布尔概率密度分布的示例 и
:
这是三个不同客户随时间流失的概率密度函数。 时间以月为单位。 换句话说,该图显示了客户在未来两个月内最有可能流失的时间。正如您所看到的,具有分布的客户比具有 Weibull(2, 0.5) 和 Weibull 的客户更早离开的可能性(3,1) 分布。
结果是一个模型,对于每个客户,每个
Month 预测威布尔分布的参数,最能反映随着时间的推移发生流出的概率。 更详细地说:
- 训练集上的目标特征是特定客户在特定月份内流失之前的剩余时间。
- 如果客户没有流失率,我们假设流失时间大于从当月到历史记录结束的月数。
- 使用的模型:带有 LSTM 层的循环神经网络。
- 作为损失函数,我们使用威布尔分布的负对数似然函数。
以下是该方法的优点:
- 概率分布除了明显的二元分类可能性之外,还可以灵活预测各种事件,例如客户是否会在 3 个月内停止使用银行的服务。 此外,如有必要,可以在此分布上对各种指标进行平均。
- LSTM 循环神经网络具有记忆能力,可以有效地利用整个可用的历史记录。 随着故事的扩展或完善,准确性也会提高。
- 当将时间段划分为更小的时间段时(例如,将月划分为周),该方法可以轻松扩展。
但仅仅创建一个好的模型还不够;你还需要正确评估它的质量。
质量是如何评估的?
我们选择提升曲线作为指标。 它在商业中用于此类情况,因为它的解释清晰,描述得很好 % 比随机。”
训练模型
竞争条件没有建立可以比较不同模型和方法的具体质量指标。 此外,流失的定义可能不同,并且可能取决于问题陈述,而问题陈述又由业务目标决定。 因此,为了了解哪种方法更好,我们训练了两个模型:
- 使用集成决策树机器学习算法的常用二元分类方法(
轻型GBM ); - 威布尔-LSTM模型
测试集由 500 名不在训练集中的预选客户组成。 使用交叉验证为模型选择超参数,并按客户端细分。 使用相同的特征集来训练每个模型。
由于该模型没有记忆,因此采用了特殊的特征,显示一个月内参数的变化与最近三个月参数平均值的比率。 过去三个月内价值变化率的特征是什么。 如果没有这一点,基于随机森林的模型相对于 Weibull-LSTM 将处于劣势。
为什么具有威布尔分布的 LSTM 比集成决策树方法更好
只需几张图片就可以清楚地了解一切。
经典算法与 Weibull-LSTM 的提升曲线比较
经典算法和 Weibull-LSTM 按月提升曲线指标的比较
总的来说,LSTM 几乎在所有情况下都优于经典算法。
客户流失预测
基于带有威布尔分布的 LSTM 单元的循环神经网络的模型可以提前预测客户流失情况,例如预测未来 n 个月内的客户流失情况。 考虑 n = 3 的情况。在这种情况下,对于每个月,神经网络必须正确确定客户是否会离开,从下个月开始直到第 n 个月。 换句话说,它必须正确判断该客户在n个月后是否还会留下来。 这可以认为是提前预测:预测客户刚刚开始考虑离开的时刻。
我们来比较一下流出前 1、2 和 3 个月 Weibull-LSTM 的 Lift Curve:
我们在上面已经写过,对一段时间内不再活跃的客户所做的预测也很重要。 因此,这里我们将在离开的客户已经不活跃一两个月的情况下将此类情况添加到样本中,并检查 Weibull-LSTM 是否正确地将此类情况分类为流失。 由于样本中存在此类情况,我们希望网络能够很好地处理它们:
客户保留
实际上,这是可以做的主要事情,掌握这样那样的客户准备停止使用该产品的信息。 说到建立一个可以为客户提供有用的东西以留住他们的模型,如果您没有类似尝试的历史并且最终会取得良好的结果,那么这是不可能完成的。
我们没有这样的故事,所以我们就这样决定了。
- 我们正在构建一个模型,为每个客户识别感兴趣的产品。
- 每个月我们都会运行分类器并识别潜在的离开客户。
- 我们根据第 1 点的模型向一些客户提供产品,并记住我们的行为。
- 几个月后,我们会研究哪些可能离开的客户离开了,哪些留下了。 这样,我们就形成了一个训练样本。
- 我们根据步骤 4 中获得的历史记录来训练模型。
- 或者,我们重复该过程,将步骤 1 中的模型替换为步骤 5 中获得的模型。
可以通过定期 A/B 测试来测试此类保留的质量 - 我们将可能离开的客户分为两组。 我们根据我们的保留模型向其中一种提供产品,而对于另一种我们不提供任何产品。 我们决定训练一个在示例的第 1 点中已经有用的模型。
我们希望使分割尽可能地可解释。 为此,我们选择了几个易于解释的特征:交易总数、工资、账户总营业额、年龄、性别。 “Maps”表中的特征没有被考虑为无信息性,并且由于处理的复杂性,表3“Contracts”中的特征也没有被考虑在内,以避免验证集和训练集之间的数据泄漏。
使用高斯混合模型进行聚类。 Akaike 信息准则使我们能够确定 2 个最佳值。 第一个最优值对应于 1 个簇。 第二个最佳值不太明显,对应于 80 个簇。 基于这个结果,我们可以得出以下结论:在没有先验给定信息的情况下,将数据划分为簇是极其困难的。 为了更好地聚类,您需要详细描述每个客户端的数据。
因此,考虑了监督学习的问题,以便为每个客户提供不同的产品。 考虑的产品有:“定期存款”、“信用卡”、“透支”、“消费贷款”、“汽车贷款”、“抵押贷款”。
该数据还包括另一种类型的产品:“活期账户”。 但由于其信息含量较低,我们没有考虑它。 对于银行客户的用户,即并没有停止使用其产品,而是建立了一个模型来预测他们可能会对哪些产品感兴趣。 选择逻辑回归作为模型,并使用前 10 个百分位数的 Lift 值作为质量评估指标。
模型的质量可以在图中进行评估。
为客户提供产品推荐模型结果
总
这种方法使我们在 RAIF-Challenge 2017 人工智能锦标赛的“银行人工智能”类别中获得第一名。
显然,主要的是从非常规的角度来处理问题,并使用通常用于其他情况的方法。
尽管用户大量外流很可能对服务来说是一场自然灾害。
这种方法可以适用于任何其他需要考虑流出的领域,而不仅仅是银行。 例如,我们用它来计算我们自己的流出量 - Rostelecom 的西伯利亚和圣彼得堡分支机构。
“数据挖掘实验室”公司“搜索门户“Sputnik”
来源: habr.com