您的位置:

深入理解uplift模型

随着互联网和电商的快速发展,如何高效地进行市场推广成为了各大企业和商家面临的难题。传统的广告运营模式广泛使用的CTR(click-through rate)模型,只能描述被推送广告的人点击与否这一现象,但无法评估广告带来的真正效果。因此,诞生了一种新的推广模型——uplift模型。相比于CTR模型,uplift模型更加准确真实反映了一项广告的效果,成为广告投放中的重要算法。

一、uplift模型定义

uplift模型又称为偏移模型或者训练/反训练模型,是针对广告推广构建的一种模型。定义为uplift是指,在没有广告推荐的情况下的转换率和有广告推荐的情况下的转化率之间的差异。uplift模型可以在一个时间窗口中,基于历史数据和控制实验设计来估计推荐的广告对于用户的转化率的贡献,有效的避免了传统CTR模型中会忽略抽样偏差、干扰因素和恶意交互的问题。

二、uplift模型的优势

相比于传统的CTR模型,在广告推广中,uplift模型具有更多的优势:

1、离线训练:uplift模型是一种离线训练算法,训练好后,不仅可以上线实时推广,而且计算速度也更加快捷、迅速。

2、效果更加准确:uplift模型采用了A/B测试的方式进行预测,会忽略掉用户自然属性对于广告影响的干扰,使得推广效果预测更加准确真实。

3、指导广告调整:uplift模型能够明确地显示广告在群体中对于转化率的增益,能够为广告提供调整的指导。

三、uplift模型的建模过程

uplift模型的建模过程是一个结合传统的分类模型和控制实验的过程。建模分为三个步骤:

1、确定研究所需要控制变量集合。

2、进行实验制定,将实验集合分为控制组和干预组。

3、使用Logistic Regression等传统分类模型对控制组和实验组进行转化率预测,最终通过对比两组对照实验,计算干预组相对控制组的转化率差异,即为uplift值。

四、uplift模型在营销活动中的应用

uplift模型广泛应用于各种广告营销场景中,具体应用场景包括:

1、定向性广告投放,广告主可以根据各种关键词或者人口学特征定向投放广告,uplift模型可以更加准确计算不同定向组的广告效果,以便广告方做出最优的推广决策。

2、多元化营销活动投放,uplift模型可以在不同平台上建立模型,进行同系列产品和服务的广告投放,以确定最佳的投放策略。

3、用户细分,根据uplift模型,对用户进行分群,并根据不同类别用户的转化率差异性进行不同的投放策略和营销活动。

五、uplift模型的代码实现

# 导入相关库
import pandas as pd
import numpy as np
from sklearn.linear_model import LogisticRegression
from sklearn.utils import resample
from model_evaluation import qini_binary, uplift_at_k_binary
from sklearn.model_selection import train_test_split

# 导入测试数据
df_data_1 = pd.read_csv('test_data.csv')

# A/B实验分组
df_data_1['group'] = np.where(df_data_1['segment_type'] == 'testgroup', 1, 0)
df_data_1['conversion'] = np.where(df_data_1['conversion'] == True, 1, 0)

# 样本抽样
data_minority = df_data_1[df_data_1.group == 1]
data_majority = df_data_1[df_data_1.group == 0]
upsample_ratio = len(data_majority) / len(data_minority)
data_minority_upsampled = resample(data_minority, replace=True, n_samples=int(len(data_minority)*upsample_ratio))
df_data_2 = pd.concat([data_majority, data_minority_upsampled])

# 数据集切分
train, test = train_test_split(df_data_2, test_size=0.3)

# 建立并训练模型
cls = LogisticRegression(solver='liblinear')
cls.fit(train[['f1', 'f2', 'f3']], train['conversion'])
prob = cls.predict_proba(test[['f1', 'f2', 'f3']])[:, 1]
uplift = prob - cls.predict_proba(test[['f1', 'f2', 'f3']], 
control=True)[:, 1]

# 模型评估
print(uplift_at_k_binary(test['conversion'], uplift, treatment=test['group'], strategy='overall'))
print(qini_binary(test['conversion'], uplift, test['group']))

六、总结

uplift模型作为一种新的推广模型,准确反映广告推广的真实效果,具有更多的优势。同时,它有着更加贴近实际的应用场景,在多个营销领域可以发挥重大作用,如何快速、准确地基于历史数据、控制实验和模型算法构建uplift模型,成为企业营销策略中一个重要的研究方向。