Code前端首页关于Code前端联系我们

PySpark将Python与Spark相结合,进行机器学习环境搭建和模型开发

terry 2年前 (2023-09-27) 阅读数 64 #数据结构与算法

Apache Spark是一个专为大规模数据处理而设计的快速、通用的计算引擎。 Spark是一个类似于Hadoop MapReduce的通用并行框架,由加州大学伯克利分校AMP实验室(AMP Lab at the University of California, Berkeley)开源。 Spark具有Hadoop MapReduce的优点;但与MapReduce不同的是,作业的中间输出结果可以存储在内存中。 ,因此不再需要读写HDFS,因此Spark可以更适合数据挖掘、机器学习等需要迭代的MapReduce算法。

Spark 提供了更快、更通用的数据处理平台。与 Hadoop 相比,Spark 可以让你的程序在内存中运行时快 100 倍,或者在磁盘上运行时快 10 倍。去年,Spark 在 100 TB Daytona GraySort 竞赛中击败了 Hadoop,仅使用十分之一的机器,但运行速度快了三倍。 Spark 也成为排序 PB 级数据最快的开源引擎。

Spark 支持 Scala、Java、Python、R 等接口。本文使用Python环境进行学习。? pyspark官方文档http://spark.apache.org/docs/2.1.2/api/python/index.html

基于PySpark的模型开发

会员流失预测模型

模型开发总体流程

python与Spark结合,PySpark机器学习环境搭建和模型开发

需求沟通与问题设置

定义流失口径:例如,流失客户定义为自上次购买日期以来的时间大于平均购买间隔加上3倍标准差;非流失客户被定义为波动相对较小的客户。购买频率相对稳定的客户
选择时间窗口:例如选择每个会员最近的购买时间,回溯一年历史订单
影响因素推测:集思广益,提前筛选特征,从业务角度从这里开始,筛选出很多影响原始特征集的因素

数据集成和特征工程
1)将不同表的数据集成到一张大表中,通常通过SQL处理
2 )数据预处理和特征工程

python与Spark结合,PySpark机器学习环境搭建和模型开发

模型开发和效果评估
1)首先根据正负样本随机划分样本数据,然后形成训练集和测试集,确保训练集之间不重复。和测试集数据、训练集和测试集的正负样本比例基本相同。最终两个数据集中正负样本的比例接近1:1

python与Spark结合,PySpark机器学习环境搭建和模型开发

2)构建模型,并不是特征越多越好,模型的目的是用最简单的模型。可能得到最好的结果。减少一些值小、贡献小的特征有助于找到最简单的模型,而不会改变性能或减少很少。

python与Spark结合,PySpark机器学习环境搭建和模型开发

使用卡方检验来检验特征和因变量的独立性。如果独立性高,说明两者关系不大,可以丢弃特征;如果独立性较小,而两者之间的相关性较高,则说明该特征会对相应的变量产生比较大的影响,应该选择。

3) CV 或 TVS 将数据分为训练数据和测试数据,并且对于每一对(训练、测试),迭代参数集。使用每组拟合参数得到训练好的模型,然后使用AUC和ACC来评估模型的性能,并选择性能最好的模型对应的参数表。

python与Spark结合,PySpark机器学习环境搭建和模型开发

模型应用与迭代优化
应用模型预测结果/打印进行精细化营销或回收,同时根据实际情况不断优化模型,然后用优化后的模型重新预测,形成迭代优化的闭环。

python与Spark结合,PySpark机器学习环境搭建和模型开发

模型代码
附录1:本地开发的Python代码

python与Spark结合,PySpark机器学习环境搭建和模型开发

python与Spark结合,PySpark机器学习环境搭建和模型开发

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

热门