特征工程是分阶段的数据精炼过程,含数据清洗(处理缺失值、异常值、类型校正)、特征变换(数值缩放、类别编码、偏态矫正)、特征构造(时间拆解、组合衍生、分箱交互)及特征选择与降维(过滤法、嵌入法、PCA/LDA)。

特征工程不是一步到位的操作,而是一套有逻辑、分阶段的数据精炼过程。它直接决定模型能否从数据中真正“看懂”业务规律。下面按实际建模顺序,讲清楚每一步该做什么、为什么做、怎么做。
数据清洗:先让数据“能用”
这是所有后续工作的前提。脏数据会把再好的模型带偏。
- 缺失值处理:缺失率超过80%的列建议直接删;数值型常用中位数填充(比均值抗异常点),类别型用众数;复杂场景可用KNN或迭代插补(sklearn的IterativeImputer)
- 异常值处理:别急着删。先用IQR或3σ法识别,再考虑截断、分箱(如年龄→青年/中年/老年)或保留为特殊标记(比如“高收入离群者”本身可能有意义)
- 类型校正:比如“注册时间”被读成字符串,要转为datetime;“评分”本是数字却被存成文本,需强制转换并处理异常字符
特征变换:让数据“适配模型”
不同模型对输入数据的分布和尺度敏感,这步是“翻译”——把原始数据变成模型喜欢的样子。
- 数值缩放:线性模型(如逻辑回归)推荐Z-Score标准化;SVM或神经网络常用Min-Max归一化到[0,1];若数据含强离群点,用RobustScaler(基于中位数和IQR)更稳
- 类别编码:无序类别(城市、颜色)用独热编码(pd.get_dummies);有序类别(学历、满意度等级)用标签编码或序数映射(如小学=1,中学=2,大学=3)
- 偏态矫正:收入、交易额等右偏数据,可尝试log(x+1)或Box-Cox变换,使分布更接近正态,提升线性模型稳定性
特征构造:用业务知识“造新信息”
这是特征工程最有价值的部分——不是靠算法,而是靠你对问题的理解。
- 时间拆解:从日期字段提取年、月、日、星期几、是否节假日、是否月末/季初;还可计算“距今多少天”“与上一次行为间隔”
- 组合衍生:电商中,“点击数 / 曝光数”比单独两个数更能反映兴趣;医疗中,“BMI = 体重(kg) / 身高²(m)”是经典物理意义特征
- 分箱与交互:将连续变量分段(如用户年龄分4组),再与地域交叉生成“一线城市中年用户”这类高信息量组合特征
特征选择与降维:给模型“减负”
不是特征越多越好。冗余、噪声、弱相关特征反而拖慢训练、引发过拟合。
- 过滤法快而直观:用方差阈值(VarianceThreshold)去掉几乎不变的列;用相关系数或卡方检验筛掉与目标变量无关的特征
- 嵌入法更智能:Lasso回归(L1正则)自动把不重要特征系数压到0;树模型(如随机森林)自带feature_importances_排序
- 降维保信息:PCA适合数值型高维特征压缩;对分类问题,LDA更能保留类间区分度;文本或图像常用TF-IDF、Word2Vec或CNN中间层输出作为低维表示
基本上就这些。特征工程没有银弹,核心是“理解数据来源 + 明确建模目标 + 小步验证效果”。每次加一个新特征,都该用交叉验证看看AUC或RMSE有没有真实提升——不提升的,就果断舍弃。










