本文为您介绍特征工程模块算子的使用,包括二值化、主成分分析、笛卡尔积、离散余弦变化、行归一化、列归一化、奇异值分解、特征哈希、one-hot 编码、Array 处理、Map 处理、特征重要性、特征筛选等。
特征工程,通常指将原始数据转化成更好地表达问题本质的特征的过程,使得将这些特征运用到预测模型中能提高对不可见数据的模型预测精度。我们在完成数据输入之后,即可利用特征工程算子对输入数据进行进一步加工处理操作,下文将为您具体介绍这些算子。
特征工程算子 | 介绍 |
|---|---|
将数值特征转换为二值特征0或1,用于对定量特征进行"是与否"的划分,剔除冗余信息 | |
通过将高维特征映射到低维正交空间实现数据降维,在保留大部分原始信息的同时减少特征数量 | |
计算两个数值型特征集合的笛卡尔乘积,生成特征间的组合结果 | |
将时域信号转换为频域表示的数字信号处理技术,主要用于数据压缩和特征提取 | |
通过对每行数据进行规范化处理,使各行数据在相同数量级上具有可比性 | |
对指定列进行标准化、最小最大化或最大绝对值化缩放,使不同量纲的数据具有可比性 | |
对数值型数据进行简化处理,通过选取较高奇异值将数据投影到低维空间 | |
通过哈希函数将高维特征映射到固定维度的向量空间,适用于大规模稀疏数据的特征压缩 | |
将离散型分类变量转换为N个二元特征(0/1),每个新特征对应原始特征的一个可能取值 | |
对数组型字段进行批量操作,支持自动检测数组格式并优化存储结构 | |
针对包含键值对结构的列进行操作,主要用于解析和处理JSON、字典等映射类型数据 | |
计算各特征对目标变量的权重,帮助识别影响最大的特征,支持7种计算方法 | |
根据特征重要性权重筛选关键特征,支持阈值、Top K和Top百分比三种筛选方式 |
将数值特征转换为二值特征 0 或 1,在数据挖掘领域,二值化的目的是为了对定量的特征进行“是与否”的划分,以剔除冗余信息。
使用示例:
示例1:客户价值分层
示例2:财务风险评估
参数说明:
参数 | 说明 |
|---|---|
筛选类型 | 选择字段范围: |
反向选择 | 默认关闭。若开启,逻辑取反(原规则 |
替换原始列 | 默认开启。开启后,直接替换原字段;否则新增列。 |
输出列后缀 | 新增列的后缀(当「替换原始列」关闭时生效)。 |
二分类阈值 | 默认为0.5。数值的分界值,≥阈值转为1,否则为0。 |
主成分分析(PCA)是一种数据降维算法,通过将高维特征映射到低维正交空间(主成分),在保留大部分原始信息的同时减少特征数量。该功能仅支持数值型且角色为"regular"的属性运算,输出结果通常需要作为其他分析模型的输入。
说明
regular:指的是那些作为常规输入特征、用于模型训练或分析的基础数据属性。这类属性是模型进行计算和学习的核心依据,不承担特殊功能(如标识样本的 ID、仅用于筛选数据的过滤条件等)。
使用示例:
示例1:客户信用评分降维
示例2:商品销售数据可视化
参数说明:
参数 | 说明 |
|---|---|
特征列 | 参与 PCA 分析的数值型特征列,支持多选。 |
降维方式 | 确定降维程方式和降维程度。
|
笛卡尔乘积是指两个集合 X 和 Y 的笛卡尓积(Cartesian product),又称直积,表示为 X × Y,第一个对象是 X 的成员而第二个对象是 Y 的所有可能有序对的其中一个成员。
使用示例:
示例1:产品规格组合生成
原始数据表(products)
product_id | length | width | height |
|---|---|---|---|
1001 | 30 | 20 | 10 |
1002 | 40 | 25 | 15 |
参数设置:
lengthwidth输出结果:
product_id | length | width | height | interaction result |
|---|---|---|---|---|
1001 | 30 | 20 | 10 | 600 |
1002 | 40 | 25 | 15 | 1000 |
参数说明:
参数 | 说明 |
|---|---|
左操作数所选列 | 笛卡尔积的第一个维度列,需为数值型,可多选。 |
右操作数所选列 | 笛卡尔积的第二个维度列,需为数值型,可多选。 |
注意
「左操作数所选列」和「右操作数所选列」不能存在重复字段。
离散余弦变换(Discrete Cosine Transform,DCT)是一种将时域信号转换为频域表示的数字信号处理技术。该功能通过数学变换,将长度为N的实值序列转换为相同长度的频域系数序列,主要用于数据压缩和特征提取。
说明
核心概念说明:
使用示例:
示例1:音频信号特征提取
业务场景:从音频波形信号中提取频域特征,用于语音识别或压缩。
参数设置:
audio_waveform(音频采样点序列)false(正向DCT,时域→频域)feature_transformed(自动生成频域系数)输出效果:
audio_waveform (原始信号) | feature_transformed (DCT系数) |
|---|---|
0.1 | 12.8 |
0.5 | 5.3 |
-0.2 | -1.2 |
... | ... |
参数说明:
参数 | 说明 |
|---|---|
特征列 | 用来训练的特征,可多选。 |
反向 | 用于控制变化方向: |
行归一化是一种数据标准化方法,通过对每行数据进行规范化处理,使得各行数据在相同数量级上具有可比性,便于后续的综合分析和建模。
使用示例:
示例1:用户行为数据归一化
原始数据:
用户ID | 点击次数 | 浏览时长(秒) | 购买金额(元) |
|---|---|---|---|
1001 | 20 | 300 | 500 |
1002 | 50 | 600 | 200 |
参数设置:
处理后结果:
用户ID | feature_transformed(数组格式) |
|---|---|
1001 | [0.036, 0.539, 0.842] |
1002 | [0.078, 0.937, 0.312] |
参数说明:
参数 | 说明 |
|---|---|
特征列 | 用来训练的特征,此处指需要归一化的数值型字段,可多选。 |
p |
|
列归一化是一种数据预处理方法,通过对指定列进行缩放处理,使不同量纲的数据具有可比性,支持标准化(standard)、最小最大化(min-max)和最大绝对值化(max-abs)三种缩放方式。暂时不支持 inplace 修改,生成的结果是一列数组,若想拆分成单独的列,需要在该算子后增加一个向量分解器算子。
说明
inplace 修改:指的是直接在原数据对象上进行修改,而不创建新的副本。简单来说,当对数据执行某种操作(比如修改数值、删除元素、转换格式等)时,如果采用 inplace 方式,操作会直接作用于原来的数据,操作完成后,原数据会变成修改后的样子,不会额外生成一个新的数据对象来存储结果。
使用示例:
示例1:标准化(standard)缩放
计算公式:(x - 均值5000)/标准差2449.49
用户ID | 原始销售额 | 标准化结果(std_scale) |
|---|---|---|
1001 | 2000 | -1.2247 |
1002 | 5000 | 0 |
1003 | 8000 | 1.2247 |
示例2:最小最大化(min-max)缩放
计算公式:(x - min18)/(max52 - min18)
用户ID | 原始年龄 | 最小最大化结果(std_scale) |
|---|---|---|
1001 | 18 | 0.0 |
1002 | 35 | 0.5 |
1003 | 52 | 1.0 |
示例3:最大绝对值化(max-abs)缩放示例
计算公式:x / max(abs(800), abs(-400))
用户ID | 原始利润 | 最大绝对值化结果(std_scale) |
|---|---|---|
1001 | -400 | -0.5 |
1002 | 200 | 0.25 |
1003 | 800 | 1.0 |
参数说明:
参数 | 说明 |
|---|---|
特征列 | 用来训练的特征,此处指选择需要归一化的数值列,可多选。 |
缩放类型 | 选择列归一化方法。
|
使用标准差 | 默认开启。standard 方法专用,是否使用标准差。 |
使用平均值 | 默认开启。standard 方法专用,是否使用平均值。 |
最小值 | 默认为0。min-max 方法专用,指定最小值。 |
最大值 | 默认为1。min-max 方法专用,指定最大值。 |
奇异值分解(SVD),是数据降维的一种方式,它可以对数值型数据进行简化处理,通过选取较高的奇异值将数据投影到低维空间。该功能仅支持数值型且角色为"regular"的属性运算,输出结果通常需要作为其他分析模型的输入。
说明
regular:指的是那些作为常规输入特征、用于模型训练或分析的基础数据属性。这类属性是模型进行计算和学习的核心依据,不承担特殊功能(如标识样本的 ID、仅用于筛选数据的过滤条件等)。
使用示例:
示例1:金融风控特征降维
示例2:零售用户画像构建
参数说明:
参数 | 说明 |
|---|---|
特征列 | 用来训练的特征,此处指参与分解的数值型特征,可多选。 |
降维方式 | 确定降维程方式和降维程度。
|
特征哈希(Hashing Trick)是一种快速降维技术,通过哈希函数将高维特征(如文本词频、类别型变量)映射到固定维度的向量空间。适用于大规模稀疏数据的特征压缩,避免传统 One-Hot 编码的维度爆炸问题。
使用示例:
示例1:文本词频降维
singleword_counts(存储词频的字典列,如{"apple":3, "banana":1})false{"apple":3, "banana":1, ...}(10,000+个词)[0.0, 1.2, 0.0, ..., -0.8](512维向量)示例2:用户行为特征压缩
subset["click_ids", "view_ids"]falseclick_ids=[123,456,...], view_ids=[789,...][0.5, 0.0, -1.3, ..., 0.7](256维向量)参数说明:
参数 | 说明 |
|---|---|
筛选类型 | 选择字段范围: |
反向选择 | 若开启,则保留未选中的列。 |
特征数量 | 降维后的特征维度,默认为 1024,建议设为2的幂次方(如256/512)。 |
One-hot 编码是一种将离散型分类变量转换为机器学习算法更易理解的形式的编码方法。它将具有N个不同取值的特征扩展为N个二元特征(0/1),每个新特征对应原始特征的一个可能取值。
使用示例:
示例1:颜色特征编码
原始数据:
product_id | color |
|---|---|
1001 | red |
1002 | blue |
1003 | green |
参数设置:
处理后结果:
product_id | color |
|---|---|
1001 | [1, 0, 0] |
1002 | [0, 1, 0] |
1003 | [0, 0, 1] |
示例2:多列同时编码
原始数据:
user_id | gender | age_group |
|---|---|---|
2001 | male | young |
2002 | female | middle |
2003 | male | old |
参数设置:
处理后结果:
user_id | gender | age_group |
|---|---|---|
2001 | [1, 0] | [1, 0, 0] |
2002 | [0, 1] | [0, 1, 0] |
2003 | [1, 0] | [0, 0, 1] |
参数说明:
参数 | 说明 |
|---|---|
列 | 用来训练的特征,此处指需要One-hot 编码的文本型字段,可多选。 |
Array 处理是对数组型字段(如 [1.2, 0.5, -0.3] )进行批量操作的算子,核心功能是将数组类型转换为 one-hot 编码类型。
使用示例:
示例1:数组转 one-hot 编码
原始数据:
ID | raw_vector |
|---|---|
1 | [1, 2, 3] |
2 | [2, 3] |
3 | [3] |
参数设置:
处理后:
ID | features |
|---|---|
1 | [1, 1, 1] |
2 | [0, 1, 1] |
3 | [0, 0, 1] |
参数说明:
参数 | 说明 |
|---|---|
列 | 选择包含数组的列。 |
采样数据行数 | 用于分析数组中所有可能取值的样本量,默认 200000。 |
Map 处理是搭配机器学习算法使用的算子,针对map<string, double>类型的特征字段进行操作,核心功能是将map<string, double>类型转换为 one-hot 编码的 array 类型。系统会先采样指定行数分析所有可能的 key,再对全量数据进行统一处理。
使用示例:
示例1:Map 数据转 one-hot 编码
原始数据表
order_id | order_detail (map<string, double> 类型) |
|---|---|
10001 | {"price":299.0, "items":2.0} |
10002 | {"price":599.0, "discount":0.8} |
参数设置:
处理结果表:
order_id | features |
|---|---|
10001 | [1, 1, 0] |
10002 | [1, 0, 1] |
参数说明:
参数 | 说明 |
|---|---|
列 | 选择包含 |
采样数据行数 | 用于分析 map 中所有可能 key 的样本量,默认 200000。 |
特征重要性用于计算数据集中各特征的权重,帮助识别对目标变量影响最大的特征。支持多种计算方法,适用于向量或单列特征。对于向量列,输出格式为原列名__索引(索引从0开始)。
使用示例:
示例1:房屋价格预测
原始数据表(house_data)
house_id | area | rooms | location_score | price_label |
|---|---|---|---|---|
1001 | 85 | 3 | [0.7,0.2] | 1 |
1002 | 60 | 2 | [0.5,0.3] | 0 |
1003 | 120 | 4 | [0.9,0.1] | 1 |
参数设置
["area", "rooms", "location_score"]price_labelgini(基尼系数)处理后结果表
column | weight |
|---|---|
area | 0.78 |
rooms | 0.65 |
location_score__0 | 0.42 |
location_score__1 | 0.15 |
示例2:信用卡违约分析
原始数据表(credit_data)
user_id | income | debt_ratio | payment_history | default_flag |
|---|---|---|---|---|
2001 | 50000 | 0.35 | [1,1,0,1] | 0 |
2002 | 32000 | 0.72 | [0,1,0,0] | 1 |
参数设置
["income", "debt_ratio", "payment_history"]default_flaginfo_gain_ratio(信息增益比)处理后结果表
column | weight |
|---|---|
debt_ratio | 0.91 |
payment_history__0 | 0.47 |
payment_history__1 | 0.32 |
income | 0.28 |
参数说明:
参数 | 说明 |
|---|---|
特征列 | 用来训练的特征,此处指需要计算权重的特征,可多选。 |
标签列 | 分类训练的依据,仅单选。 |
特征重要性计算方法 |
|
特征筛选通过计算各特征对目标变量的重要性权重,帮助用户识别关键特征并剔除冗余特征。支持数值型和向量型特征,自动处理向量列的展开(格式:原列名__索引)。适用于分类和回归任务的前期特征选择。
使用示例:
示例1:金融风控特征筛选
原始数据表(loan_risk)
user_id | income | debt_ratio | behavior_scores | is_default |
|---|---|---|---|---|
1001 | 50000 | 0.3 | [0.8, 0.2, 0.5] | 0 |
1002 | 32000 | 0.6 | [0.6, 0.3, 0.1] | 1 |
参数设置
["income", "debt_ratio", "behavior_scores"]is_defaultinfo_gain_ratio(信息增益比)处理后结果
特征名称 | 重要性得分 | 是否保留 |
|---|---|---|
debt_ratio | 0.85 | ✓ |
behavior_scores__0 | 0.42 | ✓ |
income | 0.25 | ✗ |
behavior_scores__1 | 0.18 | ✗ |
behavior_scores__2 | 0.10 | ✗ |
最终保留特征:debt_ratio, behavior_scores__0
示例2:电商推荐特征筛选
原始数据表(user_behavior)
user_id | click_count | purchase_history | user_group |
|---|---|---|---|
2001 | 20 | [1, 0, 1, 1, 0] | A |
2002 | 5 | [0, 1, 0, 0, 1] | B |
参数设置
["click_count", "purchase_history"]user_groupgini(基尼系数)处理后结果
特征名称 | 重要性得分 | 是否保留 |
|---|---|---|
purchase_history__0 | 0.62 | ✓ |
purchase_history__3 | 0.55 | ✓ |
click_count | 0.38 | ✗ |
purchase_history__1 | 0.22 | ✗ |
最终保留特征:purchase_history__0, purchase_history__3
参数说明:
参数 | 说明 |
|---|---|
特征列 | 用来训练的特征,此处指需要计算权重的特征,支持多选。 |
标签列 | 分类训练的依据,仅单选。 |
特征重要性计算方法 |
|
权重关系选择 |
|