营销短信敏感模型开发及应用实践

09 Aug 2019

在电商营销场景下,短信做为非常有效的沟通渠道,被应用得非常频繁,然而在用户基数膨胀到一定程度后,短信的成本也会随之增加,从节省成本的角度出发,一个强烈的需求就是对短信不敏感的用户减少短信的发送次数,甚至不发短信。如何找出对短信不敏感的用户呢?本文将从数据需求分析,数据探索到模型建立,以及数据验证全过程进行完整的介绍,包括过程中遇到的问题,思考和解决思路。

数据需求分析

首先,明确数据挖掘的目标:寻找短信不敏感的用户,那么如何定义“短信不敏感”,或者“如何衡量短信敏感” ?凭借经验,可以认为用户在收到短信后的回访行为,是可以帮助判断用户对短信是否敏感。顺着这个想法,先提出两个问题:

为了通过数据回答这两个问题,先做了三个前提/假设:

用一张图说明要分析的问题和前提假设:

短信营销范围分析示意图

分析思路:

根据前面的假设,营销效果持续不到第三天,于是分析的目标样本可定义为在某一天(T)收到过营销短信,前两天(T-1,T-2)及后一天(T+1)都没有收到营销短信的用户。

上面的分析思路中,第三点的前提假设非常重要,所以先看看样本用户T-1和T-2两天的回访数据(一天内首次访问时间点的人数统计分布):

无短信营销下同一批用户连续两天访问数据对比

在没有营销短信的影响下,同一批用户的连续两天访问情况基本一致,也证实了第三点的前提假设,再看看T-1和T及T-1和T+1的回访数据对比:

T-1和T两天回访对比

T-1和T+1两天回访对比

从上面的图可以看出,营销短信对回访提升是有效果的(短信发送时间主要集中在早上10点和晚上8点的前10分钟),并且在发送短信后的短时间内效果明显,到第二天就不太明显了。对比其他多天的数据,结果也是类似,这也同时证实了前提假设的第一点。

建立模型

既然回访可以有效衡量营销短信的效果,那么对收到短信的用户是否有回访行为,可建立二分类模型,对短时间回访的用户标记为1,认为对短信敏感,无回访的用户标记为0,认为对短信不敏感:

Model Function

u表示用户,s表示用户收到的短信,c表示上下文环境,y表示用户是否回访。

分别构建u,s,c三者的特征:

选取一段时间内收到短信的用户,以及他们的回访数据,构建训练样本,结合上面的三类特征,考虑到多个特征之间存在组合关系的可能性,采用了浅层NN模型进行训练。

Model

模型效果验证

模型训练完成后,先通过历史数据进行离线效果的验证,模型的最后一层通过sigmoid作为激活函数,输出[0,1]区间的一个分值,做为模型对每个用户的打分,得分高表示短信收到后回访概率也高,找出得分高的用户和得分低的用户(分别取>0.7分的高分用户和<0.1分的低分用户),比较他们收到短信前后的回访情况:

高分用户回访趋势图

低分用户回访趋势图

d1~d9为同一批用户前后多天的回访时间分布曲线,test_day是收到短信当天的回访时间分布曲线,从上图可看出,不管是高分还是低分用户,在收到短信后都有表现出明显的回访行为。

显然,这个不是我们预期的结果,是不是模型哪里出了问题呢?对这个模型进行重新思考,模型预测的是用户是否会回访,所以这套模型其实是一个融合营销短信效果的回访预测模型,那么回访得分高的用户一定是短信敏感的吗?有没有可能他们不论是否收到短信,都会回来呢?

所以先看看这套模型对收到短信的回访概率预测准确性:

回访概率预测

可以看出,模型的预测回访率和实际来访率拟合的不错,所以模型对用户的预测打分,代表用户收到短信后的回访概率。那么若对一批没有收到短信的用户进行打分,打分结果可以认为是假设对他们发送营销短信后的回访概率,再和他们的实际回访率相比,是否就可以看出哪部分用户在收到短信后,回访率会有提升,这部分用户,可认为是短信敏感用户,相反,没有提升效果的那部分用户,则可认为是短信不敏感用户。

未收到短信用户回访率比较

对比可以看出,得分超过0.9分的用户,不论是否收到短信,他们的回访率都那么高,也就是短信对他们的回访率提升并不明显,反而是分数中高段和分数偏低段的用户,能体现出营销短信的效果。

所以,初步判断是,得分>0.9分的用户是短信不敏感的用户。

根据上面的离线分析结果,将用户按预测得分拆分为高,中高,中低,低四组用户,分别设置行动组和对照组进行线上实验:

高分组用户行动组和对照组回访

中高分组用户行动组和对照组回访

中低分组用户行动组和对照组回访

低分组用户行动组和对照组回访

从实验的结果看,高分组用户行动组和对照组回访基本一致,说明营销短信对高分组用户确实没有效果。

总结与思考

在面对实际业务场景时,有时无法直接建立一套end2end的模型,比如这里的模型,其实对用户回访的概率影响较大的并不一定是短信,有可能是用户自身有强烈的购买访问意愿,所以不能从模型的预测结果中直接找出对短信敏感还是不敏感的用户。但仍然可以利用这套模型,配合数据分析的方法,间接找出最终所需要的数据。

另外,在基于用户进行建模预测的场景下,由于模型强依赖于用户的行为数据,因此往往需要对用户区分对待,简单可分为活跃用户和不活跃用户,活跃用户的定义,可以是周活,月活,季度活跃甚至年度活跃,视不同的模型场景而不同。比如这次就是先对月活用户进行的预测,至于不活跃用户,需要是采取另外一套方式来分析和挖掘了。