星巴克用户分析项目
简介和目的
- 这个数据集是一些模拟 Starbucks rewards 移动 app 上用户行为的数据。每隔几天,星巴克会向 app 的用户发送一些推送。这个推送可能仅仅是一条饮品的广告或者是折扣券或 BOGO(买一送一)。一些顾客可能一连几周都收不到任何推送。我的任务是将交易数据、人口统计数据和推送数据结合起来,预测某个用户会不会受到app推送活动的影响。
- 我的工作:首先对数据进行预处理,将用户数据和推送offer数据、交易数据合并到一起,然后对用户数据增加更多特征,最后通过深度学习,预测某个用户会不会受到app推送活动的影响,从而可以针对性的推送offer
评价指标
- 预测用户收到某个offer后是否会完成交易,属于分类问题,采用指标F_beta分数 (beta =2):是通过权衡recall和precision之间的重要性的性能指标, 由于不希望给用户发垃圾推送 所以更关注召回率,beta =2 时认为召回率的重要程度是准确率的2倍。
第一步:特征工程
准备数据集
一共有三个数据文件:
portfolio.json – 包括推送的 id 和每个推送的元数据(持续时间、种类等等)
profile.json – 每个顾客的人口统计数据
transcript.json – 交易、收到的推送、查看的推送和完成的推送的记录
以下是文件中每个变量的类型和解释 :
portfolio.json:
id (string) – 推送的id
offer_type (string) – 推送的种类,例如 BOGO、打折(discount)、信息(informational)
difficulty (int) – 满足推送的要求所需的最少花费
reward (int) – 满足推送的要求后给与的优惠
duration (int) – 推送持续的时间,单位是天
channels (字符串列表)
reward | channels | difficulty | duration | offer_type | id | |
---|---|---|---|---|---|---|
0 | 10 | [‘email’, ‘mobile’, ‘social’] | 10 | 7 | bogo | ae264e3637204a6fb9bb56bc8210ddfd |
1 | 10 | [‘web’, ‘email’, ‘mobile’, ‘social’] | 10 | 5 | bogo | 4d5c57ea9a6940dd891ad53e9dbe8da0 |
2 | 0 | [‘web’, ‘email’, ‘mobile’] | 0 | 4 | informational | 3f207df678b143eea3cee63160fa8bed |
3 | 5 | [‘web’, ‘email’, ‘mobile’] | 5 | 7 | bogo | 9b98b8c7a33c4b65b9aebfe6a799e6d9 |
4 | 5 | [‘web’, ‘email’] | 20 | 10 | discount | 0b1e1539f2cc45b7b9fa7c272da2e1d7 |
profile.json
age (int) – 顾客的年龄
became_member_on (int) – 该顾客第一次注册app的时间
gender (str) – 顾客的性别(注意除了表示男性的 M 和表示女性的 F 之外,还有表示其他的 O)
id (str) – 顾客id
income (float) – 顾客的收入
gender | age | id | became_member_on | income | |
---|---|---|---|---|---|
0 | 118 | 68be06ca386d4c31939f3a4f0e3dd783 | 20170212 | nan | |
1 | F | 55 | 0610b486422d4921ae7d2bf64640c50b | 20170715 | 112000 |
2 | 118 | 38fe809add3b4fcf9315a9694bb96ff5 | 20180712 | nan | |
3 | F | 75 | 78afa995795e4d85b5d9ceeca43f5fef | 20170509 | 100000 |
4 | 118 | a03223e636434f42ac4c3df47e8bac43 | 20170804 | nan |
transcript.json
event (str) – 记录的描述(比如交易记录、推送已收到、推送已阅)
person (str) – 顾客id
time (int) – 单位是小时,测试开始时计时。该数据从时间点 t=0 开始
value - (dict of strings) – 推送的id 或者交易的数额
person | event | value | time | |
---|---|---|---|---|
0 | 78afa995795e4d85b5d9ceeca43f5fef | offer received | {‘offer id’: ‘9b98b8c7a33c4b65b9aebfe6a799e6d9’} | 0 |
1 | a03223e636434f42ac4c3df47e8bac43 | offer received | {‘offer id’: ‘0b1e1539f2cc45b7b9fa7c272da2e1d7’} | 0 |
2 | e2127556f4f64592b11af22de27a7932 | offer received | {‘offer id’: ‘2906b810c7d4411798c6938adc9daaa5’} | 0 |
3 | 8ec6ce2a7e7949b1bf142def7d0e0586 | offer received | {‘offer id’: ‘fafdcd668e3743c1bb461111dcafc2a4’} | 0 |
4 | 68617ca6246f4fbc85e91a2a49552598 | offer received | {‘offer id’: ‘4d5c57ea9a6940dd891ad53e9dbe8da0’} | 0 |