赞
踩
营销增益模型是一种非常实用的数据科学技术,可以帮助商家提高营销效率和收益
营销增益模型(Uplift Model)是一种用于预测营销干预对用户行为或状态的因果效应的模型。它可以帮助商家识别那些对营销活动最敏感的用户群体,从而实现精准营销,避免浪费资源和干扰用户
传统的营销模型通常只关注用户的响应率(Response Rate),即用户在接受营销干预后是否会产生预期的行为(如购买、点击等)。然而,这种方法忽略了用户在没有营销干预时的自然行为(如自发购买、自然流失等),从而无法区分出真正受到营销影响的用户和本来就会产生行为的用户。假设这样的一个场景:某电商平台想要通过发放优惠券来提高用户的购买率,他可能会选择那些购买率最高的用户进行投放。然而,这样做可能会导致以下问题:
因此,传统的营销模型可能会误导商家做出错误的决策,浪费资源和机会,降低营销效果。
而增益模型则可以解决这个问题,它不仅考虑了用户在接受营销干预后的行为,还考虑了用户在没有接受营销干预时的行为,从而计算出营销干预带来的增量效果(Incremental Effect),即用户因为营销而产生行为的概率。
通过增益模型,商家可以找出那些对营销活动最敏感的用户群体,即只有在接受营销干预后才会产生行为的用户。这样,商家可以针对这些用户进行精准投放,提高转化率和收益,同时减少资源浪费和用户干扰。
在实际工作中,增益模型可以发挥很多作用,例如:
增益模型的目标是预测个体水平的因果效应,即个体接受营销干预后的行为与不接受营销干预时的行为之间的差异。我们可以用以下符号来表示这个差异:
其中,表示第个个体的因果效应,表示第个个体在接受营销干预后的行为(如购买、点击等),表示第个个体在不接受营销干预时的行为。这里,我们假设和都是二元变量,取值为0或1。
由于我们无法直接计算每个个体的因果效应,我们只能通过统计方法来估计它。一种常用的方法是计算条件平均因果效应(Conditional Average Treatment Effect,CATE),即给定一组特征(如年龄、性别、地区等)下,不同个体之间因果效应的平均值。我们可以用以下公式来表示CATE
其中,表示一组特征,表示第个个体的特征,表示期望值。这个公式的意思是,在给定一组特征的条件下,不同个体之间因果效应的平均值等于他们在接受营销干预后的行为与不接受营销干预时的行为之差的期望值。
增益模型的建模方法主要有以下几种:
其中,是一个回归函数,可以是线性回归、逻辑回归、决策树、神经网络等任何机器学习算法。这种方法的优点是简单易实现,缺点是可能存在偏差和方差较大的问题。
其中,和都是分类函数,可以是逻辑回归、支持向量机、随机森林等任何机器学习算法。然后,用两个模型的预测结果相减得到因果效应的估计值,即
这种方法的优点是可以利用已有的分类算法,缺点是需要两个模型同时训练和预测,且可能存在误差累积的问题。
其中,表示第类用户(),表示概率值,是一个多分类函数,可以是多项式逻辑回归、多类支持向量机、多输出决策树等任何机器学习算法。最后,用受益用户的概率减去损失用户的概率得到因果效应的估计值,即
这种方法的优点是可以直接识别出目标用户群体,缺点是需要较大的样本量和较高的数据质量
增益模型python实现思路参考:
from sklearn.model_selection import train_test_split import xgboost as xgb # 数据集划分,按照7:3比例划分数据集 X = df_model.drop(['target', 'target_class'], axis=1) y = df_model.target_class X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42, stratify=df_model['treatment']) # 使用XGB模型训练数据集 result = pd.DataFrame(X_test).copy() uplift_model = xgb.XGBClassifier().fit(X_train.drop('treatment', axis=1), y_train) uplift_proba = uplift_model.predict_proba(X_test.drop('treatment', axis=1)) result['proba_CN'] = uplift_proba[:, 0] result['proba_CR'] = uplift_proba[:, 1] result['proba_TN'] = uplift_proba[:, 2] result['proba_TR'] = uplift_proba[:, 3] #计算增益分数 result['uplift_score'] = result.eval('、 proba_CN/(proba_CN+proba_CR) 、 + proba_TR/(proba_TN+proba_TR) 、 - proba_TN/(proba_TN+proba_TR) 、 - proba_CR/(proba_CN+proba_CR)')
营销增益模型的评价指标,关于预测准确与否评价主要为:
以计算MAE为例,python实现参考:
# 导入numpy库 import numpy as np # 定义一个函数来计算MAE def mean_absolute_error(y_true, y_pred): # 将输入转换为numpy数组 y_true = np.array(y_true) y_pred = np.array(y_pred) # 计算绝对误差 abs_error = np.abs(y_true - y_pred) # 计算平均值 mae = np.mean(abs_error) # 返回结果 return mae ############################ y_true = [0.1, 0.2, 0.6, 0.9] # 真实值 y_pred = [0.1, 0.25, 0.7, 0.9] # 预测值 mae = mean_absolute_error(y_true, y_pred) # 调用函数 print(mae) # 打印结果
关于模型的预测的增益效果评价指标主要为:
增益曲线python实现思路参考:
# 导入matplotlib库 import matplotlib.pyplot as plt import pandas as pd import numpy as np # 定义一个函数来绘制增益曲线 def uplift_curve(y_true, y_pred): # 将输入转换为pandas数据框 df = pd.DataFrame({'y_true': y_true, 'y_pred': y_pred}) # 按照预测值降序排序 df = df.sort_values(by='y_pred', ascending=False) # 计算累积人数和累积转化人数 df['cumulative_size'] = np.arange(start=1, stop=df.shape[0] + 1) df['cumulative_size'] = df['cumulative_size'] / df.shape[0] df['cumulative_target'] = np.cumsum(df['y_true']) df['cumulative_target'] = df['cumulative_target'] / df['y_true'].sum() # 绘制增益曲线 plt.figure(figsize=(10, 10)) plt.plot([0, 1], [0, 1], label='Random Model') plt.plot(df['cumulative_size'], df['cumulative_target'], label='Uplift Model') plt.xlabel('Proportion of customers targeted') plt.ylabel('Cumulative gain') plt.title('Uplift Curve') plt.legend() plt.show() ############################ y_true = [0, 1, 0, 1, 0, 1, 0, 1] # 真实值,表示是否购买,1为是,0为否 y_pred = [0.1, 0.8, 0.2, 0.7, 0.3, 0.6, 0.4, 0.5] # 预测值,表示营销增益得分,越高越好 uplift_curve(y_true, y_pred) # 调用函数
Qini系数python实现思路参考:
# 导入pandas库 import pandas as pd # 定义一个函数来计算Qini系数 def qini_coefficient(y_true, y_pred): # 将输入转换为pandas数据框 df = pd.DataFrame({'y_true': y_true, 'y_pred': y_pred}) # 按照预测值降序排序 df = df.sort_values(by='y_pred', ascending=False) # 计算累积人数和累积转化人数 df['cumulative_size'] = np.arange(start=1, stop=df.shape[0] + 1) df['cumulative_size'] = df['cumulative_size'] / len(df) df['cumulative_target'] = np.cumsum(df['y_true']) df['cumulative_target'] = df['cumulative_target'] / df['y_true'].sum() # 计算随机模型和最优模型的累积转化人数 random_target = df['cumulative_size'] * df['y_true'].mean() qini_area = (df['cumulative_target'] - random_target).sum() / df.shape[0] # 计算最优曲线下的面积 perfect_area = (1 - random_target).sum() / df.shape[0] # 计算Qini系数 qini_coef = qini_area / perfect_area # 返回结果 return qini_coef ############################ y_true = [0, 1, 0, 1, 0, 1, 0, 1] # 真实值,表示是否购买,1为是,0为否 y_pred = [0.1, 0.8, 0.2, 0.7, 0.3, 0.6, 0.4, 0.5] # 预测值,表示营销增益得分,越高越好 qini_coef = qini_coefficient(y_true, y_pred) # 调用函数 print(qini_coef) # 打印结果
实际工作中营销增益模型的应用步骤大致如下:
这里拆解业界腾讯公开因果分析应用资料,通过2个成功增益应用场景案例加深读者对Uplift 实际业务应用的理解
本文介绍了营销增益模型的基本概念、原理、评价方法和应用流程,增长业务中的成功应用案例,希望能够帮助读者理解营销增益模型的底层逻辑以及如何应用其帮助企业优化营销策略,提高营销投入产出比。文章不足之处希望可以多多指正,同时希望未来通过归因分析方法解决更多的业务问题,为企业创造价值。
参考资料:
datafun《因果推断在腾讯视频增长业务的应用》
利用Uplift模型识别营销敏感用户提升转化率
【Uplift】评估方法篇
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。