正如我们预测的那样,将其视为自然灾害

有时,为了解决问题,您只需要从另一个角度看待它。 即使在过去的10年中以相同的方式解决了这些问题并产生了不同的效果,但并不是唯一的方法。

客户流失就是一个话题。 这是不可避免的,因为任何公司的客户都可以出于多种原因使用和停止使用其产品或服务。 当然,对于公司而言,外流是自然而然的,但不是最理想的操作,因此每个人都在努力减少这种外流。 甚至更好-预测特定类别的用户或特定用户外流的可能性,并提供一些保留步骤。

至少出于以下原因,分析并尝试保留客户(如果可能):

  • 吸引新客户比保留程序要贵得多 。 通常,要吸引新客户,您需要花费一些钱(广告),而现有客户可以通过特殊条件的特殊优惠激活;
  • 了解客户离开的原因是改善产品和服务的关键

有预测流出量的标准方法。 但是在其中一个AI锦标赛中,我们决定参加并尝试使用Weibull分配。 最常用于生存分析,天气预报,自然灾害分析,工业工程等。 威布尔分布是由两个参数参数化的特殊分布函数 λk


维基百科

总的来说,这很有趣,但是为了预测资金流出,实际上在金融科技中,它并不经常使用。 根据削减,我们将告诉您我们(数据挖掘实验室)如何做到这一点,方法是在“银行中的AI”提名中赢得AI冠军。

关于一般的流出


让我们看一下什么是客户端流出以及为什么它如此重要。 对于企业而言,客户群很重要。 例如,新客户进入该数据库后,就从广告中了解了产品或服务,他们生活了一段时间(积极使用产品),过了一段时间就停止使用它。 这个时期称为“客户生命周期”(简称“客户生命周期”),该术语描述了客户在找到产品,做出购买决定,付款,使用并成为忠实消费者并最终停止使用时所经历的步骤。由于一个原因或另一种产品。 因此,资金外流是客户停止使用服务时生命周期的最后阶段,对于企业而言,这意味着客户已不再盈利,通常不会获得任何收益。

银行的每个客户都是一个特定的人,他会根据自己的需要选择特定的银行卡。 经常旅行-有英里的地图很有用。 他买了很多东西-你好,带现金返还的卡。 他在特定的商店购买了很多东西-为此,已经有一种特殊的附属塑料。 当然,有时也会根据“最便宜的服务”标准选择一张卡。 通常,这里有足够的变量。

还有另一个人选择银行本身-值得选择一张银行卡吗?当您来自哈巴罗夫斯克时,哪些支行仅在莫斯科及该地区存在? 如果这样的银行卡的获利能力至少高出2倍,则附近存在银行分支机构仍然是重要的标准。 是的,2019年已经来临,数字化已成为我们的一切,但某些银行的许多问题只能在分行解决。 再者,还有一部分人对实体银行的信任远胜于智能手机上的应用程序,这也需要加以考虑。

结果,一个人可能有很多拒绝银行产品(或银行本身)的原因。 他改变了工作,卡费率从薪水改为了“只为凡人”,这使利润降低了。 他搬到了另一个没有银行支行的城市。 我不喜欢与该部门的非熟练操作员交谈。 也就是说,关闭帐户的原因可能比使用产品的原因还要多。

客户不仅可以明确表达自己的意图-到银行写账单,还可以在不违反合同的情况下停止使用产品。 在这里,为了理解此类问题,决定使用机器学习和AI。

此外,客户流失可能发生在任何行业(电信,互联网提供商,保险公司,一般来说,有客户群和定期交易的任何地方)。

我们做了什么


首先,有必要描述一个清晰的边界-因为我们什么时候开始考虑该客户已离开。 从向我们提供工作数据的银行的角度来看,客户的活动状态是二进制的-无论活动与否。 “活动”表中有一个ACTIVE_FLAG标志,其值可以为“ 0”或“ 1”(分别为“无效”和“有效”)。 一切都会好起来的,但是这个人可以这样使用一段时间,然后退出活动状态一个月-他生病了,去另一个国家休息,甚至去测试另一家银行的卡。 或者,经过长时间的闲置之后,再次开始使用银行的服务

因此,我们决定将不活动时间段称为连续的一段时间,在此期间将其标志设置为“ 0”。



在各种长度的不活动时间段之后,客户从不活动状态变为活动状态。 我们有机会计算经验值的程度(“不活动期间的可靠性”),也就是说,一个人在暂时不活动之后再次开始使用银行产品的可能性。

例如,此图显示了几个月不活动(ACTIVE_FLAG = 0)后客户的活动恢复(ACTIVE_FLAG = 1)。



在这里,我们将澄清一些我们开始使用的数据集。 因此,银行在下表中提供了19个月的汇总信息:

  • “活动”-每月客户交易(通过卡,在互联网银行和移动银行中),包括工资和营业额信息。
  • “卡”-客户拥有的所有卡上的数据,并附有详细的资费表。
  • “合同”-有关客户合同(未平仓和已平仓)的信息:贷款,存款等,指示每个合同的参数。
  • “客户”-一组人口统计数据(性别和年龄)以及联系数据的可用性。

为了工作,我们需要除“地图”之外的所有表。

这里的困难是另外一回事-在此数据中,银行没有指出卡上发生了哪种活动。 也就是说,我们可以了解是否存在交易,但是我们无法再确定其类型。 因此,不清楚客户是否在提取现金,是否收到薪水或是否在购物上花了钱。 而且我们没有帐户余额数据,这将很有用。

样本本身没有偏见-在此部分的19个月中,银行没有尝试保留客户并最大程度地减少资金流出。

因此,关于不活动的时间段。

要制定流出的定义,您需要选择一个闲置时间。 一次创建流出预测 tt,您在此间隔内必须拥有至少3个月的客户历史记录 [t3;t1]。 我们的历史仅限于19个月,因此我们决定将6个月的闲置时间(如有)。 对于定性预测的最短时间,他们花了3个月的时间。 我们根据对客户数据行为的分析,以经验得出的3和6个月的数据。

我们定义的流出量定义如下:客户的月流出量 k这是ACTIVE_FLAG = 0的第一个月,其中ACTIVE_FLAG字段自该月以来连续运行了至少六个零,换句话说,自客户端停止活动六个月以来的月份。


离去客户数


剩余客户数

由于被认为是流出


在此类比赛中,实际上在实践中,经常会以这种方式预测资金外流。 客户以不同的时间间隔使用产品和服务;与客户互动的数据以固定长度n的特征向量的形式表示。 通常,此信息包括:

  • 用户特定数据(人口统计数据,市场细分)。
  • 使用银行产品和服务的历史记录(这些客户行为始终与我们需要的特定时间或间隔相关)。
  • 外部数据(如果可以获取的话)-例如,来自社交网络的评论。

然后,他们导出了流出的定义,对于每个任务都是如此。 然后他们使用机器学习算法,该算法可以预测客户离开的可能性 k基于因子向量 Xn。 为了学习该算法,使用了用于构建决策树集合的著名框架之一XGBoostLightGBMCatBoost或其修改。

该算法本身还不错,但是在预测流量方面,它有几个严重的缺点。

  • 他没有所谓的“记忆” 。 模型的输入接收给定数量的与当前时间点相对应的特征。 为了提供有关参数更改历史记录的信息,有必要计算表征参数随时间变化的特殊功能,例如,过去1.2.3个月内银行交易的数量或金额。 这种方法只能部分反映临时变更的性质。
  • 固定预测范围。 该模型只能在预定的时间段内预测客户的流失,例如提前一个月进行预测。 如果您需要另一个时间段(例如三个月)的预测,则需要重新构建训练集并重新训练新模型。

我们的方法


我们立即决定不使用标准方法。 除了我们之外,还有497人注册了冠军,每个人都有着很好的经验。 因此,在这种情况下尝试以标准方式进行操作不是一个好主意。

我们开始通过预测客户流出时间的概率分布来解决二元分类模型所面临的问题。 在这里可以看到类似的方法;与传统方法相比,它可以更灵活地预测流出量并测试更复杂的假设。 作为模拟流出时间的分布族,我们选择了Weibull分布,因为它广泛用于生存分析。 客户行为可以看作是一种生存。

这是根据参数的威布尔概率密度分布的示例 λk



这是三个不同客户的客户流失随时间变化的概率密度分布。 时间以月为单位。 换句话说,此图显示了客户在接下来的两个月中最有可能外流的情况,如您所见,具有分配的客户比具有Weibull(2,0.5)和Weibull(3.1)分配的客户有更大的离职机会。

结果是一个模型,可以为每个客户提供任何
的月份预测了威布尔分布参数,该参数最能反映随着时间流逝的流出概率。 如果有更多详细信息:

  • 培训样本中的目标特征-特定客户在特定月份的流出之前所剩余的时间。
  • 如果没有针对客户的流出指标,则我们假设流出时间长于从当前历史记录和历史记录的结尾算起的月份数。
  • 使用的模型:具有LSTM层的递归神经网络。
  • 作为损失函数,我们对威布尔分布使用负对数似然函数。

这是此方法的优点:

  • 除了明显的二进制分类可能性外,概率分布还使您可以灵活地预测各种事件,例如,客户是否在3个月内停止使用银行的服务。 同样,如有必要,可以在此分布上平均各种指标。
  • LSTM循环神经网络具有存储功能,可以有效地使用整个历史记录。 随着历史的扩展或完善,准确性不断提高。
  • 将时间间隔分成较小的时间间隔(例如,将月份分为几周)时,可以无问题地扩展该方法。

但这还不足以创建一个好的模型,您还需要正确评估其质量。

如何评估质量


作为指标,我们选择了“提升曲线”。 由于可理解的解释,在商业上用于此类情况; 在这里这里都进行了很好的描述。 如果用一个句子描述该度量的含义,则会得到“算法在第一个预测中做出最佳预测的次数 k%比随机。”

我们训练模型


竞争条件并未建立可用来比较各种模型和方法的特定质量指标。 此外,流出概念的定义可能不同,并且可能取决于问题的陈述,而问题的陈述又由业务目标决定。 因此,为了了解哪种方法更好,我们训练了两个模型:

  1. 使用决策树集成( LightGBM )的机器学习算法的常用二进制分类方法;
  2. 威布尔LSTM模型

测试样本包括500名未参加培训样本的预选客户。 对于该模型,客户使用交叉验证选择了超参数。 为了训练每个模型,使用了相同的属性集。

由于该模型没有内存,因此对其采取特殊符号,以显示过去三个月中一个月参数的变化与参数平均值的比率。 最近三个月内的价值变化率的特征是什么。 没有这个,基于随机森林的模型将相对于Weibull-LSTM处于先前的亏损位置。

为什么具有Weibull分布的LSTM优于基于决策树集成的方法


在这里,所有内容显然都是几张图片。


经典算法和Weibull-LSTM的升力曲线比较


经典算法和Weibull-LSTM的每月升力曲线指标比较

通常,LSTM在几乎所有情况下都采用经典算法。

流出预测


基于带有具有Weibull分布的LSTM细胞的递归神经网络的模型可以提前预测流出,例如,预测接下来n个月内客户的离开。 考虑n = 3的情况。在这种情况下,对于每个月,神经网络都必须正确确定客户是否将从下个月离开直到第n个月。 换句话说,她必须正确地确定客户是否会在n个月后留下。 这可以被认为是预先的预测:预测客户刚开始思考如何离开的时刻。

比较流出前1、2和3个月的Weibull-LSTM的升力曲线:



上面我们已经写道,针对一段时间不活跃的客户所做的预测也很重要。 因此,在这里,我们将把离去的客户已经闲置一两个月的情况添加到样本中,并检查Weibull-LSTM是否将此类情况正确分类为流出。 由于样本中存在此类情况,因此我们希望网络能够很好地应对它们:



客户留存率


实际上,这是可以利用此类客户准备停止使用该产品的现有信息来完成的主要工作。 说到建立一个模型,该模型可以为客户提供有用的东西以保持他们的利益,如果您没有这样的尝试的历史,那就没有用了。

我们没有这样的故事,所以我们这样决定。

  1. 我们正在建立一个模型,为每个客户定义有趣的产品。
  2. 每个月,我们都会运行分类器,并确定潜在的外向客户。
  3. 根据第1款的模型,一些客户提供产品时,请记住他们的行为。
  4. 几个月后,我们查看了这些潜在的外向客户中剩下了哪些,还有哪些仍然存在。 因此,我们形成一个训练样本。
  5. 我们根据第4段中获得的故事训练模型。
  6. (可选)重复此过程,将第1段中的模型替换为第5段中获得的模型。

通常的A / B测试可以检查这种保留的质量-我们将可能离开的客户分为两组。 我们为客户提供基于保留模型的产品,而为客户第二提供任何产品。 我们决定训练一个模型,该模型在示例的第1点可能已经受益。

我们希望使细分尽可能地可解释。 为此,我们选择了几个易于理解的标志:交易总数,工资,账户总营业额,年龄,性别。 由于处理的复杂性是为了避免验证集和训练集之间的数据泄漏,因此没有将“卡片”表中的标志视为无意义的信息,而将表3中的“合同”的标志视为没有信息。

使用高斯混合模型进行聚类。Akaike信息准则可以确定2个最佳值。第一最优对应于1个簇。第二个最佳值(不太明显)对应于80个聚类。从这个结果可以得出以下结论:在没有先验给定信息的情况下,将数据划分为簇是极其困难的。为了更好地集群,您需要详细描述每个客户端的数据。

因此,考虑了与老师一起训练的任务,以便为每个客户提供产品。考虑了以下产品:“定期存款”,“信用卡”,“透支”,“消费贷款”,“汽车贷款”,“抵押”。

数据中存在另一种产品:“经常账户”。但是由于信息量少,我们没有考虑它。通过作为银行客户的用户,即他们并没有停止使用其产品,而是建立了一个模型来预测他们可能会感兴趣的产品。选择Logistic回归作为模型,并将前10个百分位数的提升值用作质量评估指标。

可以在图中估算模型的质量。


客户推荐模型结果

总结


这种方法使我们在RAIF-Challenge 2017 AI锦标赛的“银行中的AI”提名中名列第一,



显然,主要是从不同寻常的角度解决问题,并使用在其他情况下通常使用的方法。

尽管用户的大量外流很可能是服务的自然灾害。

可以在需要考虑流出的其他任何区域而不是整个银行中注意到这种方法。例如,我们用它来计算自己的资金流-Rostelecom的西伯利亚和圣彼得堡分支机构。

“数据挖掘实验室”公司“搜索门户” Sputnik“

Source: https://habr.com/ru/post/zh-CN444694/


All Articles