数据驱动分析实践七 - 市场响应模型

数据驱动分析实践七

市场响应模型

    通过使用前面文章所建立的模型,我们可以进行客户分段、预测LTV等。我们也知道了我们的销量的大体情况。但是我们该如何使我们的销量增长呢?如果我们今天打折,我们期望的交易增长会有多少?
    客户分段和A/B测试可以使我们尝试多个不同策略来产生销售增长。这是Growth Hacking的必要组件之一。你需要有想法并进行多次实验来挖掘增长机会。

    把客户分位控制组(control group)和测试组(test group)可帮助我们计算增长的增益。请看下例:
在这里插入图片描述
上图中,目标组被分成3个组以回答下面的问题:

  • 给一点赠与会增加转化吗
  • 如果是的化,那种方式更好?打折或者买一送一。

    假如结果是具备统计显著性的。打折看上去最好,因为它比不打折增加了3%的转化率,且比买一送一增加了1%的转化率。

    当然这是世界的情况比这个要复杂很多。很可能一些优惠策略只对特定的群体有效。所以你可能需要对多种客户群体建立组合优惠策略。进一步说,转化率并不是你唯一需要考虑的因素,通常你也需要考虑成本并做出权衡选择。一般来说,这两者是负相关的。

    现在,通过这个实验我们知道了哪一种优惠方法会获得更大的转化率。但是如何预测这一点呢?如果我们可以预测优惠政策的效果,我们就可以最大化收益且预知成本。
市场响应模型帮助我们对此类问题建立框架,通常有多种方法来建立此模型。我们可以将其分成两组:

  • 如果你没有控制组,那么你就不能计算增长。在这种情况下,一般采用回归模型。
  • 如果你有控制组,你可以建立一个针对群体和个体级别的响应模型。
from datetime import datetime, timedelta,date
import pandas as pd
%matplotlib inline
from sklearn.metrics import classification_report,confusion_matrix
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
from sklearn.cluster import KMeans

import chart_studio.plotly as py
import plotly.offline as pyoff
import plotly.graph_objs as go

import sklearn
import xgboost as xgb
from sklearn.model_selection import KFold, cross_val_score, train_test_split

#initate plotly 
pyoff.init_notebook_mode()

#function for ordering cluster numbers for given criteria
def order_cluster(cluster_field_name, target_field_name,df,ascending):
    new_cluster_field_name = 'new_' + cluster_field_name
    df_new = df.groupby(cluster_field_name)[target_field_name].mean().reset_index()
    df_new = df_new.sort_values(by=target_field_name,ascending=ascending).reset_index(drop=True)
    df_new['index'] = df_new.index
    df_final = pd.merge(df,df_new[[cluster_field_name,'index']], on=cluster_field_name)
    df_final = df_final.drop([cluster_field_name],axis=1)
    df_final = df_final.rename(columns={
   "index":cluster_field_name})
    return df_final
 #import the data
df_data = pd.read_csv('response_data.csv')

#print first 10 rows
df_data.head(10)

在这里插入图片描述
数据定义如下:

  • recency: 上次购买到现在的月数
  • history: 历史购买价值
  • used_discount/used_bogo:客户是否使用过折扣或者买一送一
  • zip_code:区域编码,可以是Surburban/Rural/Urban
  • s_referal:客户是否是从其他渠道推荐而来
  • channel:用户所使用的渠道
  • offer:给予用户的优惠
    我们要建立一个二分类模型来为所有用户计算转化概率,步骤如下:

建立提升公式

  • 探索式数据分析和特征工程
  • 为转化概率评分
  • 在测试集上观察结果
Uplift 公式

    首先,我们需要构造一个函数来计算我们的提升。为了简化问题,我们假设每一个转化会带来一个订单,且订单价值为25$。

我们将计算三种提升:

  • 转化提升 :测试组的转化率 - 控制组的转化率
  • 订单提升 :转化提升 * 测试组的转化客户的个数
  • 收入提升 :订单提升 * 平均每单价值
def calc_uplift(df):
    #assigning 25$ to the average order value
    avg_order_value = 25
    
    #calculate conversions for each offer type
    base_conv = df[df.offer == 'No Offer']['conversion'].mean()
    disc_conv = df[df.offer == 'Discount']['conversion'].mean()
    bogo_conv = df[df.offer == 'Buy One Get One']['conversion'].mean()
    
    #calculate conversion uplift for discount and bogo
    disc_conv_uplift = disc_conv - base_conv
    bogo_conv_uplift = bogo_conv - base_conv
    
    #calculate order uplift
    disc_order_uplift = disc_conv_up
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值