Auto ML自动特征工程
Auto ML自動特征工程
特征工程是在做機器學習訓練的過程中必不可少的環節,特征工程就是找出對模型結果有益的特征交叉關系,通常特征工程需要耗費算法工程師大量的精力去嘗試。針對這樣的場景,PAI推出智能特征交叉組件,基于該組件可以幫助您鎖定哪些特征的交叉是有意義的。本文介紹智能特征交叉組件的使用方法。
流程圖
智能特征交叉基于深度學習框架TensorFlow開發,底層有大量并行化計算的工作,需要使用GPU。目前只有北京和上海兩個區域支持該功能。
總流程圖:
說明 使用首頁的模板列表創建項目時,需要修改智能特征交叉組件的模型輸出路徑為您自己賬號的OSS地址。
1.開通GPU和OSS訪問權限
- 登錄PAI控制臺。
- 單擊左側導航欄設置,在基本設置處開通GPU和OSS訪問權限。
2.數據分桶
目前智能特征交叉組件只支持BIGINT型的數據交叉,考慮到平時業務中的原始數據通常是如下圖所示的Double類型:
所以使用SQL組件或Onehot組件將字符型數據轉為BIGINT型,另外需要使用特征離散組件進行特征分桶,將不同區間的特征按照分布的不同劃分到不同的數據桶之中。數據經過分桶之后變為如下形態:
3.確定特征范圍
特征交叉的基本原理是將特征先按照向量空間展開,然后做特征間的相互交叉驗證,最終挑選出合理的特征組合方式。在計算之前需要知道每個特征的空間的最大值,如下面這組數據:
? thalach的特征最大值為4
? oldpeak的特征最大值為3
? ca的特征最大值為4
執行如下SQL語句獲取最大值。
select max(feature) from table;
在本實驗樣例數據中,所有分桶完的特征的最大值均為4。
于是智能特征交叉的特征長度范圍要寫成如下圖樣式。其中5表示開區間[0,5),包含4。
4.生成訓練和測試數據
本實驗使用的訓練數據和測試數據是相同的表,實際使用中也可以把測試數據替換成跟訓練數據字段相同的不同表。
5.智能特征交叉
? 字段設置
輸入樁左側是訓練數據,右側是測試數據。
o 交叉特征字段選擇:選擇需要交叉驗證的特征字段。
o 是否為稀疏數據:默認不選中。表示稠密數據。
o 目標列:選擇目標列字段。
o 模型輸出路徑:生成的模型存于OSS中。
? 參數設置
o 遍歷次數:迭代次數。
o 特征階數:指特征交叉階數。如3,表示結果最多計算出3個特征之間的交叉。
PAI命令:
PAI -name fives_ext -project algo_public
-DlabelColName=“ifhealth” //目標列
-Dmetric_file=“metric_log.log” //日志
-Dfeature_meta="[5,5,5,5,5,5,5,5,5,5,5,5,5]"
-DtrainTable=“odps://項目名/tables/表名”
-Dbuckets=“oss://{oss_bucket}/”
-Dthreshold=“0.5”
-Dk=“3”
-DossHost=“oss-cn-beijing-internal.aliyuncs.com” //區域
-Demb_dims=“16”
-DenableSparse=“0”
-Dtemp_anneal_steps=“30000”
-DfeatureColName=“sex,cp,fbs,restecg,exang,slop,thal,age,trestbps,chol,thalach,oldpeak,ca” //特征
-DtestTable=“odps://項目名/tables/表名”
-Darn=“acs🐏😗*******:role/aliyunodpspaidefaultrole” //rolearn
-Depochs=“1500”
-DcheckpointDir=“oss://{oss_bucket}/{path}/”;
結果查詢
在OSS根目錄下,亦即Dbuckets路徑下找到interactions.json文件。
文件顯示的是各種組合的關系:
結果顯示的是一些啟發性的特征交叉組合方式,您可以按照該特征進行特征組合,舉例如下:
? [0,1]代表著第一個特征和第二個特征組合會有效果,特征順序跟輸入表的特征順序一致。
? [8, 6, 5]代表一個三階特征組合關系。第七個、第五個、第四個這三個特征組合起來會有效果。
總結
以上是生活随笔為你收集整理的Auto ML自动特征工程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Auto ML自动调参
- 下一篇: 机器学习PAI