星巴克用户分析项目
简介和目的
- 这个数据集是一些模拟 Starbucks rewards 移动 app 上用户行为的数据。每隔几天,星巴克会向 app 的用户发送一些推送。这个推送可能仅仅是一条饮品的广告或者是折扣券或 BOGO(买一送一)。一些顾客可能一连几周都收不到任何推送。我的任务是将交易数据、人口统计数据和推送数据结合起来判断哪一类人群会受到某种推送的影响。
- 我的工作:首先对数据进行预处理,讲用户数据和推送offer数据、交易数据合并到一起,然后对用户数据进行特征处理和分类,最后通过深度学习,预测用户的推送offer完成率,从而可以针对性的推送offer
评价指标
- 用户分类,采用2个指标评价
- silhouette_score : 所有样本轮廓系数的平均值,轮廓系数Silhouette Coefficient 值越大表明更匹配其属聚类而不与相邻的聚类匹配。越接近1越好 越接近-1越差
- model.inertia_ : 样本到各自聚类中心的距离之和 越小越好
- 预测用户对于offer的 complete/receive rate, 也就是完成占接收信息的比例,属于回归问题,也采用2个指标
- ‘neg_mean_squared_error’: 负均方误差,反应拟合数据和原始数据误差的平方和的均值,其值越小说明拟合效果越好。
- r2_score:判定系数,其值取值范围是[0,1],越接近于1说明自变量越能解释因变量的方差变化,值越小则说明效果越差。
第一步:特征工程
准备数据集
一共有三个数据文件:
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 (字符串列表)
profile.json
age (int) – 顾客的年龄
b