其他

预测性客户分析之客户终生价值(Part 3)

2018-03-11 数据猿

【数据猿导读】本篇将会介绍如何用线性回归模型,基于老客户历史数据与客户生命周期的关联关系,建立线性回归模型,从而预测新客户的终生价值,进而开展针对性的活动


作者 | TalkingData

官网 | www.datayuan.cn

微信公众号ID | datayuancn


在第二部分,文章介绍了如何用预测分析去获取客户,但由于商业的黄金定律是“从现有客户获取价值的成本比新客户要低的多”,所以就需要了解现有客户的客户终生价值(Customer Lifetime Value,CLV),从而最大化地从现有客户获取足够的收入。


本篇将会介绍如何用线性回归模型,基于老客户历史数据与客户生命周期的关联关系,建立线性回归模型,从而预测新客户的终生价值,进而开展针对性的活动。


客户终生价值


在商业领域所有人都认可一句话:


“我们80%的收入来自于20%的客户。卖给现有客户的成本比寻找一个新的客户低10倍。”


不同的客户为一个企业产生不同水平的销售收入。我们需要识别和培育一些顶级客户从而保证稳定收入。但主要问题是:


过去的收入如何预示未来的收入?


我们过去最好的客户在未来还会是我们最好的客户吗?


这是我们手中的结果吗?


我们想要识别能够给我们带来重要业务的客户并且培育他们,同时确保他们对我们满意。


我们需要一个计算客户终生价值的方法。回到用例,客户刚刚从我们这里购买了一台笔记本电脑。那么,我们期望从他那里得到什么样的未来收入?他刚刚购买了一个笔记本电脑,因此他在接下来的三年可能不会再买,但是等一下,他可能每年都会不定期购买软件版本升级。他可能会根据初始的购买情况,复购比如耗材等等。


当他的孩子们到中学或者高中时,可能需要一个笔记本电脑。当他们进入大学可能需要购买更多的东西。我们需要了解他们的人口统计学和家庭信息才能知道这些生活事件什么时候发生。


一般来说,他可能在感恩节或者圣诞节给他人购买礼物,会送一台笔记本电脑或者其他的,这些就是潜在的年度购买。如果我们能够识别这些事件,我们就能够通过这些重复性购买需求和年度需求估计出他未来总的商业价值。


构建客户周期分类


最早期的基本客户管理流程是,根据他们过去的业务和观察到的未来业务情况,将客户归入不同分类当中,比如青铜客户和黄金客户。然后帮助业务针对性瞄准这些客户。当一个新的或者潜在的客户被识别出来,在业务周期中尽早对其进行分类可帮助企业将更多资源集中在具有重大未来价值的客户上。


根据一个客户(称为X)的人口统计特征,他可能有资格成为黄金客户,因为他会为他和他的家庭购买高端电子产品。另一个客户(称为Y)则可能更关注预算,未来五年可能不会在电子产品上花费太多,因此他将成为一名铜牌客户。鉴于此,我们希望将营销资源专注于X,以产生最大回报。这个用例的目标是建立一个预测模型,将新客户分类为白银、黄金或白金。


鉴于我们专注于新客户,数据集应该是容易从新客户获得的数据集。因此这个数据集就是客户的人口统计学信息,其次是他们的第一次购买信息,如产品、金额、时间、退货、保修等等。训练数据还会有一个客户分类,用于说明老客户属于哪个类别。这是一个经典的分类问题,任何以前的相关算法都可以完成这项工作,如随机森林。



我们将建立一个模型,根据客户属性以及首次购买交易数据预测客户分类,并为每个客户提供他的类别。行动计划是,当客户进行新购买时,我们将使用此算法将他们分类为一个或多个类别。然后,这些分类可以被我们的营销或客户管理团队用来进行差异化的处理,以便在随后的访问中产生更多收入。


我们的客户服务团队还可以借助这个分类来提供高级支持。了解我们最好的收入来源可以帮助培育客户并从客户那里获取更多的收入。


发现响应模式


当客户从我们这里购买了服务或者商品,然后随机切换到另一个企业购买同样的服务或者商品,这对我们是一种伤害。我们希望客户能从我们这里购买更多的产品和服务。因此,我们可以通过优惠券、特殊优惠、促销、套餐、折扣等各种方式与客户保持联系。


所有客户是否都以同样的方式回应这些优惠?不。很有可能X会对圣诞节期间获得的优惠券更感兴趣,以便他为家人购买礼物。


了解客户如何回应我们的优惠有助于将营销资金锁定在最有可能回应的客户身上。这个用例的目标是确定我们的客户响应优惠的不同模式。我们将客户分为不同聚类。然后,确定这些聚类或团体共有的模式,制定营销计划,从而使得每一个集群或者团体都产生更好的收入。用于此用例的数据将是客户人口统计数据以及客户的购买历史记录。


它还包括所提供的优惠的数据,例如提供的优惠活动、优惠针对的产品、提供的折扣、提供优惠的渠道、客户是否检查了优惠以及是否真的使用该优惠?所使用的算法将是K-Means聚类或该算法的任何变种。我们将使用人口统计数据以及优惠相关的数据来构建聚类和群组,然后将其用于我们的分析。



我们会使用客户人口统计数据来建立客户群组。 一旦确定了群组,我们的营销部门可以进一步分析各个群组,了解他们的响应模式以及他们之所以区别于其他分组的因素,它可能是人口统计学因素、购买的产品的因素、季节性因素或其他。 我们对客户行为了解越多,就越能设计相应的产品和优惠,并从客户那里获得更多收入。


预测客户终生价值


客户终生价值是一种货币价值,它表示客户在与企业关系的整个生命周期内提供给企业的收入金额。如果我们提前知道X将在未来五年内带来1万美元的收入,而Y只能产生500美元的收入,那么我们可以在X上花更多的营销资金并收获他的全部潜在预算。使用客户终生价值标记每个客户有助于业务专注于那些能够在未来带来最高收入的客户。


计算客户终生价值时有几种计算方法,但我们只能对与企业有重大购买历史的客户可靠地计算CLV。 但是我们如何才能为最近的客户进行计算呢? 预测分析就在这里提供帮助。这个用例的目标是建立一个回归模型,该模型可以根据他或她最近的购买模式来预测新客户或最近客户的客户终生价值。


随着可用数据越来越多,它将帮助我们更准确地计算CLV。 客户终身价值取决于最近的能够显示购买频率的数据。 因此,我们将创建一个数据集,提供所有老客户的前六个月每个月的购买货币价值, 目标属性是整个生命周期中客户的实际CLV。


根据我们的业务和我们所拥有的历史数据,CLV可以在有限的时间内进行衡量,比如两年左右。 这里使用的算法将是线性回归。 前六个月的数据将成为预测变量,CLV是目标变量。 该分析将提供一个可用于为新客户计算CLV的公式。 通过使用这些数据的子集,我们实际上可以生成这个方程的不同部分,比如只有第一个月,然后是前两个月等。



随着客户生命周期的延长,更多的数据意味着更高的准确性。一旦在我们的系统中捕获到新客户,我们根据第一个月的数据计算CLV,随着越来越多的月份,我们可以通过越来越多的数据来完善CLV。我们的销售人员、服务人员和营销人员可以使用CLV值来识别拥有高CLV的客户,并为他们提供差异化的服务和优惠。


总而言之,本用例显示了如何根据相似的老客户的CLV预测新客户的CLV。


预测CLV的用例


我们将看到如何根据现有客户数据模型来预测新客户的客户终生价值。


我们有这些客户产生的前六个月收入,第一个月到第六个月,他们产生的收入以及客户终生价值。这或许是他们3年产生的总收入,这可以根据客户留在我们业务中的时间来确定。 这即是我们要使用的数据,我们将用它来构建一个线性回归模型,然后用它来预测客户终生价值。


我们首先导入一组Python、Pandas和Skylearn库,然后加载history.csv文件。查看文件以确保所有的数据元素都已被加载为整数,因为这些元素要求它们是整数。在顶部过滤器卡上做一个表头,以确保它们是否都已正确加载。然后,我们进行前六个月的数据和CLV之间的相关性分析。



from pandas import Series, DataFrame
import pandas as pd
import numpy as np
import os
import matplotlib.pylab as plt
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
import sklearn.metrics
raw_data = pd.read_csv(“history.csv”)
raw_data.dtypes


CUST_ID int64
MONTH_1 int64
MONTH_2 int64
MONTH_3 int64
MONTH_4 int64
MONTH_5 int64
MONTH_6 int64
CLV int64
dtype: object


raw_data.head()



进行相关性分析


cleaned_data = raw_data.drop(“CUST_ID”,axis=1)

cleaned_data .corr()[‘CLV’]



我们丢弃掉客户ID列,因为我们的模型构建不需要它。可以看出,相关性分析在不同月份显示出非常好的相关性,我们继续前进并建立一个模型。我们首先通过使用Skylearn类库中可提供的训练测试切分能力将数据切分为90:10的比例。我们打印出大小以确保一切看起来都不错。


predictors = cleaned_data.drop(“CLV”,axis=1)
targets = cleaned_data.CLV
pred_train, pred_test, tar_train, tar_test = train_test_split(predictors, targets, test_size=.1)
print( “Predictor — Training : “, pred_train.shape, “Predictor — Testing : “, pred_test.shape)


Predictor - Training : (90, 6) Predictor - Testing : (10, 6)


然后,我们建立一个模型,从线性回归模型开始,通过拟合建立一个模型,打印系数和截距。这给了我们实际的方程,即线性回归方程。然后我们可以利用测试数据对预测进行测试。紧接着我们看看回归模型的自动评分,它告诉我们如何创建模型列表。这个结果的准确率达到了91%,非常赞!


#Build model on training data

model = LinearRegression()

model.fit(pred_train,tar_train)

print(“Coefficients: ”, model.coef_)

print(“Intercept:”, model.intercept_)

#Test on testing data

predictions = model.predict(pred_test)

predictions

sklearn.metrics.r2_score(tar_test, predictions)

Coefficients: 


[ 34.59195048  11.53796271  15.17878598  11.72051702   8.60555913
  5.44443443]
Intercept: -199.535985333 


Out[7]:


0.91592106093124581


它显示了91%的准确度,这是预测CLV的一个极好的模型。


现在我如何预测新客户? 假设有一位与我们在一起3个月的新客户。我们拿出他的前三个月的收入,基于它建立所有价值的数组。我们有前3个月的价值,接下来的3个月将是零, 我们用它来打印CLV。


new_data = np.array([100,0,50,0,0,0]).reshape(1, -1)
new_pred=model.predict(new_data)
print(“The CLV for the new customer is : $”,new_pred[0])


The CLV for the new customer is : $ 4018.59836236


这就是我们如何为CLV建立一个线性回归模型,以及用它对我们的新用户进行CLV的预测。


作者:Ryan Aminollahi

原文:https://towardsdatascience.com/predictive-customer-analytics-part-iii-aeb996beafba

译者:TalkingData研发副总裁 闫志涛



金猿榜往期的获奖名单,将会在峰会现场隆重发布,期待我们的见面👇



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存