通过数据转换模块可以对数据进行归一化、离散化、Index化或WOE转换。
配置组件
您可以使用以下任意一种方式,配置数据转换模块组件参数。
方式一:可视化方式
在Designer工作流页面配置组件参数。
页签 | 参数 | 描述 |
字段设置 | 输入表选择的特征列 | 输入的特征列,默认选择全表。 |
不进行转换的数据列 | 选中的列会原样输出,可以在此指定Label。 | |
数据转换的类型 | 支持的转换类型包括归一化、离散化、转换为WOE值及Index。 | |
默认WOE值 | 仅当数据转换的类型取值为转换为WOE值时,该参数生效。 如果配置了该参数,当样本值落入无WOE值的分箱时,使用该值进行替换。如果未配置该参数,则当样本值落入无WOE值的分箱时,算法报错。 | |
执行调优 | 核心数 | 使用的CPU Core数量,默认系统自动分配。 |
每个核内存数 | 每个CPU Core所使用的内存大小,默认系统自动分配。 |
方式二:PAI命令方式
使用PAI命令方式,配置该组件参数。您可以使用SQL脚本组件进行PAI命令调用,详情请参见SQL脚本。
PAI -name data_transform
-project algo_public
-DinputFeatureTableName=feature_table
-DinputBinTableName=bin_table
-DoutputTableName=output_table
-DmetaColNames=label
-DfeatureColNames=feaname1,feaname2
参数 | 描述 | 是否必选 | 默认值 |
inputFeatureTableName | 输入特征数据表。 | 是 | 无 |
inputBinTableName | 输入分箱结果表。 | 是 | 无 |
inputFeatureTablePartitions | 输入特征表选择的分区。 | 否 | 全表 |
outputTableName | 输出表。 | 是 | 无 |
featureColNames | 输入表选择的特征列。 | 否 | 所有列 |
metaColNames | 不进行转换的数据列,选中的列会原样输出。可以在此列中指定Label及sample_id等。 | 否 | 无 |
transformType | 数据转换的类型,取值包括:
| 否 | dummy |
itemDelimiter | 特征分隔符,仅在进行离散化时有效。 | 否 | 英文逗号(,) |
kvDelimiter | KV分隔符,仅在进行离散化时有效。 | 否 | 英文冒号(:) |
lifecycle | 输出表的生命周期。 | 否 | 无 |
coreNum | 使用的CPU Core数量。 | 否 | 系统自动计算 |
memSizePerCore | 每个CPU Core所使用的内存大小,单位为MB。 | 否 | 系统自动计算 |
归一化是指根据输入的分箱信息,将变量值转换为0~1之间,缺失值填充为0。具体的算法如下。
if feature_raw_value == null or feature_raw_value == 0 then
feature_norm_value = 0.0
else
bin_index = FindBin(bin_table, feature_raw_value)
bin_width = round(1.0 / bin_count * 1000) / 1000.0
feature_norm_value = 1.0 - (bin_count - bin_index - 1) * bin_width
通过数据转换模块进行不同类型的数据转换,其输出格式不同:
归一化和WOE转换的输出为普通表。
离散化将数据转换成Dummy变量时,输出为KV格式的表,生成的变量格式为${feaname}]\_bin\_${bin_id}。以sns变量为例,生成的变量如下:
如果sns落入第二个桶中,则生成的变量为[sns]_bin_2。
如果sns为空,则落入空桶,生成的变量为[sns]_bin_null。
如果sns不为空,且未落入任何一个已经定义的桶中,则落入else桶,生成的变量为[sns]_bin_else。