1.首先從項(xiàng)目中找到所謂的離線數(shù)據(jù),這就要求比如我們企業(yè)有自己的數(shù)據(jù)倉庫平臺,從數(shù)據(jù)倉庫平臺提取數(shù)據(jù) 進(jìn)行 聚合分析
2.將離線數(shù)據(jù)集加載到代碼中,進(jìn)行 ETL 抽取 轉(zhuǎn)換 重加載,這個(gè)過程主要是數(shù)據(jù)清洗,很多時(shí)候 原始數(shù)據(jù)并不符合我們數(shù)據(jù)分析的要求,不達(dá)標(biāo),需要我們做一些預(yù)處理。
比如去除部分非相關(guān)特征標(biāo)簽 比如某一列
比如 對相關(guān)標(biāo)簽的空值處理 ,添加一列 FeatureMissing 空值為1,非空為0,
比如 對 相關(guān)分類標(biāo)簽 做 one-hot編碼,把分類標(biāo)簽變?yōu)閿?shù)值標(biāo)簽 (0,1)(1,0)
還有對 訓(xùn)練集和 測試集的標(biāo)注,還有預(yù)測標(biāo)簽column的標(biāo)注
還有對feature的統(tǒng)計(jì)分析 ,比如 max avg min std var count,
經(jīng)過一系列的數(shù)據(jù)清洗預(yù)處理后 生成可以被數(shù)據(jù)分析的相關(guān)數(shù)據(jù)集
3.加載 經(jīng)過ETL處理后的數(shù)據(jù)集, 選擇適當(dāng)?shù)哪P?,?gòu)造模型參數(shù),通過配置可以迭代的模型參數(shù) 優(yōu)化調(diào)參,
4.通過數(shù)據(jù)可視化分析 得到的 AUC roc recall evalution predict 數(shù)值,確定參數(shù),通過降維處理 防過擬合 處理 確定最終模型。
5.將習(xí)得的模型 導(dǎo)出 比如 PMML 預(yù)測領(lǐng)域模型描述文件,然后在測試環(huán)境項(xiàng)目中 java scala文件中對PMML文件讀取 進(jìn)行在線實(shí)時(shí)響應(yīng)預(yù)測 ,100ms響應(yīng),目前支持PMML 的有spark ml、 keras 、sklearn、 Deeplearning4j 、tensorflow 、xgboost 、R 、flink
6.或者通過rpc http tcp 網(wǎng)絡(luò)通信調(diào)用,由測試環(huán)境的后端 項(xiàng)目向 python或者R環(huán)境中的模型發(fā)起調(diào)用,響應(yīng)速度較pmml 調(diào)用差,并且 并發(fā)性能有限。
7.通過A/B 測試后,確定最終模型 由后端完成相關(guān)wrap代碼實(shí)現(xiàn) 并部署在生產(chǎn)環(huán)境下 熱啟動(dòng)上線