在本文中,我们将探讨CBM系统的基础组件,以及那些真正提升价值生成的更高级功能。
强大CBM系统的基础
CBM系统的三个主要基础组件是:
有了这三个要素,管理者就能对流失情况有一个基本的了解,对数据有一个直观的认识,并且能够将任何发现传达给领导层和其他利益相关者。下面我们将详细阐述这些组件。
ELT:数据获取
提取-加载-转换(简称ELT)是客户基础管理系统的首要且最关键部分。这是向系统提供数据的组件,通常在构建CBM系统时是最先建立的组件。开始时,你通常会与某种数据平台进行交互,其中大部分基础数据操作已经完成(在这种情况下,你技术上只需要执行“加载”和“转换”),但有时你也需要直接从源系统获取并“提取”数据。
无论数据来自何处,都需要将其加载到系统中,并转换成易于输入到你所使用的机器学习模型中的格式。你可能还需要将数据转换成更易于制作仪表板的格式。对于一些仪表板来说,可能还需要预先将大量数据聚合到较小的表中,以提高查询和绘图性能。
很容易看出,如果ELT过程中出现错误,或者输入数据存在错误,这可能会严重影响CBM系统。由于系统中的一切都基于这些输入数据,因此需要格外注意确保数据的准确性和与业务规则的一致性。
ELT过程失败,导致流失预测和仪表板出现错误。监控进入系统的数据一致性的一种方法是记录每个变量的分布情况,并随时间跟踪这种分布。如果分布发生根本性变化,你可以迅速检查是ELT过程中的逻辑出了问题,还是上游的数据问题导致的。
基础流失建模
了解客户基础的第二个关键组件是识别哪些客户、何时以及为何流失(对于非从业者来说,“流失”指的是客户停止使用产品或服务的时刻)。一个好的流失预测算法可以让企业将保留努力集中在最重要的地方,并帮助识别那些流失风险较高的客户。
早在20世纪90年代中期,电信公司、银行、保险公司和公用事业公司就开始对客户基础使用流失建模,开发基础流失模型相对简单直接。
首要任务是确定流失的定义。在很多情况下,这非常简单,例如客户取消电信合同。然而,在其他行业,如电子商务,在确定流失定义时需要一些判断。例如,可以定义如果客户在最后一次购物后200天内没有再次购物,则该客户已经流失。
定义了流失之后,我们需要为模型选择一个结果周期,即我们想要观察流失的时间框架。例如,如果我们想要创建一个结果周期为10周的流失模型,那么该模型将预测客户在评分时间与接下来10周内的任何时间点流失的可能性。或者,我们可以有一个为期一年的结果周期,这将给我们一个模型,预测客户在未来一年内的任何时间流失的可能性。
确定了结果周期和流失定义后,分析师需要将数据转换成一种格式,使机器学习模型易于训练,并且之后也易于进行推断。
模型训练完成后,对活跃客户基础进行预测,有多个不同的用例。例如,我们可以使用流失分数来识别流失风险较高的客户,并针对他们开展特定的保留活动或定价促销。我们还可以根据客户的流失分数为不同客户群体创建差异化的营销材料。或者,我们可以将流失分数与客户所拥有的产品相结合,开发客户终身价值模型,进而用于优先排序各种客户活动。显然,与忽视CBM这一基本组件的竞争对手相比,适当的流失模型可以为公司在管理客户基础方面提供战略优势。
仪表板
在2000年代和2010年代初,商业智能(BI)和分析以及仪表板曾风靡一时,但在机器学习算法成熟之前,我们的注意力转向了预测,而非描述性和通常是回溯性的数据。然而,对于CBM工具来说,仪表板仍然是关键组件。它们使管理者能够与领导层进行有效沟通,特别是在与价格优化等高级功能一起使用时。可视化特定定价策略的潜在影响对于决策制定来说非常有力。
与任何数据科学项目一样,你可能在构建系统上投入数千小时,但往往,仪表板是管理者和高管的主要交互点。如果仪表板不够直观或性能不佳,它可能会掩盖你构建的其他所有内容的价值。
此外,仪表板提供了一种对数据执行视觉合理性检查的方法,有时还能揭示未开发的机会。特别是在系统实施后的早期阶段,以及可能在所有控制程序投入生产之前,对所有变量和模型性能保持视觉检查可以作为一个良好的安全网。
有了主要的基础组件,我们可以探索那些有潜力提供更大价值和见解的高级功能。通过增强这些高级组件,我们可以进一步提升战略优势。
虽然基本的客户行为模型(Customer Behavior Model,CBM)系统能够提供一些实质性的益处和见解,但要充分发挥CBM系统的价值,还需要更高级的组件。下面我们将讨论几个最重要的组件,包括具有多个时间范围的流失模型、价格优化、基于模拟的预测以及竞争对手定价数据的加入。
多时间范围流失模型
有时从不同角度看待流失是有意义的,其中一个角度就是模型所允许的时间范围——或结果周期。对于某些业务场景,使用结果周期较短的模型是有意义的,而对于其他场景,使用一年结果周期的模型可能更合适。
为了更好地解释这个概念,假设你构建了一个10周结果周期的流失模型。这个模型可以用来预测给定客户在10周内是否会流失。然而,现在假设你已经隔离了一个你知道会导致流失的特定事件,并且你有一个也许只有3周的短暂窗口来实施任何预防措施。在这种情况下,训练一个以该特定事件为条件、时间范围为3周的流失模型是有意义的。这样,你就可以将任何保留活动集中在流失风险最高的客户上。
这种差异化的方法允许更战略性地分配资源,将高影响力的干预措施集中在最需要的地方。通过根据具体情况调整模型的时间范围,公司可以优化其保留工作,最终提高客户终身价值并减少不必要的流失。
价格优化与客户价格弹性
价格在许多情况下是策略执行的最后一部分,而赢家是那些能够有效将策略转化为有效价格体系的人。这正是具有价格优化的CBM系统所允许公司做到的。虽然价格优化这个话题很容易就值得单独写一篇文章,但我们在这里尝试简要总结其关键思想。
首先,需要获取历史价格数据,最好是不同时间点的价格水平以及其他解释变量。这允许你开发价格弹性的估计值。一旦有了这个,你就可以开发不同价格点的预期流失值,并用它来预测预期收入。从客户层面汇总到产品层面,可以得到产品的预期价值和预期流失率,进而可以找到每种产品的最优价格。在更复杂的情况下,每种产品还可以有多个群体,每个群体都有其最优价格点。
例如,假设一家公司有两种不同的产品,产品A和产品B。对于产品A,公司希望扩大其用户基础,并且只愿意接受一定量的流失,同时还要在市场上保持竞争力。然而,对于产品B,公司愿意接受一定量的流失,以换取相对于预期收入的最优价格。CBM系统允许实施这样的策略,并为领导层提供该策略未来预期收入的预测。
基于模拟的预测
基于模拟的预测提供了一种比仅基于预期值进行点估计更稳健的生成预测估计的方法。通过使用蒙特卡洛模拟等方法,我们能够生成结果的概率密度,从而为决策者提供预测范围。这比仅提供点估计更有力,因为我们能够量化不确定性。
为了理解如何使用基于模拟的预测,我们可以通过一个例子来说明。假设我们有10个客户,每个客户都有给定的流失概率和年预期收入。(在现实中,我们通常有一个多元流失函数来预测每个客户的流失情况。)为了简化,假设如果客户流失,我们的收入就为零,如果他们不流失,我们就保留所有收入。我们可以使用Python来使这个例子更具体。
import random
# Set the seed for reproducibility
random.seed(42)
# Generate the lists again with the required changes
churn_rates = [round(random.uniform(0.4, 0.8), 2) for _ in range(10)]
yearly_revenue = [random.randint(1000, 4000) for _ in range(10)]
churn_rates, yearly_revenue
这为我们提供了以下关于客户流失率和年收入的值:
churn_rates: [0.66, 0.41, 0.51, 0.49, 0.69, 0.67, 0.76, 0.43, 0.57, 0.41]
yearly_revenue: [1895, 1952, 3069, 3465, 1108, 3298, 1814, 3932, 3661, 3872]
使用上面的数字,并假设客户流失事件是独立的,我们可以很容易地计算出平均流失率以及预期总收入。
# Calculate the total expected revenue using (1 - churn_rate) * yearly_revenue for each customer
adjusted_revenue = [(1 - churn_rate) * revenue for churn_rate, revenue in zip(churn_rates, yearly_revenue)]
total_adjusted_revenue = sum(adjusted_revenue)
# Recalculate the expected average churn rate based on the original data
average_churn_rate = sum(churn_rates) / len(churn_rates)
average_churn_rate, total_adjusted_revenue
以下是平均流失率和调整后的总收入的数据:
average_churn_rate:0.56,
total_adjusted_revenue: 13034.07
因此,我们可以预计大约有56%的客户会流失,总收入为13034,但这并不能告诉我们可能遇到的变动情况。为了更深入地了解我们可能遇到的结果范围,我们转向蒙特卡洛模拟。我们不是取流失率和总收入的期望值,而是让这种情况重复进行10000次(这里选择10000次是任意的;应选择足够的次数以获得所需的结果分布粒度),并且在每次模拟中,客户要么以流失率(churn_rate)的概率流失,要么以1-流失率(1-churn_rate)的概率留下。
import pandas as pd
simulations = pd.DataFrame({
'churn_rate': churn_rates * 10000,
'yearly_revenue': yearly_revenue * 10000
})
# Add a column with random numbers between 0 and 1
simulations['random_number'] = (
[random.uniform(0, 1) for _ in range(len(simulations))])
# Add a column 'not_churned' and set it to 1, then update it to 0 based on the random number
simulations['not_churned'] = (
simulations['random_number'] >= simulations['churn_rate']).astype(int)
# Add an 'iteration' column starting from 1 to 10000
simulations['iteration'] = (simulations.index // 10) + 1
这将生成如下表所示的表格:
我们可以使用以下代码来总结我们的结果:
# Group by 'iteration' and calculate the required values
summary = simulations.groupby('iteration').agg(
total_revenue=('yearly_revenue',
lambda x: sum(x * simulations.loc[x.index, 'not_churned'])),
total_churners=('not_churned', lambda x: 10 - sum(x))
).reset_index()
最后,使用plotly进行绘图,结果如下:
上述图表所呈现的信息远比我们最初得到的两个点估计值(0.56和13034)要丰富得多。现在,我们对可能遇到的结果有了更深入的了解,并且可以就我们可接受的流失率和收入水平进行有根据的讨论。
以之前的例子为例,我们可能会说,我们只愿意接受8次或更多流失事件发生概率不超过0.1%的情况。通过利用单个客户的价格弹性以及基于模拟的预测,我们可以调整预期的客户流失率,以精确实现这一目标。这种程度的客户基础控制只能通过先进的客户基础管理(Customer Base Management,CBM)系统来实现。
结论
在本文中,我们讨论了客户基础管理系统的主要组成部分以及使其极具价值的一些高级功能。就我个人而言,在构建了几个这样的系统之后,我认为将价格优化算法(运行在广泛的内部和外部数据集上)与强大的仪表板形式可视化界面相结合,是管理客户最有效的工具之一。这种工具组合使管理人员和高层领导能够真正掌控客户管理过程,并理解其行动的战略后果。