科普:此“特征”非彼“特征”
机器学习中的特征工程是提升模型性能的关键环节,根据特征的生成方式和复杂度,可将其分为以下三个层次。以下是结构化分类及说明:
一、原始特征(初级)
1. 定义与来源
- 直接提取:直接来自原始数据的字段,未经任何加工。
- 示例:
- 人口统计:性别、年龄、学历
- 交易数据:消费金额、贷款期限
- 设备信息:操作系统、IP地址
2. 特点
- 优点:
- 易获取,无需复杂计算
- 可解释性强(业务人员直接理解)
- 缺点:
- 信息可能冗余(如“性别”和“性别编码”)
- 可能无法捕捉复杂关系(如非线性关联)
3. 应用场景
- 基础模型训练(如逻辑回归)
- 业务规则制定(如“年龄<18岁拒绝贷款”)
二、业务公式生成特征(中级)
1. 定义与来源
- 基于领域知识:通过业务逻辑或统计公式加工原始特征。
- 生成方式:
- 比率计算:收入负债率=负债/收入
- 时间窗口统计:近30天消费频次
- 业务规则:信用评分分段(如600-700分)
2. 特点
- 优点:
- 有效捕捉业务逻辑(如RFM模型中的“最近消费时间”)
- 提升特征区分度(如“收入负债率”比单独收入更敏感)
- 缺点:
- 依赖人工经验,难以自动化
- 可能引入主观偏差(如分箱阈值的选择)
3. 应用场景
- 风控规则设计(如“贷款金额/月收入>5倍拒绝”)
- 推荐系统冷启动(基于用户属性标签)
三、算法生成特征(高级)
1. 定义与来源
- 自动化生成:通过算法或模型从原始数据中挖掘新特征。
- 分类及示例:
生成方法 | 特征类型 | 案例 |
---|---|---|
统计变换 | 衍生统计量 | 年龄分箱、收入分位数 |
特征组合 | 交互特征 | 性别×学历(如“女性+硕士”) |
降维算法 | 主成分(PCA)、潜在语义(LDA) | 将100维特征压缩为10维主成分 |
树模型 | 叶子节点特征 | XGBoost生成的决策路径特征 |
深度学习 | 嵌入向量 | NLP中的词向量、图像中的CNN特征 |
2. 特点
- 优点:
- 自动化发现隐藏模式(如树模型自动捕捉非线性关系)
- 适合高维数据(如主成分分析降维)
- 缺点:
- 可解释性差(如深度学习特征)
- 计算成本高(需复杂算法训练)
3. 应用场景
- 复杂模型(如神经网络、GBDT)
- 高维数据挖掘(如基因数据、图像识别)
四、特征层次对比与组合策略
层次 | 生成方式 | 可解释性 | 自动化程度 | 典型工具 |
---|---|---|---|---|
原始特征 | 直接提取 | 高 | 低 | SQL、Pandas |
业务公式 | 人工定义公式 | 中高 | 中 | Excel、Python脚本 |
算法生成 | 模型自动生成 | 低 | 高 | Scikit-learn、TensorFlow、算法库 |
- 趋势:随着AI技术发展,算法生成特征的占比逐渐增加,但业务特征仍不可替代(如风控中的反欺诈规则)。
组合策略
- 原始特征打底:作为模型输入的基础信息。
- 业务特征增强:融入业务逻辑,提升模型贴合度。
- 算法特征突破:捕捉非线性关系或高维模式。
案例:
在银行风控中,原始特征(年龄、收入)→ 业务特征(收入负债率)→ 算法特征(XGBoost生成的交互特征)组合使用,可同时兼顾规则性和模型泛化能力。
五、可混合使用么
高级特征是由若干初级特征输入算法中产生的,若再将它们同时输入到模型中时,则某些初级特征就重复使用了,这样做有问题么?
在机器学习中,不同层次的特征(原始、业务公式生成、算法生成)可以混合使用,但需注意特征冗余和模型训练的效率问题。以下是具体分析及应对策略:
1. 互补性
- 原始特征提供基础信息(如年龄、性别),确保模型理解基础逻辑。
- 业务特征融入领域知识(如收入负债率),增强模型对业务规则的贴合度。
- 算法特征捕捉复杂模式(如非线性关系),提升模型泛化能力。
- 案例:风控模型中,原始特征(贷款金额)+ 业务特征(金额/收入)+ 算法特征(树模型生成的组合特征)可同时保留基础信息和复杂模式。
2. 常见实践
- 工业界广泛采用:例如,推荐系统中原始用户属性(性别、年龄)+ 业务标签(VIP等级)+ 深度学习生成的嵌入向量(Embedding)。
- 竞赛场景:如Kaggle比赛中,选手常混合统计特征、文本衍生特征和模型生成特征(如LightGBM的叶子节点编码)。
3. 重复的本质
- 并非严格重复:算法生成特征是对原始特征的抽象或组合,例如:
- PCA生成的主成分是原始特征的线性组合,已降维,不直接包含原始特征。
- 树模型的叶子节点特征是基于原始特征的决策路径,需保留原始特征以支持模型学习。
- 可能的冗余:若算法生成特征与原始特征高度相关(如年龄分箱后与原始年龄同时存在),可能导致信息冗余。
4. 解决方案
场景 | 策略 |
---|---|
降维类特征(如PCA、LDA) | 用降维后的特征替代原始特征(因降维已浓缩信息,避免冗余)。 |
树模型生成特征 | 保留原始特征,因树模型的叶子节点依赖原始特征的分割逻辑。 |
特征组合(如性别×学历) | 可与原始特征共存,但需通过特征选择(如IV值、相关性分析)筛选有效组合。 |
五、混合使用的注意事项
1. 特征筛选
- 去除冗余:通过统计方法(如相关系数、方差膨胀因子VIF)或模型方法(如L1正则化、SHAP值)删除高度相关的特征。
- 案例:若原始年龄和年龄分箱后的特征高度相关,保留其中一个即可。
2. 模型适应性
- 线性模型(如逻辑回归):对冗余特征敏感,需严格筛选。
- 非线性模型(如树模型、神经网络):对冗余特征容忍度较高,但过多特征可能导致过拟合。
3. 混合使用的建议
- 推荐组合:原始特征 + 业务特征 + 部分算法特征(如主成分、树模型叶子节点)。
- 避免重复:
- 降维特征替代原始特征(如用PCA主成分替代原始变量)。
- 树模型生成特征可与原始特征共存,但需通过特征选择优化。
4. 实践步骤
- 基础特征集:原始特征 + 业务公式生成特征。
- 算法特征增强:
- 加入降维特征(如PCA)或树模型特征。
- 用特征重要性分析(如XGBoost的feature_importances_)筛选有效特征。
- 模型训练与验证:对比混合特征与单一特征集的效果,调整特征组合。
5. 典型错误示例
- ❌ 错误做法:将原始年龄、分箱后的年龄区间、树模型生成的年龄相关叶子节点特征同时输入模型,导致信息冗余。
- ✅ 正确做法:保留原始年龄 + 分箱特征(或树模型特征),通过特征选择确定最优组合。
通过合理设计特征组合策略,不同层次的特征可协同提升模型性能,同时避免冗余和计算资源浪费。