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

