閱讀1003 返回首頁    go 阿裏雲


特征工程__使用手冊(new)_機器學習-阿裏雲


特征工程


目錄


主成分分析

  • PCA 利用主成分分析方法,實現降維和降維的功能. PCA算法原理見wiki
  • 目前支持稠密數據格式

PAI 命令

  1. PAI -name PrinCompAnalysis
  2. -project algo_public
  3. -DinputTableName=bank_data
  4. -DeigOutputTableName=pai_temp_2032_17900_2
  5. -DprincompOutputTableName=pai_temp_2032_17900_1
  6. -DselectedColNames=pdays,previous,emp_var_rate,cons_price_idx,cons_conf_idx,euribor3m,nr_employed
  7. -DtransType=Simple
  8. -DcalcuType=CORR
  9. -DcontriRate=0.9;

算法參數說明

參數名稱 參數描述 參數值可選項 默認值
inputTableName 必選,進行主成分分析的輸入表 - -
eigOutputTableName 必選,特征向量與特征值的輸出表 - -
princompOutputTableName 必選,進行主成分降維降噪後的結果輸出表 - -
selectedColNames 必選,參與主成分分析運算的特征列 - -
transType 可選,原表轉換為主成分表的方式,支持Simple, Sub-Mean, Normalization - Simple
calcuType 可選,對原表進行特征分解的方式,支持 CORR/COVAR_SAMP/COVAR_POP - CORR
contriRate 可選,降維後數據信息保留的百分比 - 0.9
remainColumns 可選,降維表保留原表的字段 - -

PCA輸出示例

  1. 降維後的數據表image

  2. 特征值和特征向量表image


特征規範

功能說明

  • 根據用戶選擇需要規範特征,采用Min-Max或者ZScore進行規範化。默認情況下 支持稀疏和稠密特征數據自動化篩選需要規範化的Top10特征(按照標準差大小篩選)

PAI 命令

  1. PAI -name fe_normlize_runner -project algo_public
  2. -DnormTopN=10
  3. -Dlifecycle=28 -DnormCols=nr_employed
  4. -DnormMethod=minmax
  5. -DinputTable=pai_dense_10_1
  6. -DoutputTable=pai_temp_2262_22605_1;

參數說明

參數名稱 參數描述 參數值可選項 默認值
inputTable 必選,輸入表的表名 - -
inputTablePartitions 可選,輸入表中指定哪些分區參與訓練,格式為: partition_name=value。如果是多級,格式為name1=value1/name2=value2;如果指定多個分區,中間用’,’分開 - 輸入表的所有partition
outputTable 必選,規範化後結果表 - -
normCols 必選 需要規範的特征,如果是稀疏特征會自動化篩選 -
labelCol 可選, 標簽字段,如果設該簽列,可視化特征到目標變量的x-y分布直方圖 - -
categoryCols 可選,將勾選的字段視作枚舉特征處理 “”
normMethod 可選,特征規範方法,默認zscore 目前支持:minmax,zscore zscore
normTopN 挑選的TopN個需要規範的特征特征,默認10 10
isSparse 是否是k:v的稀疏特征,可選,默認稠密數據 100
itemSpliter 稀疏特征item分隔符,可選,默認逗號 “,”
kvSpliter 稀疏特征item分隔符,可選,默認冒號 “:”
lifecycle 結果表生命周期,可選,默認7 7

建模示例

輸入數據

  1. create table if not exists pai_dense_10_1 as
  2. select
  3. nr_employed
  4. from bank_data limit 10;
nr_employed
5228.1
5195.8
4991.6
5099.1
5076.2
5228.1
5099.1
5099.1
5076.2
5099.1

參數配置

輸入數據為pai_dense_10_1, 串聯特征規範組件,規範特征勾選nr_employed ,配置規範方法是Min-Max,運行

運行結果

nr_employed
0.045236319121669435
0.03905816644670144
0.0
0.02056196323712247
0.01618178688242372
0.045236319121669435
0.02056196323712247
0.02056196323712247
0.01618178688242372
0.02056196323712247

特征尺度變換

功能說明

  • 支持常見的 尺度變化函數 log2,log10,ln,abs,sqrt。支持 稠密或稀疏

PAI 命令

  1. PAI -name fe_scale_runner -project algo_public
  2. -Dlifecycle=28
  3. -DscaleMethod=log2
  4. -DscaleCols=nr_employed
  5. -DinputTable=pai_dense_10_1
  6. -DoutputTable=pai_temp_2262_20380_1;

算法參數

參數名稱 參數描述 參數值可選項 默認值
inputTable 必選,輸入表的表名 - -
inputTablePartitions 可選,輸入表中指定哪些分區參與訓練,格式為: partition_name=value。如果是多級,格式為name1=value1/name2=value2;如果指定多個分區,中間用’,’分開 - 輸入表的所有partition
outputTable 必選,尺度縮放後結果表 - -
scaleCols 必選,勾選需要縮放的特征,稀疏特征自動化篩選,隻能勾選數值類特征 -
labelCol 可選, 標簽字段,如果設該簽列,可視化特征到目標變量的x-y分布直方圖 - -
categoryCols 可選,將勾選的字段視作枚舉特征處理,不支持縮放 “”
scaleMethod 可選,縮放方法,默認log2, 支持 log2,log10,ln,abs,sqrt SameDistance
scaleTopN 當scaleCols沒有勾選時,自動挑選的TopN個需要縮放特征特征,默認10 10
isSparse 是否是k:v的稀疏特征,可選,默認稠密數據 100
itemSpliter 稀疏特征item分隔符,可選,默認逗號 “,”
kvSpliter 稀疏特征item分隔符,可選,默認冒號 “:”
lifecycle 結果表生命周期,可選,默認7 7

實例

輸入數據

  1. create table if not exists pai_dense_10_1 as
  2. select
  3. nr_employed
  4. from bank_data limit 10;

參數配置

勾選nr_employed 做特征尺度變化的特征,隻支持數值類特征尺度變化函數,勾選log2

image

運行結果
nr_employed
12.352071021075528
12.34313018339218
12.285286613666395
12.316026916036957
12.309533196497519
12.352071021075528
12.316026916036957
12.316026916036957
12.309533196497519
12.316026916036957

特征離散

離散模塊功能介紹

  • 支持 稠密或稀疏的 數值類特征 離散
  • 支持 等頻離散 和 等距離離散(默認)

pai 命令

  1. PAI -name fe_discrete_runner -project algo_public
  2. -DdiscreteMethod=SameFrequecy
  3. -Dlifecycle=28
  4. -DmaxBins=5
  5. -DinputTable=pai_dense_10_1
  6. -DdiscreteCols=nr_employed
  7. -DoutputTable=pai_temp_2262_20382_1;

算法參數

參數名稱 參數描述 參數值可選項 默認值
inputTable 必選,輸入表的表名 - -
inputTablePartitions 可選,輸入表中指定哪些分區參與訓練,格式為: partition_name=value。如果是多級,格式為name1=value1/name2=value2;如果指定多個分區,中間用’,’分開 - 輸入表的所有partition
outputTable 必選,離散後結果表 - -
discreteCols 必選,勾選需要離散的特征,如果是稀疏特征自動化篩選 “”
labelCol 可選, 標簽字段,如果設該簽列,可視化特征到目標變量的x-y分布直方圖 - -
categoryCols 可選,將勾選的字段視作枚舉特征處理,不支持離散 “”
discreteMethod 可選,離散方法,默認SameDistance 目前支持:SameDistance(等距離散), SameFrequecy(等頻離散) SameDistance
discreteTopN 當discreteCols沒有勾選時,自動挑選的TopN個需要離散特征特征,默認10 10
maxBins 離散區間大小,默認100 100
isSparse 是否是k:v的稀疏特征,可選,默認稠密數據 100
itemSpliter 稀疏特征item分隔符,可選,默認逗號 “,”
kvSpliter 稀疏特征item分隔符,可選,默認冒號 “:”
lifecycle 結果表生命周期,可選,默認7 7

建模示例

輸入數據

  1. create table if not exists pai_dense_10_1 as
  2. select
  3. nr_employed
  4. from bank_data limit 10;

參數配置

輸入數據為pai_dense_10_1離散特征勾選 nr_employed,用 等距離離散 方法離散成5個區間, 結果如下

image

運行結果

nr_employed
4.0
3.0
1.0
3.0
2.0
4.0
3.0
3.0
2.0
3.0

特征異常平滑

組件功能介紹

  • 功能:將輸入特征中含有異常的數據平滑到一定區間,支持稀疏和稠密

ps: 特征平滑組件隻是將異常取值的特征值修正成正常值,本身不過濾或刪除任何記錄,輸入數據維度和條數都不變.

平滑方法介紹

  • Zscore平滑:如果特征分布遵循正態分布,考慮噪音一般集在-3xalpha 和 3xalpha 之外,ZScore是將該範圍數據平滑到[-3xalpha,3xalpha]。

eg: 某個特征遵循特征分布,均值為0,標準差為3,因此-10的特征值會被識別為異常而修正為-3x3+0=-9,同理,10會被修正為3x3+0

image

  • 百分位平滑: 將數據分布在[minPer, maxPer]分位之外的數據平滑平滑到minPer/maxPer這兩個分位點

eg: age特征取值0-200,設置minPer為0,maxPer為50%,那麼在0-100之外的特征取值都會被修正成0或者100

  • 閾值平滑: 將數據分布在[minThresh, maxThresh]之外的數據平滑到minThresh和maxThresh這兩個數據點.

eg: age特征取值0-200,設置minThresh=10,maxThresh=80,那麼在0-80之外的特征取值都會被修正成0或者80

三 pai 命令

  1. PAI -name fe_soften_runner -project algo_public
  2. -DminThresh=5000 -Dlifecycle=28
  3. -DsoftenMethod=min-max-thresh
  4. -DsoftenCols=nr_employed
  5. -DmaxThresh=6000
  6. -DinputTable=pai_dense_10_1
  7. -DoutputTable=pai_temp_2262_20381_1;

四 算法參數

參數名稱 參數描述 參數值可選項 默認值
inputTable 必選,輸入表的表名 - -
inputTablePartitions 可選,輸入表中指定哪些分區參與訓練,格式為: partition_name=value。如果是多級,格式為name1=value1/name2=value2;如果指定多個分區,中間用’,’分開 - 輸入表的所有partition
outputTable 必選,平滑後結果表 - -
labelCol 可選, 標簽字段,如果設該簽列,可視化特征到目標變量的x-y分布直方圖 - -
categoryCols 可選,將勾選的字段視作枚舉特征處理 “”
softenCols 必選,勾選需要平滑的特征,但特征是稀疏特征時自動化篩選 -
softenMethod 可選,平滑方法,默認zscore 目前支持:min-max-thresh(閾值平滑), min-max-per(百分位平滑) zscore
softenTopN 當softenCols沒有勾選時,自動挑選的TopN個需要的平滑特征特征,默認10 10
cl 置信水平,當平滑方法是zscore方生效 10
minPer 最低百分位,當平滑方法是min-max-thresh方生效 0.0
maxPer 最高百分位,當平滑方法是min-max-thresh方生效 1.0
minThresh 閾值最小值,默認-9999,表示不設置, 當平滑方法是min-max-per方生效 -9999
maxThresh 閾值最大值,默認-9999,表示不設置,當平滑方法是min-max-per方生效 -9999
isSparse 是否是k:v的稀疏特征,可選,默認稠密數據 100
itemSpliter 稀疏特征item分隔符,可選,默認逗號 “,”
kvSpliter 稀疏特征item分隔符,可選,默認冒號 “:”
lifecycle 結果表生命周期,可選,默認7 7

五 實例

1. 輸入數據

輸入數據

  1. create table if not exists pai_dense_10_1 as
  2. select
  3. nr_employed
  4. from bank_data limit 10;
nr_employed
5228.1
5195.8
4991.6
5099.1
5076.2
5228.1
5099.1
5099.1
5076.2
5099.1

參數配置

平滑特征列勾選nr_employed,參數配置中選擇閾值平滑,下限5000,上限6000

image

運行結果

nr_employed
5228.1
5195.8
5000.0
5099.1
5076.2
5228.1
5099.1
5099.1
5076.2
5099.1

隨機森林特征重要性

組件功能

使用原始數據和隨機森林模型,計算特征重要性.

PAI 命令

  1. pai -name feature_importance -project algo_public
  2. -DinputTableName=pai_dense_10_10
  3. -DmodelName=xlab_m_random_forests_1_20318_v0
  4. -DoutputTableName=erkang_test_dev.pai_temp_2252_20319_1
  5. -DlabelColName=y
  6. - DfeatureColNames="pdays,previous,emp_var_rate,cons_price_idx,cons_conf_idx,euribor3m,nr_employed,age,campaign,poutcome"
  7. -Dlifecycle=28 ;

算法參數

參數名稱 參數描述 參數值可選項 默認值
inputTableName 必選,輸入表 - -
outputTableName 必選,輸出表 - -
labelColName 必選,label所在的列 - -
modelName 必選,輸入的模型名 - -
featureColNames 可選,輸入表選擇的特征 - 默認除label外的其他列
inputTablePartitions 可選,輸入表選擇的分區 - 默認選擇全表
lifecycle 可選,輸出表的生命周期 - 默認不設置
coreNum 可選,核心數 - 默認自動計算
memSizePerCore 可選,內存數 - 默認自動計算

實例

訓練數據

  1. drop table if exists pai_dense_10_10;
  2. creat table if not exists pai_dense_10_10 as
  3. select
  4. age,campaign,pdays, previous, poutcome, emp_var_rate, cons_price_idx, cons_conf_idx, euribor3m, nr_employed, y
  5. from bank_data limit 10;

參數配置

實例流程圖如下,數據源為pai_dense_10_10, y列為隨機森林的標簽列,其他列為特征列,強製轉換列勾選age和campaign,表示這兩個特征當做枚舉特征處理,其他采用默認參數。 運行成功如下

image

運行結果

colname gini entropy
age 0.06625000000000003 0.13978726292803723
campaign 0.0017500000000000003 0.004348515545596772
cons_conf_idx 0.013999999999999999 0.02908409497018851
cons_price_idx 0.002 0.0049804499913461255
emp_var_rate 0.014700000000000003 0.026786360680260933
euribor3m 0.06300000000000003 0.1321936348846039
nr_employed 0.10499999999999998 0.2203227248076733
pdays 0.0845 0.17750329234397513
poutcome 0.03360000000000001 0.07050327193845542
previous 0.017700000000000004 0.03810381005801592

隨機森林特征重要性組件上 右鍵查看可視化分析,效果如下所示

image


GBDT特征重要性

組件功能

計算梯度漸進決策樹(GBDT)特征重要性

PAI 命令

  1. pai -name gbdt_importance -project algo_public
  2. -DmodelName=xlab_m_GBDT_LR_1_20307_v0
  3. -Dlifecycle=28 -DoutputTableName=pai_temp_2252_20308_1 -DlabelColName=y
  4. -DfeatureColNames=pdays,previous,emp_var_rate,cons_price_idx,cons_conf_idx,euribor3m,nr_employed,age,campaign
  5. -DinputTableName=pai_dense_10_9;

算法參數

參數名稱 參數描述 參數值可選項 默認值
inputTableName 必選,輸入表 - -
outputTableName 必選,輸出表 - -
labelColName 必選,label所在的列 - -
modelName 必選,輸入的模型名 - -
featureColNames 可選,輸入表選擇的特征 - 默認除label外的其他列
inputTablePartitions 可選,輸入表選擇的分區 - 默認選擇全表
lifecycle 可選,輸出表的生命周期 - 默認不設置
coreNum 可選,核心數 - 默認自動計算
memSizePerCore 可選,內存數 - 默認自動計算

實例

輸入數據

  1. drop table if exists pai_dense_10_9;
  2. create table if not exists pai_dense_10_9 as
  3. select
  4. age,campaign,pdays, previous, emp_var_rate, cons_price_idx, cons_conf_idx, euribor3m, nr_employed, y
  5. from bank_data limit 10;

參數配置

實例流程圖如下,輸入數據為pai_dense_10_9, GBDT二分類組件選擇標簽列y,其他字段作為特征列,組件參數配置中葉節點最小樣本數配置為1,運行

image

運行結果

colname feature_importance
age 0.004667214954427797
campaign 0.001962038566773853
cons_conf_idx 0.04857761873887033
cons_price_idx 0.01925292649801252
emp_var_rate 0.044881269590771274
euribor3m 0.025034606434306696
nr_employed 0.036085457464908766
pdays 0.639121250405536
previous 0.18041761734639272

右鍵查看可視化分析報告

image


線性模型特征重要性

組件功能

計算線性模型的特征重要性,包括線性回歸和二分類邏輯回歸。 支持稀疏和稠密。

PAI 命令

  1. PAI -name regression_feature_importance -project algo_public
  2. -DmodelName=xlab_m_logisticregressi_20317_v0
  3. -DoutputTableName=pai_temp_2252_20321_1
  4. -DlabelColName=y
  5. -DfeatureColNames=pdays,previous,emp_var_rate,cons_price_idx,cons_conf_idx,euribor3m,nr_employed,age,campaign
  6. -DenableSparse=false -DinputTableName=pai_dense_10_9;

算法參數

參數名稱 參數描述 參數值可選項 默認值
inputTableName 必選,輸入表 - -
outputTableName 必選,輸出表 - -
modelName 必選,輸入的模型名 - -
labelColName 必選,label所在列 - -
feaureColNames 可選,輸入表選擇的特征 - 默認除label外的其他列
inputTablePartitions 可選,輸入表選擇的分區 - 默認選全表
enableSparse 可選,輸入表數據是否為稀疏格式 true, false false
itemDelimiter 可選,當輸入表數據為稀疏格式時,kv間的分割符 - 空格
kvDelimiter 可選,當輸入表數據為稀疏格式時,key和value的分割符 - 冒號
lifecycle 可選,輸出表的生命周期 - 默認不設置
coreNum 可選,核心數 - 默認自動計算
memSizePerCore 可選,內存數 - 默認自動計算

實例

輸入數據

  1. create table if not exists pai_dense_10_9 as
  2. select
  3. age,campaign,pdays, previous, emp_var_rate, cons_price_idx, cons_conf_idx, euribor3m, nr_employed, y
  4. from bank_data limit 10;
參數配置

建模流程如下圖示, 邏輯回歸多分類組件選擇標簽列為y,其他字段為特征列,其他參數默認,運行

image

運行效果
colname weight importance
pdays 0.033942600256583334 16.31387797440866
previous 0.00004248130342485344 0.000030038817725357177
emp_var_rate 0.00006720242617694611 0.00010554561260753949
cons_price_idx 0.00012311047229142307 0.00006581255124425219
cons_conf_idx 0.00017227965471819213 0.0008918770542818432
euribor3m 0.00006113758212679113 0.00010427128177450988
nr_employed 0.0034541377310490697 0.26048098230126043
age 0.00009618162708080744 0.0009267659744232966
campaign 0.000019142551785274455 0.000041793353660529855

指標計算公式

列名 公式
weight abs(w_)
importance abs(w_j) * STD(f_i)

在線性模型特征重要性組件上,右鍵查看可視化分析

image


偏好計算

功能介紹

  • 給定用戶的明細行為特征數據,自動計算用戶對特征值的偏好得分.
  • 輸入表包含用戶id和用戶明細行為特征輸入,假設在口碑到店場景,某用戶2088xxx1在3個月內吃了兩次川菜,一次西式快餐,那麼輸入表形式如下:
user_id cate
2088xxx1 川菜
2088xxx1 川菜
2088xxx1 西式快餐
  • 輸出表為用戶對川菜和西式快餐的偏好得分,形式如下:
user_id cate
2088xxx1 川菜:0.0544694,西式快餐:0.0272347

PAI命令示例

  1. pai -name=preference
  2. -project=algo_public
  3. -DInputTableName=preference_input_table
  4. -DIdColumnName=user_id
  5. -DFeatureColNames=cate
  6. -DOutputTableName=preference_output_table
  7. -DmapInstanceNum=2
  8. -DreduceInstanceNum=1;

算法參數

參數key名稱 參數描述 必/選填 默認值
InputTableName 輸入表名 必填 -
IdColumnName 用戶id列 必填 -
FeatureColNames 用戶特征列 必填 -
OutputTableName 輸出表名 必填 -
OutputTablePartitions 輸出表分區 選填 -
mapInstanceNum mapper數量 選填 2
reduceInstanceNum reducer數量 選填 1

實例

測試數據

新建數據SQL

  1. drop table if exists preference_input_table;
  2. create table preference_input_table as
  3. select
  4. *
  5. from
  6. (
  7. select '2088xxx1' as user_id, '川菜' as cate from alipaydw.dual
  8. union all
  9. select '2088xxx1' as user_id, '川菜' as cate from alipaydw.dual
  10. union all
  11. select '2088xxx1' as user_id, '西式快餐' cate from alipaydw.dual
  12. union all
  13. select '2088xxx3' as user_id, '川菜' as cate from alipaydw.dual
  14. union all
  15. select '2088xxx3' as user_id, '川菜' as cate from alipaydw.dual
  16. union all
  17. select '2088xxx3' as user_id, '西式快餐' as cate from alipaydw.dual
  18. ) tmp;

運行結果

  1. +------------+------------+
  2. | user_id | cate |
  3. +------------+------------+
  4. | 2088xxx1 | 川菜:0.0544694,西式快餐:0.0272347 |
  5. | 2088xxx3 | 川菜:0.0544694,西式快餐:0.0272347 |
  6. +------------+------------+

過濾式特征選擇

組件功能

根據用戶不同的特征選擇方法,選擇並過濾出TopN的特征數據,同時保存所有特征重要性表(右輸出)。支持稀疏和稠密數據

PAI 命令

  1. PAI -name fe_select_runner -project algo_public
  2. -DfeatImportanceTable=pai_temp_2260_22603_2
  3. -DselectMethod=iv
  4. -DselectedCols=pdays,previous,emp_var_rate,cons_price_idx,cons_conf_idx,euribor3m,nr_employed,age,campaign
  5. -DtopN=5
  6. -DlabelCol=y
  7. -DmaxBins=100
  8. -DinputTable=pai_dense_10_9
  9. -DoutputTable=pai_temp_2260_22603_1;

算法參數

參數名稱 參數描述 參數值可選項 默認值
inputTable 必選,輸入表的表名 - -
inputTablePartitions 可選,輸入表中指定哪些分區參與訓練,格式為: partition_name=value。如果是多級,格式為name1=value1/name2=value2;如果指定多個分區,中間用’,’分開 - 輸入表的所有partition
outputTable 必選,過濾後的特征結果表 - -
featImportanceTable 必選,存放所有輸入特征的重要性權重值 - -
selectedCols 必選,特征列 - -
labelCol 必選,標簽列/目標列 - -
categoryCols 存在在Int或者Double字符的枚舉特征,可選 “”
maxBins 連續類特征劃分最大區間數,可選 100
selectMethod 特征選擇方法,可選,默認iv 目前支持:iv(Information Value),Gini增益,信息增益,Lasso iv,GiniGain,InfoGain,Lasso iv
topN 挑選的TopN個特征,如果topN答應輸入特征數,則輸出所有特征,可選,默認10 10
isSparse 是否是k:v的稀疏特征,可選,默認稠密數據 100
itemSpliter 稀疏特征item分隔符,可選,默認逗號 “,”
kvSpliter 稀疏特征item分隔符,可選,默認冒號 “:”
lifecycle 結果表生命周期,可選,默認7 7

實例

輸入數據

  1. create table if not exists pai_dense_10_9 as
  2. select
  3. age,campaign,pdays, previous, emp_var_rate, cons_price_idx, cons_conf_idx, euribor3m, nr_employed, y
  4. from bank_data limit 10;

參數配置

標簽列勾選y字段,其他字段勾選為特征列, 特征選擇方法選IV,topN特征為5,表示過濾top5的特征

imageimage

運行結果

左輸出是過濾後的數據

pdays nr_employed emp_var_rate cons_conf_idx cons_price_idx y
999.0 5228.1 1.4 -36.1 93.444 0.0
999.0 5195.8 -0.1 -42.0 93.2 0.0
6.0 4991.6 -1.7 -39.8 94.055 1.0
999.0 5099.1 -1.8 -47.1 93.075 0.0
3.0 5076.2 -2.9 -31.4 92.201 1.0
999.0 5228.1 1.4 -42.7 93.918 0.0
999.0 5099.1 -1.8 -46.2 92.893 0.0
999.0 5099.1 -1.8 -46.2 92.893 0.0
3.0 5076.2 -2.9 -40.8 92.963 1.0
999.0 5099.1 -1.8 -47.1 93.075 0.0

右輸出是特征重要性表

特征重要性表字段結構如下,featureName存放特征名稱,weight表示特征選擇方法計算出來的權重。

featname weight
pdays 30.675544191232486
nr_employed 29.08332850085075
emp_var_rate 29.08332850085075
cons_conf_idx 28.02710269740324
cons_price_idx 28.02710269740324
euribor3m 27.829058450563718
age 27.829058450563714
previous 14.319325030742775
campaign 10.658129656314467

weight計算公式

選擇方法 weght含有
IV 信息價值
GiniGain Gini增益
InfoGain 信息熵增益
Lasso 線性模型權重絕對值

窗口變量統計

功能介紹

  • 給定時間窗口,計算相應用戶在相應時間窗內的行為次數和金額。如時間窗口為’1,7,30,90,180’,則計算用戶相應天數內的行為次數和金額。

PAI命令示例

  1. pai -name=rfm
  2. -project=algo_public
  3. -DinputTableName=window_input_table
  4. -DuserName=user_id
  5. -DdtName=dt
  6. -DcntName=cnt
  7. -DamtName=amt
  8. -Dwindow=1,7,30,90
  9. -DoutputTableName=window_output_table
  10. -DmapInstanceNum=2
  11. -DreduceInstanceNum=2;

算法參數

參數key名稱 參數描述 必/選填 默認值
inputTableName 輸入表名 必填 -
userName 用戶id列 必填 -
dtName 時間列(格式’20160101’) 必填 -
cntName 次數列 必填 -
amtName 金額列 必填 -
window 時間窗口(格式為1,7,30,90…) 必填 -
outputTableName 輸出表名 必填 -
outputTablePartitions 輸出表分區 選填 -
mapInstanceNum mapper數量 選填 2
reduceInstanceNum reducer數量 選填 2

實例

測試數據

新建數據SQL

  1. drop table if exists window_input_table;
  2. create table window_input_table as
  3. select
  4. *
  5. from
  6. (
  7. select 'a' as user_id, '20151201' as dt, 2 as cnt, 32.0 as amt from dual
  8. union all
  9. select 'a' as user_id, '20160201' as dt, 3 as cnt, 37.0 as amt from dual
  10. union all
  11. select 'a' as user_id, '20160223' as dt, 1 as cnt, 22.0 as amt from dual
  12. union all
  13. select 'b' as user_id, '20151212' as dt, 1 as cnt, 12.0 as amt from dual
  14. union all
  15. select 'b' as user_id, '20160110' as dt, 2 as cnt, 30.0 as amt from dual
  16. union all
  17. select 'c' as user_id, '20151001' as dt, 3 as cnt, 60.0 as amt from dual
  18. union all
  19. select 'c' as user_id, '20151201' as dt, 2 as cnt, 39.0 as amt from dual
  20. ) tmp;

運行結果

  1. +------------+------------+------------+------------+------------+-------------+-------------+-------------+-------------+
  2. | user_id | cnt_1d_sum | amt_1d_sum | cnt_7d_sum | amt_7d_sum | cnt_30d_sum | amt_30d_sum | cnt_90d_sum | amt_90d_sum |
  3. +------------+------------+------------+------------+------------+-------------+-------------+-------------+-------------+
  4. | a | 1 | 22.0 | 1 | 22.0 | 4 | 59.0 | 6 | 91.0 |
  5. | c | 0 | 0.0 | 0 | 0.0 | 0 | 0.0 | 2 | 39.0 |
  6. | b | 0 | 0.0 | 0 | 0.0 | 0 | 0.0 | 3 | 42.0 |
  7. +------------+------------+------------+------------+------------+-------------+-------------+-------------+-------------+

one-hot編碼

一 功能組件

one-hot編碼,也稱獨熱編碼,對於每一個特征,如果它有m個可能值,那麼經過獨熱編碼後,就變成了m個二元特征。並且,這些特征互斥,每次隻有一個激活。因此,數據會變成稀疏的,輸出結果也是k:v的稀疏結構。

二 PAI命令

  1. PAI -name fe_binary_runner -project algo_public
  2. -DinputTable=one_hot
  3. -DbinaryCols=edu_num
  4. -DlabelCol=income
  5. -DbinaryReserve=false
  6. -DbinStrategy=noDealStrategy
  7. -DbinaryIndexTable=pai_temp_2458_23436_3
  8. -DmodelTable=pai_temp_2458_23436_2
  9. -DoutputTable=pai_temp_2458_23436_1
  10. -Dlifecycle=28;

三 參數說明

參數名稱 參數描述 參數值可選項 默認值
inputTable 必選,輸入表的表名 - -
inputTablePartitions 可選,輸入表中指定哪些分區參與訓練,格式為: partition_name=value。如果是多級,格式為name1=value1/name2=value2;如果指定多個分區,中間用’,’分開 - 輸入表的所有partition
binaryCols 必選 one-hot編碼字段,必須是枚舉類特征,字段類型可以是任意類型 -
binStrategy 必選,編碼策略,本組件提供2種編碼策略:簡單二值化(noDealStrategy),自動二值化(autoStrategy),分類標簽必須設置 -
labelCol 分類標簽類. 按純度二值化策略下必選,其他策略下可選 - -
impurityMergeThresh 可選,按純度二值化策略中,前後二值化特征合並,純度提升閾值 0.1
densityMergeThresh 可選,按密度二值化策略中,二值化特征密度(占比)合並的閾值 0.1
binaryReserve 可選, 是否輸出表中保留原獨熱編碼特征 - -
outputTable 必選,one-hot後的結果表,編碼結果保存在kv字段裏 - -
binaryIndexTable 必選, kv序列化表,編碼特征名與kv中Key的映射關係 - -
modelTable 必選, one-hot編碼的映射邏輯,Json格式存放 - -
lifecycle 結果表生命周期,可選,默認7 7

編碼策略

  • noDealStrategy: 簡單二值化,比如sex特征取值 Female|Male|Unknowed. 那麼二值化出來特征是sex_female, sex_male 和 sex_Unknowed
  • autoStrategy:自動二值化. 在簡單二值化的基礎上,利用邏輯回歸算法計算每個one-hot特征,將one-hot特征權重為0的特征合並成獨立一項,命名other

實例

1 輸入數據

edu_num income
13 <=50K
13 <=50K
9 <=50K
7 <=50K
13 <=50K
14 <=50K
5 <=50K
9 >50K
14 >50K
13 >50K

2. 組件參數

勾選edu_num作為二值化特征, 其他全部采用默認參數,即簡單二值化策略,

3. 結果

編碼後結果(outputTable)

income kv
<=50K 0:1
<=50K 0:1
<=50K 4:1
<=50K 3:1
<=50K 0:1
<=50K 1:1
<=50K 2:1
>50K 4:1
>50K 1:1
>50K 0:1

kv的序列列表(binaryIndexTable)

featname featindex
edu_num 0
13 0
14 1
5 2
7 3
9 4

異常檢測

一 組件功能

支持一下功能

  • 針對連續值特征: 按箱線圖最大值和最小值檢測異常特征.image

  • 針對枚舉值特征: 按照枚舉特征的取值頻率,按照閾值過濾異常特征

二 PAI 參數

  1. PAI -name fe_detect_runner -project algo_public
  2. -DselectedCols="emp_var_rate,cons_price_rate,cons_conf_idx,euribor3m,nr_employed"
  3. -Dlifecycle="28"
  4. -DdetectStrategy="boxPlot"
  5. -DmodelTable="pai_temp_2458_23565_2"
  6. -DinputTable="pai_bank_data"
  7. -DoutputTable="pai_temp_2458_23565_1";

三 參數說明

參數名稱 參數描述 參數值可選項 默認值
inputTable 必選,輸入表的表名 - -
inputTablePartitions 可選,輸入表中指定哪些分區參與訓練,格式為: partition_name=value。如果是多級,格式為name1=value1/name2=value2;如果指定多個分區,中間用’,’分開 - 輸入表的所有partition
selectedCols 必選 輸入特征,字段類型可以是任意類型 -
detectStrategy 必選,支持boxPlot和avf 選項,boxPlot是針對連續特征做檢測,avf針對枚舉類特征做檢測 boxPlot
outputTable 必選,過濾檢測到的異常特征後數據集 - -
modelTable 必選, 異常檢測模型 - -
lifecycle 結果表生命周期,可選,默認7 7

最後更新:2016-11-17 10:05:00

  上一篇:go 數據預處理__使用手冊(new)_機器學習-阿裏雲
  下一篇:go 統計分析__使用手冊(new)_機器學習-阿裏雲