特征平滑组件可以将输入特征中包含异常的数据平滑到一定区间,支持稀疏和稠密数据格式。
背景信息
平滑方法如下:
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