机器学习中的编码问题和标准化:类别编码、one-hot编码缺陷及改进
文章目录
-
-
- 一、核心解决方案:从“稀疏编码”到“稠密嵌入”
-
- 1. 频率编码(Frequency/Count Encoding)
- 2. 目标编码(Target Encoding/Mean Encoding)
- 3. 嵌入编码(Embedding Encoding)
- 4. 分组编码(Grouping Encoding)
- 5. 哈希编码(Hashing Trick)
- 二、方案选择决策树
- 三、实战建议
- 一、适用场景:必须满足“类别有明确顺序”
- 二、使用方法(scikit-learn 示例)
- 三、关键注意事项
- 四、与 LabelEncoder 的区别
- 五、总结
- 一、标准化 vs 归一化:核心区别
- 二、关键场景:何时用标准化?何时用归一化?
-
- 1. 优先用标准化的场景
- 2. 优先用归一化的场景
- 三、核心原则:训练集和测试集的缩放逻辑
-
- 错误做法:先合并训练集和测试集,再缩放
- 正确流程(以标准化为例):
- 代码示例(scikit-learn):
- 四、总结:一句话决策指南
-
当类别变量的枚举值过多(通常称为“高基数类别特征”,如用户ID、商品SKU、地址等)时,One-Hot
编码会产生大量稀疏特征,导致维度灾难(特征空间爆炸)、计算成本飙升和模型过拟合风险增加。针对这一问题,业界有成熟的替代方案,核心思路是“用低维稠密向量替代高维稀疏向量”,同时保留类别间的语义或统计关联。以下是具体解决方案及适用场景:
一、核心解决方案:从“稀疏编码”到“稠密嵌入”
1. 频率编码(Frequency/Count Encoding)
原理:用每个类别在数据集中的“出现频率”或“计数”替代类别本身。例如,“北京”在数据中出现1000
次,编码值为1000
;“上海”出现800
次,编码值为800
。
变种:
- 频率编码:
count / 总样本数
(归一化,更适合数值敏感的模型); - 对数计数编码:
log(count + 1)
(缓解极端值影响)。
优点:
- 实现简单,无额外计算成本,不增加特征维度;
- 适用于任何模型(树模型、