特徵平滑組件可以將輸入特徵中包含異常的資料平滑到一定區間,支援稀疏和稠密資料格式。
背景資訊
平滑方法如下:
ZScore平滑
如果特徵分布遵循常態分佈,則噪音一般集中在-3×alpha和3×alpha之外,ZScore是將該範圍的資料平滑到[-3×alpha,3×alpha]之間。
例如,某個特徵遵循常態分佈,均值為0,標準差為3。因此,-10的特徵值會被識別為異常而修正為-3×3+0,即為-9。同理10會被修正為3×3+0,即為9。
百分位平滑
用於將分布不在[minPer, maxPer]的資料平滑到minPer和maxPer這兩個分位點。
例如,age特徵取值0~200,設定minPer為0,maxPer為50%,則不在0~100的特徵取值都會被修正成0或100。
閾值平滑
用於將分布不在[minThresh, maxThresh]的資料平滑到minThresh和maxThresh這兩個資料點。
例如,age特徵取值0~200,設定minThresh為10,maxThresh為80,則不在0~80的特徵取值都會被修正成0或80。
盒狀圖平滑
通過資料的4分位線構造光滑的上下界閾值,構造方式為:minThresh=q1-1.5(q3-q1),maxThresh=q3+1.5(q3-q1)。
特徵平滑演算法組件只是將異常取值的特徵值修正為正常值,本身不過濾或刪除任何記錄,輸入資料維度和條數均不變。
組件配置
您可以使用以下任意一種方式,配置特徵異常平滑組件參數。
方式一:可視化方式
在Designer工作流程頁面配置組件參數。
頁簽 | 參數 | 描述 |
欄位設定 | 選擇平滑特徵列 | 需要平滑處理的特徵列。 |
標籤列 | 如果您設定了該欄位,則可以通過可視化方式查看特徵到目標變數的x-y分布長條圖。 | |
參數設定 | 平滑方法 | 平滑方法如下:
|
置信範圍 | 置信水平。當平滑方法為ZScore平滑時需要配置該參數。 | |
閾值下限 | 閾值最小值,預設為-9999,表示不設定。 當平滑方法為閾值平滑時需要配置該參數。 | |
閾值上限 | 閾值最大值,預設為-9999,表示不設定。 當平滑方法為閾值平滑時需要配置該參數。 | |
百分位下限 | 最低百分位。 當平滑方法為百分位平滑或盒狀圖平滑時需要配置該參數。 | |
百分位上限 | 最高百分位。 當平滑方法為百分位平滑或盒狀圖平滑時需要配置該參數。 |
方式二:PAI命令方式
使用PAI命令方式,配置該組件參數。您可以使用SQL指令碼組件進行PAI命令調用,詳情請參見SQL指令碼。
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 | 否 | 輸入表中指定參與訓練的分區,格式為 如果是多級分區,格式為 如果指定多個分區,則需要使用,隔開。 | 輸入表的所有分區。 |
outputTable | 是 | 平滑後的結果表。 | 無 |
labelCol | 否 | 標籤欄位。如果您設定了該欄位,則可以通過可視化方式查看特徵到目標變數的x-y分布長條圖。 | 預設為空白 |
categoryCols | 否 | 將勾選的欄位作為枚舉特徵處理。 | 預設為空白 |
softenCols | 是 | 選擇需要平滑的特徵。如果特徵為稀疏特徵時,系統會自動化篩選。 | 無 |
softenMethod | 否 | 平滑方法如下:
| ZScore |
softenTopN | 否 | 當未勾選softenCols參數時,系統自動挑選TopN個需要平滑的特徵。取值為正整數。 | 10 |
cl | 否 | 置信水平。當平滑方法為ZScore平滑時需要配置該參數。 | 10 |
minPer | 否 | 最低百分位。當平滑方法為百分位平滑或盒狀圖平滑時需要配置該參數。 | 0.0 |
maxPer | 否 | 最高百分位。當平滑方法為百分位平滑或盒狀圖平滑時需要配置該參數。 | 1.0 |
minThresh | 否 | 閾值最小值。當平滑方法為閾值平滑時需要配置該參數。 | -9999 |
maxThresh | 否 | 閾值最大值。當平滑方法為閾值平滑時需要配置該參數。 | -9999 |
isSparse | 否 | 是否為k:v的稀疏特徵,取值如下:
預設為稠密資料。 | false |
itemSpliter | 否 | 稀疏特徵item的分隔字元。 | , |
kvSpliter | 否 | 稀疏特徵item的分隔字元。 | : |
lifecycle | 否 | 結果表生命週期。取值為正整數。 | 7 |
coreNum | 否 | 節點個數。與memSizePerCore參數配對使用,取值為[1, 9999]的正整數。 | 系統自動分配。 |
memSizePerCore | 否 | 單個節點記憶體大小,單位為兆。取值為[2048, 64 *1024]的正整數。 | 系統自動分配。 |
樣本
輸入資料
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