数据转换是数据预处理的核心环节,旨在将原始数据转化为更适合分析或建模的形式,提升数据质量、算法性能或结果可解释性。你提到的标准化、离散化、属性构造和泛化是数据转换中最常用的四种技术:
1. 标准化
-
目标:消除不同特征因量纲(单位)和数值范围差异带来的影响,使所有特征处于可比尺度。
-
原理:对数据进行线性变换,不改变原始分布形状(如标准化后数据分布不变)。
-
常用方法:
-
Z-Score 标准化:
-
公式:
新值 = (原值 - 均值) / 标准差
-
结果:数据均值为0,标准差为1。
-
适用场景:数据近似服从正态分布时效果最佳(如线性回归、逻辑回归、SVM)。
-
-
Min-Max 归一化:
-
公式:
新值 = (原值 - 最小值) / (最大值 - 最小值)
-
结果:数据被缩放到 [0, 1] 区间。
-
适用场景:神经网络、KNN、聚类等对输入范围敏感的算法。
-
-
-
为什么重要?:
-
避免量纲大的特征主导模型(如“工资”单位为万元,“年龄”单位为岁)。
-
加速梯度下降等优化算法的收敛速度。
-
2. 离散化
-
目标:将连续型数据划分为有限个区间(称为“分箱”或“桶”),并用区间标签或有序整数替代原始值。
-
原理:用分段常量近似连续分布,简化数据复杂性。
-
常用方法:
-
等宽分箱:按值域等分区间(如年龄分为 [0-20), [20-40), [40-60])。
-
缺点:易受异常值影响,分布不均匀的区间可能空箱。
-
-
等频分箱:每个区间包含大致相同数量的样本。
-
优点:数据分布更均衡。
-
-
基于聚类的分箱:用聚类算法(如K-Means)划分相似值。
-
基于决策树的分箱:利用树模型的分裂点作为箱边界(如使用信息增益)。
-
-
为什么重要?:
-
减少噪声和异常值影响。
-
将非线性关系转化为线性关系(如年龄与疾病风险)。
-
便于理解(如“高收入”、“中等收入”比具体收入值更直观)。
-
适用于只能处理类别型变量的算法(如朴素贝叶斯)。
-
3. 属性构造
-
目标:创建新的特征,以更有效的方式捕捉数据中的潜在模式或关系。
-
原理:通过组合、转换或派生现有特征生成更有信息量的特征。
-
常用方法:
-
数学运算:
-
比率:
销售额 / 客户数 = 客单价
-
差值:
当前温度 - 昨日温度 = 温差
-
乘积:
长度 × 宽度 = 面积
-
-
时间特征提取:
-
从日期中提取:星期几、月份、季度、是否节假日。
-
-
文本特征工程:
-
词频、情感得分、关键词提取。
-
-
领域知识驱动:
-
电商:
浏览时长 / 页面数 = 平均停留时长
-
金融:
逾期次数 / 总贷款次数 = 逾期率
-
-
-
为什么重要?:
-
揭示原始特征中隐藏的关系。
-
提升模型预测能力(如“身体质量指数 BMI = 体重/身高²”比单独用体重或身高更有效)。
-
降低维度(有时新特征可替代多个原始特征)。
-
4. 泛化
-
目标:用更高层次、更抽象的概念替换原始数据值,实现数据归约和语义提升。
-
原理:基于预定义的概念层级树(Ontology)对数据进行概括。
-
常用方法:
-
数值型泛化:
-
具体年龄 → 年龄段(如“25岁” → “20-30岁” → “青年”)。
-
-
类别型泛化:
-
城市 → 省份 → 大区(如“北京市” → “华北地区” → “中国”)。
-
-
时间泛化:
-
具体日期 → 月份 → 季度 → 年度。
-
-
-
为什么重要?:
-
降低数据复杂度:减少细节,突出宏观趋势。
-
提升模型泛化能力:防止过拟合(如将“北京”“上海”泛化为“一线城市”)。
-
增强可解释性:高层概念更符合人类认知(如“青年”比“25岁”更具概括性)。
-
隐私保护:模糊具体信息(如用“50K-100K”代替具体薪资)。
-
四者关系总结
技术 | 核心作用 | 典型输入 | 输出形式 |
---|---|---|---|
标准化 | 消除量纲差异,统一尺度 | 数值型特征 | 数值型(缩放后) |
离散化 | 连续值→离散区间 | 数值型特征 | 类别型/有序离散值 |
属性构造 | 生成信息量更高的新特征 | 现有特征组合 | 数值型/类别型新特征 |
泛化 | 用抽象概念替代细节,归约数据 | 数值型/类别型 | 高层抽象值 |
实际应用示例(金融风控模型):
标准化:将“年收入”、“负债额”缩放到相同范围。
离散化:将“年龄”分箱为[18-25, 26-35, 36-50, 51+]。
属性构造:创建“负债收入比 = 总负债 / 年收入”。
泛化:将具体职业泛化为“高危职业/稳定职业”。
通过这四类转换,原始数据被转化为更干净、更结构化、更富含信息的形式,为后续的机器学习建模或数据分析奠定坚实基础。