Sparkify 流失用户分析
Sparkify是一个国外的音乐平台,本文将介绍预测Sparkify流失用户的过程。我们使用的数据是Sparkify的用户使用log,其中包含用户听的歌曲,时长,艺术家,访问页面,注册时间,地区等等数据,完整的数据集有12G,但因本文是使用单节点Spark来进行数据分析和建模的实验,为了加快速度仅使用其中一部分128M的数据。
问题描述与解决思路
我们知道一个老顾客贡献的利润是新顾客数倍,老用户对平台来说十分重要。所以本项目的就是预测哪些用户会流失,会注销账号。如果能在用户离开前能精确识别这些用户,平台就可以通过打折或其他激励手段留住这些用户。
本项目的大概解决思路是首先通过可视化分析探索各个特征与用户是否流失的关系,从而挑选出一些特征值,使用机器学习的方法对模型进行训练,最后得到一个能够准确通过用户过往操作预测出用户是否要注销的模型。
本项目的流程为:
- 清洗数据
- 探索性分析
- 特征值选定
- 建模
- 总结
1 加载和清洗数据
首先,我们查看数据集有哪些列:
- artist: string
- auth: string
- firstName: string
- gender: string
- itemInSession: long
- lastName: string
- length: double
- level: string
- location: string
- method: string
- page: string
- registration: long
- sessionId: long
- song: string
- status: long
- ts: long
- userAgent: string
- userId: string
Page列有以下种类
+--------------------+
| page|
+--------------------+
| Cancel|
| Submit Downgrade|
| Thumbs Down|
| Home|
| Downgrade|
| Roll Advert|
| Logout|
| Save Settings|
|Cancellation Confirmation|
| About|
| Submit Registration|
| Settings|
| Login|
| Register|
| Add to Playlist|
| Add Friend|
| NextSong|
| Thumbs Up|
| Help|
| Upgrade|
+--------------------+
查看各列的缺失值的比例
-RECORD 0-----------------------------
artist | 0.20381151832460734
auth | 0.0
firstName | 0.029130890052356022
gender | 0.029130890052356022
itemInSession | 0.0
lastName | 0.029130890052356022
length | 0.20381151832460734
level | 0.0
location | 0.029130890052356022
method |