ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

PySpark ML 预测流失用户

2022-08-28 18:00:25  阅读:165  来源: 互联网

标签:f1 降级 PySpark ML 模型 用户 流失 数据


PySpark ML 预测流失用户

项目定义

这是 Udacity 的 Capstone 项目,使用 Spark 分析来自音乐应用 Sparkify 的用户行为数据。主要目标是根据音乐应用程序的用户日志数据预测客户流失。日志包含有关用户的一些基本信息和有关单个操作的信息。

在本文中,我构建了机器学习管道以使用 PySpark ML 预测流失用户。

数据再处理的一部分包括探索性数据分析和特征工程。

数据处理部分由不同模型的管道组成,以进行客户流失预测。

最后给出了结果和最佳模型。

分析

数据探索

最初,我们有一个包含以下字段的数据集:

 ['艺术家':歌手的名字,  
 'auth':用户的登录状态,  
 'firstName':用户的名字,  
 'gender':用户的性别,  
 'itemInSession':本次会话的序号,  
 'lastName':用户的姓氏,  
 'length':歌曲的长度,  
 'level':用户是付费的还是免费的,  
 'location':用户的位置,  
 'method':获取网页的方法,  
 'page':用户浏览的页面类型,  
 'registration':用户的注册时间,  
 'sessionId':某个用户操作的sessionId,  
 'song':歌曲名称,  
 'status':页面返回码,  
 'ts':用户登录时间的时间戳,  
 'userAgent':浏览客户端信息,  
 'userId': 用户 ID]

首先,我们观察每个字段的唯一值的数量:

 艺术家 17655  
 授权 2  
 名字 189  
 性别 2  
 itemInSession 1311  
 姓氏 173  
 长度 14865  
 2级  
 位置 114  
 方法二  
 第 19 页  
 注册 225  
 会话 ID 2312  
 歌曲58480  
 状态 3  
 ts 269770  
 用户代理 56  
 用户 ID 225  
 数据类型:int64

从“页面”列中的值,我们发现用户可以采取的许多操作,与流失用户最相关的是“取消确认”,它定义了流失,例如“降级”。

然后,我们从“位置”中提取一个新列“状态”作为子字符串,并尝试查看流失用户分布与无流失用户分布之间的差异。此分布出现在下图中。

我们可以看一下,看看流失用户和普通用户之间是否存在性别差异。从下图中我们可以了解到,女性和男性用户的比例几乎是相等的。

我们还可以统计浏览不同页面类型的数量:

 +--------------------+------------+--------------+  
 |页|count_churn|count_no_churn|  
 +--------------------+------------+--------------+  
 |取消| 52|空|  
 |提交降级| 9| 54|  
 |大拇指向下| 496| 2050|  
 |主页| 1672| 8410|  
 |降级| 337| 1718|  
 |滚动广告| 967| 2966|  
 |登出| 553| 2673|  
 |保存设置| 58| 252|  
 |取消会议...| 52|空|  
 |关于| 56| 439|  
 |设置| 270| 1244|  
 |添加到播放列表| 1038| 5488|  
 |添加好友| 636| 3641|  
 |下一首| 36394| 191714|  
 |竖起大拇指| 1859| 10692|  
 |帮助| 239| 1215|  
 |升级| 112| 387|  
 |错误| 32| 220|  
 |提交升级| 32| 127|  
 +--------------------+------------+--------------+

我们进行了一些其他探索,并确定以下功能会引起我们的兴趣,并且会对最终结果产生最大的影响。

特征工程

建议的功能如下:

  1. 用户流失或无流失(1 - 流失,0 - 无流失)
  2. 注册后时间(天)
  3. 用户播放歌曲数
  4. 用户付费或免费(1 - 付费,0 - 免费)
  5. 用户性别(1——女性,0——男性)
  6. 用户降级(计数)
  7. 降级和流失之间的时间段
  8. 用户的位置(状态的一种热编码)

这部分的结果是具有所有已创建特征的数据集。

方法

数据处理

我们使用以下数据分类模型:

  • 逻辑回归
  • 决策树

我们想预测流失和没有流失的用户,所以我们使用二元分类。

为每个模型构建了一个管道:

  • 数据准备:将数据拆分为训练和测试数据集,缩放数据等;
  • 模型定义
  • 用于调整模型参数的网格搜索参数
  • 交叉验证

结果和结论

为了估计结果,我们使用准确率、精度、召回率和 f1 分数。我们的目标指标是 f1-score。下面是关于训练和测试集以及不同模型的结果表。

从表中可以看出,逻辑回归模型的 f1-score 非常不同。这意味着模型过度拟合。对于决策树模型,两个结果彼此接近,看起来像训练有素的模型,对于测试数据集 f1-score = 0.8。因此,这种情况下最好的分类模型是基于决策树的模型。

你可以在我的文章中找到这篇文章的代码 Github 仓库 .

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明

本文链接:https://www.qanswer.top/1350/52582817

标签:f1,降级,PySpark,ML,模型,用户,流失,数据
来源: https://www.cnblogs.com/amboke/p/16633266.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有