1003
人物
特征工程__使用手冊(new)_機器學習-阿裏雲
特征工程
目錄
主成分分析
- PCA 利用主成分分析方法,實現降維和降維的功能. PCA算法原理見wiki
- 目前支持稠密數據格式
PAI 命令
PAI -name PrinCompAnalysis
-project algo_public
-DinputTableName=bank_data
-DeigOutputTableName=pai_temp_2032_17900_2
-DprincompOutputTableName=pai_temp_2032_17900_1
-DselectedColNames=pdays,previous,emp_var_rate,cons_price_idx,cons_conf_idx,euribor3m,nr_employed
-DtransType=Simple
-DcalcuType=CORR
-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輸出示例
降維後的數據表
特征值和特征向量表
特征規範
功能說明
- 根據用戶選擇需要規範特征,采用Min-Max或者ZScore進行規範化。默認情況下 支持稀疏和稠密特征數據自動化篩選需要規範化的Top10特征(按照標準差大小篩選)
PAI 命令
PAI -name fe_normlize_runner -project algo_public
-DnormTopN=10
-Dlifecycle=28 -DnormCols=nr_employed
-DnormMethod=minmax
-DinputTable=pai_dense_10_1
-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 |
建模示例
輸入數據
create table if not exists pai_dense_10_1 as
select
nr_employed
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 命令
PAI -name fe_scale_runner -project algo_public
-Dlifecycle=28
-DscaleMethod=log2
-DscaleCols=nr_employed
-DinputTable=pai_dense_10_1
-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 |
實例
輸入數據
create table if not exists pai_dense_10_1 as
select
nr_employed
from bank_data limit 10;
參數配置
勾選nr_employed 做特征尺度變化的特征,隻支持數值類特征尺度變化函數,勾選log2
運行結果
nr_employed |
---|
12.352071021075528 |
12.34313018339218 |
12.285286613666395 |
12.316026916036957 |
12.309533196497519 |
12.352071021075528 |
12.316026916036957 |
12.316026916036957 |
12.309533196497519 |
12.316026916036957 |
特征離散
離散模塊功能介紹
- 支持 稠密或稀疏的 數值類特征 離散
- 支持 等頻離散 和 等距離離散(默認)
pai 命令
PAI -name fe_discrete_runner -project algo_public
-DdiscreteMethod=SameFrequecy
-Dlifecycle=28
-DmaxBins=5
-DinputTable=pai_dense_10_1
-DdiscreteCols=nr_employed
-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 |
建模示例
輸入數據
create table if not exists pai_dense_10_1 as
select
nr_employed
from bank_data limit 10;
參數配置
輸入數據為pai_dense_10_1離散特征勾選 nr_employed,用 等距離離散 方法離散成5個區間, 結果如下
運行結果
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
- 百分位平滑: 將數據分布在[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 命令
PAI -name fe_soften_runner -project algo_public
-DminThresh=5000 -Dlifecycle=28
-DsoftenMethod=min-max-thresh
-DsoftenCols=nr_employed
-DmaxThresh=6000
-DinputTable=pai_dense_10_1
-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. 輸入數據
輸入數據
create table if not exists pai_dense_10_1 as
select
nr_employed
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
運行結果
nr_employed |
---|
5228.1 |
5195.8 |
5000.0 |
5099.1 |
5076.2 |
5228.1 |
5099.1 |
5099.1 |
5076.2 |
5099.1 |
隨機森林特征重要性
組件功能
使用原始數據和隨機森林模型,計算特征重要性.
PAI 命令
pai -name feature_importance -project algo_public
-DinputTableName=pai_dense_10_10
-DmodelName=xlab_m_random_forests_1_20318_v0
-DoutputTableName=erkang_test_dev.pai_temp_2252_20319_1
-DlabelColName=y
- DfeatureColNames="pdays,previous,emp_var_rate,cons_price_idx,cons_conf_idx,euribor3m,nr_employed,age,campaign,poutcome"
-Dlifecycle=28 ;
算法參數
參數名稱 | 參數描述 | 參數值可選項 | 默認值 |
---|---|---|---|
inputTableName | 必選,輸入表 | - | - |
outputTableName | 必選,輸出表 | - | - |
labelColName | 必選,label所在的列 | - | - |
modelName | 必選,輸入的模型名 | - | - |
featureColNames | 可選,輸入表選擇的特征 | - | 默認除label外的其他列 |
inputTablePartitions | 可選,輸入表選擇的分區 | - | 默認選擇全表 |
lifecycle | 可選,輸出表的生命周期 | - | 默認不設置 |
coreNum | 可選,核心數 | - | 默認自動計算 |
memSizePerCore | 可選,內存數 | - | 默認自動計算 |
實例
訓練數據
drop table if exists pai_dense_10_10;
creat table if not exists pai_dense_10_10 as
select
age,campaign,pdays, previous, poutcome, emp_var_rate, cons_price_idx, cons_conf_idx, euribor3m, nr_employed, y
from bank_data limit 10;
參數配置
實例流程圖如下,數據源為pai_dense_10_10, y列為隨機森林的標簽列,其他列為特征列,強製轉換列勾選age和campaign,表示這兩個特征當做枚舉特征處理,其他采用默認參數。 運行成功如下
運行結果
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 |
隨機森林特征重要性組件上 右鍵查看可視化分析,效果如下所示
GBDT特征重要性
組件功能
計算梯度漸進決策樹(GBDT)特征重要性
PAI 命令
pai -name gbdt_importance -project algo_public
-DmodelName=xlab_m_GBDT_LR_1_20307_v0
-Dlifecycle=28 -DoutputTableName=pai_temp_2252_20308_1 -DlabelColName=y
-DfeatureColNames=pdays,previous,emp_var_rate,cons_price_idx,cons_conf_idx,euribor3m,nr_employed,age,campaign
-DinputTableName=pai_dense_10_9;
算法參數
參數名稱 | 參數描述 | 參數值可選項 | 默認值 |
---|---|---|---|
inputTableName | 必選,輸入表 | - | - |
outputTableName | 必選,輸出表 | - | - |
labelColName | 必選,label所在的列 | - | - |
modelName | 必選,輸入的模型名 | - | - |
featureColNames | 可選,輸入表選擇的特征 | - | 默認除label外的其他列 |
inputTablePartitions | 可選,輸入表選擇的分區 | - | 默認選擇全表 |
lifecycle | 可選,輸出表的生命周期 | - | 默認不設置 |
coreNum | 可選,核心數 | - | 默認自動計算 |
memSizePerCore | 可選,內存數 | - | 默認自動計算 |
實例
輸入數據
drop table if exists pai_dense_10_9;
create table if not exists pai_dense_10_9 as
select
age,campaign,pdays, previous, emp_var_rate, cons_price_idx, cons_conf_idx, euribor3m, nr_employed, y
from bank_data limit 10;
參數配置
實例流程圖如下,輸入數據為pai_dense_10_9, GBDT二分類組件選擇標簽列y,其他字段作為特征列,組件參數配置中葉節點最小樣本數配置為1,運行
運行結果
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 |
右鍵查看可視化分析報告
線性模型特征重要性
組件功能
計算線性模型的特征重要性,包括線性回歸和二分類邏輯回歸。 支持稀疏和稠密。
PAI 命令
PAI -name regression_feature_importance -project algo_public
-DmodelName=xlab_m_logisticregressi_20317_v0
-DoutputTableName=pai_temp_2252_20321_1
-DlabelColName=y
-DfeatureColNames=pdays,previous,emp_var_rate,cons_price_idx,cons_conf_idx,euribor3m,nr_employed,age,campaign
-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 | 可選,內存數 | - | 默認自動計算 |
實例
輸入數據
create table if not exists pai_dense_10_9 as
select
age,campaign,pdays, previous, emp_var_rate, cons_price_idx, cons_conf_idx, euribor3m, nr_employed, y
from bank_data limit 10;
參數配置
建模流程如下圖示, 邏輯回歸多分類組件選擇標簽列為y,其他字段為特征列,其他參數默認,運行
運行效果
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) |
在線性模型特征重要性組件上,右鍵查看可視化分析
偏好計算
功能介紹
- 給定用戶的明細行為特征數據,自動計算用戶對特征值的偏好得分.
- 輸入表包含用戶id和用戶明細行為特征輸入,假設在口碑到店場景,某用戶2088xxx1在3個月內吃了兩次川菜,一次西式快餐,那麼輸入表形式如下:
user_id | cate |
---|---|
2088xxx1 | 川菜 |
2088xxx1 | 川菜 |
2088xxx1 | 西式快餐 |
- 輸出表為用戶對川菜和西式快餐的偏好得分,形式如下:
user_id | cate |
---|---|
2088xxx1 | 川菜:0.0544694,西式快餐:0.0272347 |
PAI命令示例
pai -name=preference
-project=algo_public
-DInputTableName=preference_input_table
-DIdColumnName=user_id
-DFeatureColNames=cate
-DOutputTableName=preference_output_table
-DmapInstanceNum=2
-DreduceInstanceNum=1;
算法參數
參數key名稱 | 參數描述 | 必/選填 | 默認值 |
---|---|---|---|
InputTableName | 輸入表名 | 必填 | - |
IdColumnName | 用戶id列 | 必填 | - |
FeatureColNames | 用戶特征列 | 必填 | - |
OutputTableName | 輸出表名 | 必填 | - |
OutputTablePartitions | 輸出表分區 | 選填 | - |
mapInstanceNum | mapper數量 | 選填 | 2 |
reduceInstanceNum | reducer數量 | 選填 | 1 |
實例
測試數據
新建數據SQL
drop table if exists preference_input_table;
create table preference_input_table as
select
*
from
(
select '2088xxx1' as user_id, '川菜' as cate from alipaydw.dual
union all
select '2088xxx1' as user_id, '川菜' as cate from alipaydw.dual
union all
select '2088xxx1' as user_id, '西式快餐' cate from alipaydw.dual
union all
select '2088xxx3' as user_id, '川菜' as cate from alipaydw.dual
union all
select '2088xxx3' as user_id, '川菜' as cate from alipaydw.dual
union all
select '2088xxx3' as user_id, '西式快餐' as cate from alipaydw.dual
) tmp;
運行結果
+------------+------------+
| user_id | cate |
+------------+------------+
| 2088xxx1 | 川菜:0.0544694,西式快餐:0.0272347 |
| 2088xxx3 | 川菜:0.0544694,西式快餐:0.0272347 |
+------------+------------+
過濾式特征選擇
組件功能
根據用戶不同的特征選擇方法,選擇並過濾出TopN的特征數據,同時保存所有特征重要性表(右輸出)。支持稀疏和稠密數據
PAI 命令
PAI -name fe_select_runner -project algo_public
-DfeatImportanceTable=pai_temp_2260_22603_2
-DselectMethod=iv
-DselectedCols=pdays,previous,emp_var_rate,cons_price_idx,cons_conf_idx,euribor3m,nr_employed,age,campaign
-DtopN=5
-DlabelCol=y
-DmaxBins=100
-DinputTable=pai_dense_10_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 |
實例
輸入數據
create table if not exists pai_dense_10_9 as
select
age,campaign,pdays, previous, emp_var_rate, cons_price_idx, cons_conf_idx, euribor3m, nr_employed, y
from bank_data limit 10;
參數配置
標簽列勾選y字段,其他字段勾選為特征列, 特征選擇方法選IV,topN特征為5,表示過濾top5的特征
運行結果
左輸出是過濾後的數據
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命令示例
pai -name=rfm
-project=algo_public
-DinputTableName=window_input_table
-DuserName=user_id
-DdtName=dt
-DcntName=cnt
-DamtName=amt
-Dwindow=1,7,30,90
-DoutputTableName=window_output_table
-DmapInstanceNum=2
-DreduceInstanceNum=2;
算法參數
參數key名稱 | 參數描述 | 必/選填 | 默認值 |
---|---|---|---|
inputTableName | 輸入表名 | 必填 | - |
userName | 用戶id列 | 必填 | - |
dtName | 時間列(格式’20160101’) | 必填 | - |
cntName | 次數列 | 必填 | - |
amtName | 金額列 | 必填 | - |
window | 時間窗口(格式為1,7,30,90…) | 必填 | - |
outputTableName | 輸出表名 | 必填 | - |
outputTablePartitions | 輸出表分區 | 選填 | - |
mapInstanceNum | mapper數量 | 選填 | 2 |
reduceInstanceNum | reducer數量 | 選填 | 2 |
實例
測試數據
新建數據SQL
drop table if exists window_input_table;
create table window_input_table as
select
*
from
(
select 'a' as user_id, '20151201' as dt, 2 as cnt, 32.0 as amt from dual
union all
select 'a' as user_id, '20160201' as dt, 3 as cnt, 37.0 as amt from dual
union all
select 'a' as user_id, '20160223' as dt, 1 as cnt, 22.0 as amt from dual
union all
select 'b' as user_id, '20151212' as dt, 1 as cnt, 12.0 as amt from dual
union all
select 'b' as user_id, '20160110' as dt, 2 as cnt, 30.0 as amt from dual
union all
select 'c' as user_id, '20151001' as dt, 3 as cnt, 60.0 as amt from dual
union all
select 'c' as user_id, '20151201' as dt, 2 as cnt, 39.0 as amt from dual
) tmp;
運行結果
+------------+------------+------------+------------+------------+-------------+-------------+-------------+-------------+
| 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 |
+------------+------------+------------+------------+------------+-------------+-------------+-------------+-------------+
| a | 1 | 22.0 | 1 | 22.0 | 4 | 59.0 | 6 | 91.0 |
| c | 0 | 0.0 | 0 | 0.0 | 0 | 0.0 | 2 | 39.0 |
| b | 0 | 0.0 | 0 | 0.0 | 0 | 0.0 | 3 | 42.0 |
+------------+------------+------------+------------+------------+-------------+-------------+-------------+-------------+
one-hot編碼
一 功能組件
one-hot編碼,也稱獨熱編碼,對於每一個特征,如果它有m個可能值,那麼經過獨熱編碼後,就變成了m個二元特征。並且,這些特征互斥,每次隻有一個激活。因此,數據會變成稀疏的,輸出結果也是k:v的稀疏結構。
二 PAI命令
PAI -name fe_binary_runner -project algo_public
-DinputTable=one_hot
-DbinaryCols=edu_num
-DlabelCol=income
-DbinaryReserve=false
-DbinStrategy=noDealStrategy
-DbinaryIndexTable=pai_temp_2458_23436_3
-DmodelTable=pai_temp_2458_23436_2
-DoutputTable=pai_temp_2458_23436_1
-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 |
異常檢測
一 組件功能
支持一下功能
針對連續值特征: 按箱線圖最大值和最小值檢測異常特征.
針對枚舉值特征: 按照枚舉特征的取值頻率,按照閾值過濾異常特征
二 PAI 參數
PAI -name fe_detect_runner -project algo_public
-DselectedCols="emp_var_rate,cons_price_rate,cons_conf_idx,euribor3m,nr_employed"
-Dlifecycle="28"
-DdetectStrategy="boxPlot"
-DmodelTable="pai_temp_2458_23565_2"
-DinputTable="pai_bank_data"
-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
上一篇:
數據預處理__使用手冊(new)_機器學習-阿裏雲
下一篇:
統計分析__使用手冊(new)_機器學習-阿裏雲
DescribeHealthStatus__BackendServer相關API_API 參考_負載均衡-阿裏雲
Tunnel命令操作__常用命令_基本介紹_大數據計算服務-阿裏雲
批量數據通道概要__SDK介紹_批量數據通道_大數據計算服務-阿裏雲
創建快照__快照_用戶指南_雲服務器 ECS-阿裏雲
數據表管理__數據管理手冊_用戶操作指南_大數據開發套件-阿裏雲
簽名密鑰綁定API__後端簽名密鑰相關接口_API_API 網關-阿裏雲
事件訂閱服務概覽__事件訂閱_用戶指南_雲監控-阿裏雲
新建集合__結構管理_DMS for MongoDB_用戶指南(NoSQL)_數據管理-阿裏雲
日誌服務監控__雲服務監控_用戶指南_雲監控-阿裏雲
是否可以申請一個固定號碼進行短信發送?__常見問題_短信服務-阿裏雲
相關內容
常見錯誤說明__附錄_大數據計算服務-阿裏雲
發送短信接口__API使用手冊_短信服務-阿裏雲
接口文檔__Android_安全組件教程_移動安全-阿裏雲
運營商錯誤碼(聯通)__常見問題_短信服務-阿裏雲
設置短信模板__使用手冊_短信服務-阿裏雲
OSS 權限問題及排查__常見錯誤及排除_最佳實踐_對象存儲 OSS-阿裏雲
消息通知__操作指南_批量計算-阿裏雲
設備端快速接入(MQTT)__快速開始_阿裏雲物聯網套件-阿裏雲
查詢API調用流量數據__API管理相關接口_API_API 網關-阿裏雲
使用STS訪問__JavaScript-SDK_SDK 參考_對象存儲 OSS-阿裏雲