通过分箱组件可以进行特征离散化,即将连续的数据进行分段,使其变为多个离散化区间。分箱组件支持等频分箱、等宽分箱及自动分箱。
配置组件
您可以使用以下任意一种方式,配置分箱组件参数。
方式一:可视化方式
在Designer工作流页面配置组件参数。
|
页签 |
参数 |
描述 |
|
字段设置 |
特征列 |
支持STRING、BIGINT及DOUBLE类型。 |
|
标签列 |
仅支持二分类。 |
|
|
正例值 |
仅当标签列存在时才生效。 |
|
|
选择分箱的参数来源 |
参数来源支持“参数设置”中的参数和手动分箱或自定义Json。 |
|
|
是否保留没有在“特征列”中选择的字段 |
使用自定义分箱时,如果该参数选择是,则未在特征列中选择的字段会原样保留,否则会删除未选择的字段。 |
|
|
上传分箱和约束Json |
当选择分箱的参数来源取值为手动分箱或自定义Json时,该参数生效。 |
|
|
参数设置 |
分箱个数 |
配置为10,表示将连续特征离散化至10个区间中。 |
|
自定义列分箱个数 |
可以指定单个或多个字段的分箱数,会覆写总的分箱个数。如果自定义的列不在字段选择中,则多出的列也会进行计算。例如,字段选择为col0和col1, 自定义分箱为col0:3,col2:5,当分箱个数为10时,那么按照col0:3,col1:10,col2:5进行计算。 取值格式为:字段名1:分箱个数, 字段名2:分箱个数。 |
|
|
自定义离散值个数阈值 |
格式为col0:3。 |
|
|
区间选择 |
支持左开右闭或左闭右开区间。 |
|
|
分箱方式 |
支持等频、等宽及自动分箱。 |
|
|
离散值个数阈值 |
如果小于该值,则分到“其它”分箱。 |
|
|
执行调优 |
核心数 |
默认系统自动分配。 |
|
每个核分配的内存数 |
默认系统自动分配。 |
方式二:PAI命令方式
使用PAI命令方式,配置该组件参数。您可以使用SQL脚本组件进行PAI命令调用,详情请参见SQL脚本。
PAI -name binning
-project algo_public
-DinputTableName=input
-DoutputTableName=output
|
参数 |
描述 |
是否必选 |
默认值 |
|
inputTableName |
输入表的名称。 |
是 |
无 |
|
outputTableName |
输出表的名称。 |
是 |
无 |
|
selectedColNames |
输入表选择分箱的列。 |
否 |
除Label外的其他列,如果无Label,则选择全部。 |
|
labelColName |
Label所在的列。 |
否 |
无 |
|
validTableName |
表示binningMethod为auto时输入的验证表名。在auto模式下,该参数为必选。 |
否 |
空 |
|
validTablePartitions |
验证表选择的分区。 |
否 |
全表 |
|
inputTablePartitions |
输入表选择的分区。 |
否 |
全表 |
|
inputBinTableName |
输入的分箱表。 |
否 |
无 |
|
selectedBinColNames |
分箱表选择的列。 |
否 |
空 |
|
positiveLabel |
输出正样本的分类。 |
否 |
1 |
|
nDivide |
分箱的个数,取值为正整数。 |
否 |
10 |
|
colsNDivide |
自定义列的分箱个数,例如col0:3,col2:5。如果colsNDivide中选中的列不在selectedColNames中,则多出的列也会进行计算。例如,selectedColNames为col0,col1,colsNDivide为col0:3,col2:5,nDivide为10时,则按照col0:3,col1:10,col2:5进行计算。 |
否 |
空 |
|
isLeftOpen |
选择区间为左开右闭或左闭右开,取值包括为:
|
否 |
true |
|
stringThreshold |
离散值为其他分箱的阈值。 |
否 |
无 |
|
colsStringThreshold |
自定义列的阈值,同colsNDivide。 |
否 |
空 |
|
binningMethod |
分箱类型,取值包括:
|
否 |
quantile |
|
lifecycle |
输出表的生命周期,取值为正整数。 |
否 |
无 |
|
coreNum |
核心数,取值为正整数。 |
否 |
系统自动计算 |
|
memSizePerCore |
内存数,取值为正整数。 |
否 |
系统自动计算 |
分箱约束功能需要与评分卡训练组件配合使用。在评分卡训练过程中通过分箱进行特征工程,将特征离散化生成Dummy变量,并对训练过程中的每个Dummy变量的权重增加一定约束。各个约束项的含义如下:
-
顺序升序约束:该特征的各个Dummy变量按照Index从小到大添加权重上升的约束,即Index越大,权重越大。
-
顺序降序约束:该特征的各个Dummy变量按照Index从小到大添加权重下降的约束,即Index越大,权重越小。
-
相等权重值:该特征两个Dummy变量的权重值相等的约束。
-
权重值为0:该特征某个Dummy变量的权重值为0的约束。
-
等于固定权重值:该特征某个Dummy变量的权重值等于固定浮点数值的约束。
-
WOE值顺序约束:该特征各个Dummy变量按照WOE值从小到大添加权重上升的约束,即WOE值越大,权重值越大。
结果演示
-
使用分箱组件的工作流运行结束后,右键单击画布中的分箱组件,在快捷菜单,单击我要分箱。
-
在变量列表页面,您可以查看每个变量的分箱数、类型、IV等信息。
-
单击变量的名称(以f1为例),可以打开f1-分箱详情页面。
您可以在该页面对分箱进行合并、拆分,也可以对分箱增加约束。
说明约束仅对后续的评分卡训练模块有效,如果仅使用分箱,不使用评分卡训练,则可以忽略约束项。
页面支持列表和图表两种查看方式。列表展示每个分箱的Index、Label(分箱区间,如(-inf,4.8])、Constrain(约束操作符和值)、WOE、Number(总数、正例数、负例数)及Rate(比例)。右侧自定义分箱面板支持按数值类型指定分箱、设置边界范围,以及配置约束类型,包括顺序升序(< bin)、顺序降序(> bin)、相等权重值(= bin)、权重值为0(= 0)、等于固定权重值(= weight)及WOE值顺序约束。