python与Spark结合,PySpark的机器学习环境搭建和模型开发
- 2019 年 10 月 28 日
- 笔记
Spark提供了一个更快、更通用的数据处理平台。和Hadoop相比,Spark可以让你的程序在内存中运行时速度提升100倍,或者在磁盘上运行时速度提升10倍。去年,在100 TB Daytona GraySort比赛中,Spark战胜了Hadoop,它只使用了十分之一的机器,但运行速度提升了3倍。Spark也已经成为针对 PB 级别数据排序的最快的开源引擎。
Spark支持Scala、Java、Python、R等接口,本文均使用Python环境进行学习。
Spark在Windows下的环境搭建
https://blog.csdn.net/u011513853/article/details/52865076
https://www.jianshu.com/p/ede10338a932
pyspark官方文档http://spark.apache.org/docs/2.1.2/api/python/index.html
基于PySpark的模型开发
会员流失预测模型
通用模型开发流程

需求沟通与问题确立
定义流失口径:比如,流失客户定义为最近一次购买日期距今的时间大于平均购买间期加3倍的标准差;非流失客户定义为波动比较小,购买频次比较稳定的客户 选定时间窗口:比如,选择每个会员最近一次购买时间回溯一年的历史订单情况 推测可能的影响因素:头脑风暴,特征初筛,从业务角度出发,尽可能多的筛选出可能的影响因素作为原始特征集
数据整合与特征工程 1)把来自不同表的数据整合到一张宽表中,一般是通过SQL处理 2)数据预处理和特征工程

模型开发与效果评估 1)样本数据先按照正负例分别随机拆分,然后分别组成训练和测试集,保证训练集和测试集之间没有重复数据,训练集和测试集正负例比例基本一致,最终两个数据集中正负例比例均接近1:1

2)对于建立模型而言并非特征越多越好,建模的目标是使用尽量简单的模型去实现尽量好的效果。减少一些价值小贡献小的特征有利于在表现效果不变或降低很小的前提下,找到最简单的模型。

使用卡方检验对特征与因变量进行独立性检验,如果独立性高就表示两者没太大关系,特征可以舍弃;如果独立性小,两者相关性高,则说明该特征会对应变量产生比较大的影响,应当选择。
3)CV或者TVS将数据划分为训练数据和测试数据,对于每个(训练,测试)对,遍历一组参数。用每一组参数来拟合,得到训练后的模型,再用AUC和ACC评估模型表现,选择性能表现最优模型对应参数表。

模型应用与迭代优化 应用模型预测结果/评分进行精细化营销或者挽回,同时不断根据实际情况优化模型,再用优化后的模型重新预测,形成一个迭代优化的闭环。

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


地址 https://www.jianshu.com/p/5a5fc30a7a70