分箱
通過(guò)分箱組件可以進(jìn)行特征離散化,即將連續(xù)的數(shù)據(jù)進(jìn)行分段,使其變?yōu)槎鄠€(gè)離散化區(qū)間。分箱組件支持等頻分箱、等寬分箱及自動(dòng)分箱。
配置組件
您可以使用以下任意一種方式,配置分箱組件參數(shù)。
方式一:可視化方式
在Designer工作流頁(yè)面配置組件參數(shù)。
頁(yè)簽 | 參數(shù) | 描述 |
字段設(shè)置 | 特征列 | 支持STRING、BIGINT及DOUBLE類(lèi)型。 |
標(biāo)簽列 | 僅支持二分類(lèi)。 | |
正例值 | 僅當(dāng)標(biāo)簽列存在時(shí)才生效。 | |
選擇分箱的參數(shù)來(lái)源 | 參數(shù)來(lái)源支持“參數(shù)設(shè)置”中的參數(shù)和手動(dòng)分箱或自定義Json。 | |
是否保留沒(méi)有在“特征列”中選擇的字段 | 使用自定義分箱時(shí),如果該參數(shù)選擇是,則未在特征列中選擇的字段會(huì)原樣保留,否則會(huì)刪除未選擇的字段。 | |
上傳分箱和約束Json | 當(dāng)選擇分箱的參數(shù)來(lái)源取值為手動(dòng)分箱或自定義Json時(shí),該參數(shù)生效。 | |
參數(shù)設(shè)置 | 分箱個(gè)數(shù) | 配置為10,表示將連續(xù)特征離散化至10個(gè)區(qū)間中。 |
自定義列分箱個(gè)數(shù) | 可以指定單個(gè)或多個(gè)字段的分箱數(shù),會(huì)覆寫(xiě)總的分箱個(gè)數(shù)。如果自定義的列不在字段選擇中,則多出的列也會(huì)進(jìn)行計(jì)算。例如,字段選擇為col0和col1, 自定義分箱為col0:3,col2:5,當(dāng)分箱個(gè)數(shù)為10時(shí),那么按照col0:3,col1:10,col2:5進(jìn)行計(jì)算。 取值格式為:字段名1:分箱個(gè)數(shù), 字段名2:分箱個(gè)數(shù)。 | |
自定義離散值個(gè)數(shù)閾值 | 格式為col0:3。 | |
區(qū)間選擇 | 支持左開(kāi)右閉或左閉右開(kāi)區(qū)間。 | |
分箱方式 | 支持等頻、等寬及自動(dòng)分箱。 | |
離散值個(gè)數(shù)閾值 | 如果小于該值,則分到“其它”分箱。 | |
執(zhí)行調(diào)優(yōu) | 核心數(shù) | 默認(rèn)系統(tǒng)自動(dòng)分配。 |
每個(gè)核分配的內(nèi)存數(shù) | 默認(rèn)系統(tǒng)自動(dòng)分配。 |
方式二:PAI命令方式
使用PAI命令方式,配置該組件參數(shù)。您可以使用SQL腳本組件進(jìn)行PAI命令調(diào)用,詳情請(qǐng)參見(jiàn)SQL腳本。
PAI -name binning
-project algo_public
-DinputTableName=input
-DoutputTableName=output
參數(shù) | 描述 | 是否必選 | 默認(rèn)值 |
inputTableName | 輸入表的名稱(chēng)。 | 是 | 無(wú) |
outputTableName | 輸出表的名稱(chēng)。 | 是 | 無(wú) |
selectedColNames | 輸入表選擇分箱的列。 | 否 | 除Label外的其他列,如果無(wú)Label,則選擇全部。 |
labelColName | Label所在的列。 | 否 | 無(wú) |
validTableName | 表示binningMethod為auto時(shí)輸入的驗(yàn)證表名。在auto模式下,該參數(shù)為必選。 | 否 | 空 |
validTablePartitions | 驗(yàn)證表選擇的分區(qū)。 | 否 | 全表 |
inputTablePartitions | 輸入表選擇的分區(qū)。 | 否 | 全表 |
inputBinTableName | 輸入的分箱表。 | 否 | 無(wú) |
selectedBinColNames | 分箱表選擇的列。 | 否 | 空 |
positiveLabel | 輸出正樣本的分類(lèi)。 | 否 | 1 |
nDivide | 分箱的個(gè)數(shù),取值為正整數(shù)。 | 否 | 10 |
colsNDivide | 自定義列的分箱個(gè)數(shù),例如col0:3,col2:5。如果colsNDivide中選中的列不在selectedColNames中,則多出的列也會(huì)進(jìn)行計(jì)算。例如,selectedColNames為col0,col1,colsNDivide為col0:3,col2:5,nDivide為10時(shí),則按照col0:3,col1:10,col2:5進(jìn)行計(jì)算。 | 否 | 空 |
isLeftOpen | 選擇區(qū)間為左開(kāi)右閉或左閉右開(kāi),取值包括為:
| 否 | true |
stringThreshold | 離散值為其他分箱的閾值。 | 否 | 無(wú) |
colsStringThreshold | 自定義列的閾值,同colsNDivide。 | 否 | 空 |
binningMethod | 分箱類(lèi)型,取值包括:
| 否 | quantile |
lifecycle | 輸出表的生命周期,取值為正整數(shù)。 | 否 | 無(wú) |
coreNum | 核心數(shù),取值為正整數(shù)。 | 否 | 系統(tǒng)自動(dòng)計(jì)算 |
memSizePerCore | 內(nèi)存數(shù),取值為正整數(shù)。 | 否 | 系統(tǒng)自動(dòng)計(jì)算 |
分箱約束功能需要與評(píng)分卡訓(xùn)練組件配合使用。在評(píng)分卡訓(xùn)練過(guò)程中通過(guò)分箱進(jìn)行特征工程,將特征離散化生成Dummy變量,并對(duì)訓(xùn)練過(guò)程中的每個(gè)Dummy變量的權(quán)重增加一定約束。各個(gè)約束項(xiàng)的含義如下:
順序升序約束:該特征的各個(gè)Dummy變量按照Index從小到大添加權(quán)重上升的約束,即Index越大,權(quán)重越大。
順序降序約束:該特征的各個(gè)Dummy變量按照Index從小到大添加權(quán)重下降的約束,即Index越大,權(quán)重越小。
相等權(quán)重值:該特征兩個(gè)Dummy變量的權(quán)重值相等的約束。
權(quán)重值為0:該特征某個(gè)Dummy變量的權(quán)重值為0的約束。
等于固定權(quán)重值:該特征某個(gè)Dummy變量的權(quán)重值等于固定浮點(diǎn)數(shù)值的約束。
WOE值順序約束:該特征各個(gè)Dummy變量按照WOE值從小到大添加權(quán)重上升的約束,即WOE值越大,權(quán)重值越大。
結(jié)果演示
使用分箱組件的工作流運(yùn)行結(jié)束后,右鍵單擊畫(huà)布中的分箱組件,在快捷菜單,單擊我要分箱。
在變量列表頁(yè)面,您可以查看每個(gè)變量的分箱數(shù)、類(lèi)型、IV等信息,具體如下圖所示。
單擊變量的名稱(chēng)(以f1為例),可以打開(kāi)f1-分箱詳情頁(yè)面,該頁(yè)面詳情如下圖所示。
您可以在該頁(yè)面對(duì)分箱進(jìn)行合并、拆分,也可以對(duì)分箱增加約束。
說(shuō)明約束僅對(duì)后續(xù)的評(píng)分卡訓(xùn)練模塊有效,如果僅使用分箱,不使用評(píng)分卡訓(xùn)練,則可以忽略約束項(xiàng)。