美文网首页
星巴克项目 Data Scientist Capstone -

星巴克项目 Data Scientist Capstone -

作者: 柳媛Lynn | 来源:发表于2020-06-07 23:23 被阅读0次

    一、数据集

    背景概述

    这个数据集是模拟 Starbucks rewards 移动 app 上,某一种饮品的推送和用户消费数据。
    每隔几天,星巴克会向 app 的用户发送一些推送,这个推送可能是饮品的广告、折扣券或 BOGO(买一送一)。

    顾客收到的推送可能是不同的,一些顾客可能一连几周都收不到任何推送。
    每种推送都有有效期,可以认为顾客在有效期内都可能受到这条推送的影响。
    也有可能顾客购买了商品,但没有收到或者没有看推送。

    数据集中还包含 app 上支付的交易信息,交易信息包括购买时间和购买支付的金额。交易信息还包括该顾客收到的推送种类和数量以及看了该推送的时间。顾客做出了购买行为也会产生一条记录。

    分析的任务是将交易数据、人口统计数据和推送数据结合起来,判断星巴克用户有哪些细分群体,并判断哪一类人群会受到某种推送的影响。

    数据文件和字段

    包含三个数据文件

    • portfolio.json – 包括推送的 id 和每个推送的元数据(持续时间、种类等等)
    • profile.json – 每个顾客的人口统计数据
    • transcript.json – 交易、收到的推送、查看的推送和完成的推送的记录

    1. portfolio.json
    id (string) – 推送的id
    offer_type (string) – 推送的种类,例如 BOGO、打折(discount)、信息(informational)
    difficulty (int) – 满足推送的要求所需的最少花费
    reward (int) – 满足推送的要求后给与的优惠
    duration (int) – 推送持续的时间,单位是天
    channels (字符串列表)

    2. profile.json
    age (int) – 顾客的年龄
    became_member_on (int) – 该顾客第一次注册app的时间
    gender (str) – 顾客的性别(注意除了表示男性的 M 和表示女性的 F 之外,还有表示其他的 O)
    id (str) – 顾客id
    income (float) – 顾客的收入

    3. transcript.json
    event (str) – 记录的描述(比如交易记录、推送已收到、推送已阅)
    person (str) – 顾客id
    time (int) – 单位是小时,测试开始时计时。该数据从时间点 t=0 开始
    value - (dict of strings) – 推送的id 或者交易的数额

    二、问题提出

    1. 星巴克主要有哪些用户群体,每类人群的特点是什么?
    2. 各类人群各自最喜欢的推送是什么?如何最好地使用这些推送来激发顾客消费?

    三、主要方法和过程

    1. 清洗数据

    • offer活动信息数据
    • 用户数据
    • 交易数据

    2. 以每类活动的特征为自变量,活动响应率为因变量,创建回归方程

    • 变量通过相关系数初步筛选
    • 得到解释力高,系数显著,且删除任一一条记录,系数仍稳定的回归关系
    • 通过回归方程系数识别关键活动要素

    3. 用户聚类以及用户对offer的偏好

    • 通过探索数据找到有用的用户特征进行聚类
    • 使用elbow图(x轴为聚类中心个数,y轴为sse)决定最佳聚类数
    • 使用聚类特征线形图和汇总指标数据,查看每类用户特征
    • 通过offer响应率指标来看用户群体对各类offer的偏好

    四、数据探索和分析

    1. 活动信息数据

    • 添加offer索引编号
    • 对channel进行拆分,增加各个渠道的one-hot编码字段
    • 数据总结:
    • 有三种推送类型,10种条件组合(回报、难度、有效时长),4个买一送一活动,4个打折活动,2个营销信息
    • 索引4门槛最高,只通过web和邮件发送; 0和1回报最高,0不通过web发送
    • 三种推送类型中,bogo和discount有最低消费要求,交易记录中有offer完成状态;但informational没有最低消费要求,交易记录中没有完成状态

    2. 用户数据

    • 原始用户表中有2000多个年龄异常(118岁),这部分用户没有收入和性别信息,剔除这部分后,剩余14820个用户id


      原始用户信息表各字段分布.png
    • 根据分布特征将年龄、收入分段, 收入统一除以1000缩小数据量级,分布如下



      清洗后数据分布.png
    • 其中,男性和女性分别占比41%和57%,其余性别为O
    • 中老年年龄组(35到75岁)的人占比合计约73%, 超高龄(75, 100)占10%,年轻人(35以下)占14%
    • 中等收入,即收入水平在45k-75k的人约占一半, 较低收入水平29k-45k约占20%,较高收入水平75k-120k约占30%
    • 2015年-2018年的会员合计占比超过80%
    • 男性用户年龄和收入水平比女性更低,特别的是男性会员在17年以后增加得比女性多

    3. 交易数据

    • 交易数据包括四类event


      交易数据.png
    • 将交易记录表,拆成接收offer、浏览offer、完成offer、交易金额记录四个表
    • 仅折扣和bogo类有完成offer记录,使用join连接offer完成记录和交易记录,保留:收到且看过的、满足最低消费金额、在offer发送后有效期内,以及距离发送时间最近的一次交易
    • informational类offer没有完成记录,直接join交易记录,保留:收到且看过的,在发送后有效期内,距离发送时间最近的一次交易
    • 综合三类offer接收和交易记录,如果一个交易有多类offer的,按回报最高的offer作为该交易匹配的唯一offer
    • 以上清洗逻辑输出两张带标签的表:一张是收到offer记录+offer是否有交易响应,一张是交易记录+交易对应的活动offer


      交易数据清洗输出.png
    • 响应率,使用收到offer记录表


    • 总响应率在37%,最高的8类响应率51%

    • 10种推送,分发量比较均匀,发送次数都在6500次左右,发送人数在5400左右

    • 第4类推送响应率最低,响应人数明显最少,结合offer信息看,可能是因为门槛最高,也可能是因为没有在手机和社交渠道发送

    • 2、3、9响应人数也少,可能也是因为没有在社交渠道发送

    4. 哪些活动的要素较关键?

    • 以informational为基础,创建10个活动针对响应率的回归方程;多次调整特征,使去掉任何一个特征参数将不稳定,或去掉任何一个记录,方程参数仍较稳定。
    • 活动响应率回归.png
    • 系数全部显著,R2接近100%,方程比较具有解释力
    • 信息类推送,预计综合响应率在28%左右,在其他条件不变的情况下,变成bogo或discount类型的推送,响应率预计会增加百分点10个左右
    • 信息类推送是无门槛的,但bogo或discount类型都有门槛,其他条件不变的情况下,difficulty提高一个单位,预计响应率会比信息类低1-2个百分点
    • 社交渠道非常重要,其他条件不变的情况下,推送增加社交渠道,预计响应率可以提升接近20个百分点

    5. 用户细分群体

    • 整理用户交易和活动响应行为+用户属性数据


    • 异常用户数据剔除


    • 最终得到13965个用户,有3400+个用户有交易记录,收到过推送但一次也没有响应过
    • 聚类特征:
      is_male:是否男性
      new_member:是否17年及以后的新会员
      transaction_time_tr_count:总交易次数
      amount_tr_amax:最大交易金额
      is_offer_tr_sum:总offer交易次数
      age:用户年龄
      income:用户收入
    • 选择5作为聚类中心数,因为5之后sse下降趋于平缓,用户特征



      用户标准化特征
      用户原始特征水平
    • 用户细分群体结果:
    • 0类用户,主要是老会员、男性、低收入段用户;本身交易频次高,单均价相对偏低,用户offer交易比例低 --低价值高频老用户,不太需要发送刺激消费类offer,可以注重挖掘其老带新的价值
    • 1类用户,主要是新会员,女性、高收入段用户;本身交易频次低,但单均价和offer交易比例都很高 --高价值低频新用户,需要offer维护
    • 2类用户,主要是新会员、女性、中等收入段用户;本身交易频次高、单均价偏高、offer比例也偏高 --中等价值的高频新用户,需要offer维护
    • 3类用户,主要是老会员、女性、高收入段用户;本身交易频次中等,单均价最高、offer比例也高 --高价值的中频老用户,需要offer维护
    • 4类用户,主要是新会员、男性、低收入段用户;本身交易频次低,单均价最低,用户offer交易比例也低 --低价值低频新用户,可能不是很好的目标用户

    6. 每类用户群体的offer偏好, 以及促进用户消费的offer发放策略建议

    每类用户对每一类推送的响应率
    • 可以看到0类用户和4类用户,偏好编号7的offer, 是社交渠道的信息类offer
    • 0类用户还偏好一个编号8的offer,为低门槛的bogo类offer,在社交渠道发送
    • 1类用户和3类用户均偏好0、1、5、6、8号offer,只是3类用户整体响应率比1类更高,主要是手机、社交等多渠道发送的bogo和折扣类offer
    • 2类用户除了编号4,0、1、5、6、7、8响应率都较高,2、3、9响应相对低可能是因为没有在社交渠道发送, 4响应低可能既有未在社交渠道发送的原因,也有4的门槛较高的原因


      每类用户对各offer_type的响应率
      每类用户对各difficulty的响应率
      每类用户对各发送渠道组合的响应率
    • 综上,每一类用户的offer发放策略建议如下:
    • 对于1类用户,需要同时提高消费频次和客单价,培养消费习惯,可全渠道发送bogo+折扣类offer
    • 对于3类用户,发放offer的方式和1类用户类似,但因为3类用户本身消费频次还可以,所以可以比1类用户投入的成本偏少一些
    • 对于0类和4类用户,主要全渠道发信息类offer和低门槛bogo类offer,将4类转化为0类,提高0类的消费频次
    • 对于2类用户,在手机和社交渠道均活跃,本身消费频次和金额较高,各类offer响应率也都较高。可以适当减少有成本的offer发放的比例,增加信息类offer发送的比例,这样可以在保证其消费频次的同时,降低营销成本。同时可以考虑适当降低4类offer的门槛,可能可以提高一部分2类用户的客单价

    五、总结

    反思:
    • 整个过程包括:
      1)理清问题
      2)思考可以回答问题的数据指标
      3)根据数据构建表格和所需要的指标
      4)根据指标进行探索性分析或者模型构建
      5)得出结论(回答问题或应用结论)

    • 其中,问题和指标定义环节很关键,决定了后续工作的效率和成果; 数据清洗也很重要,保证后续结论的有效性和准确性

    • 由于业务的复杂性,在构建指标整理表格的时候有较大的挑战(判断offer完成应该记在哪一次交易上)

    • 在后续回答问题时,需要反复探索数据(分类、对比、可视化),找到特定用户群的特征

    改进和扩展:
    • 本分析没有详细分析渠道用户特征,当判断社交渠道的用户群体特征时,还应该同时对比其他渠道的用户特征,这样可以让社交渠道偏好的用户定位更精准
    • 本分析只回答了什么用户对什么活动更感兴趣的问题,可能有助于提高营销效率、降低营销成本,但还不够深入,更深入的分析包括比如:考虑发送的成本,就每类活动发送的响应情况,计算ROI
    • 该数据也可以通过建立回归模型,预测什么用户将会付更多的钱,来达到提高收益的目的

    相关文章

      网友评论

          本文标题:星巴克项目 Data Scientist Capstone -

          本文链接:https://www.haomeiwen.com/subject/wkixtktx.html