一句话定义:特征选择(Feature Selection)是在训练之前主动挑出一部分特征、丢掉其余特征的操作。它关注的是取舍,与清洗数据是两件不同的事。
为什么不能全都喂给模型
想象你在招人,收到 200 份简历,每份简历有 50 个字段。其中“是否掌握某软件”和“简历纸张的颜色”,被你一视同仁地交给面试官。人可能会笑一下,把纸张颜色划掉;模型不会。它没有常识,你给什么,它就认认真真学什么。如果训练集里恰好“纸张是米黄色的候选人都通过了面试”,它就会把这条当成规律。
无关特征会带来三层伤害:
1. 稀释信号。特征越多,样本在特征空间里越稀疏,同样的数据量能提供的“密度”越低,真正的规律就越难显现。
2. 制造虚假规律。噪声与标签的偶然相关会被当成规律学进去,训练集上表现很好,新数据一来就崩——这是过拟合的常见来源之一。
3. 抬高成本。训练更慢、推理更慢、存储更大、可解释性更差;而且没人说得清那 200 列里到底哪几列在真正起作用。
三条常见路线
| 路线 | 怎么做 | 典型做法 | 特点 |
|---|---|---|---|
| 过滤式(Filter) | 不看模型,先给每个特征单独打分 | 方差、相关系数、卡方检验、互信息 | 快,适合做第一轮粗筛 |
| 包裹式(Wrapper) | 用模型效果来评价特征子集 | 递归特征消除(RFE)、逐步选择 | 准,但要反复训练,代价高 |
| 嵌入式(Embedded) | 训练过程顺带完成选择 | L1 正则(Lasso)把系数压到 0、树模型的特征重要性 | 常用,性价比高 |
容易混淆的邻居
- 降维(Dimensionality Reduction,如 PCA):特征选择保留的是原始列,业务含义还在;PCA 把列重新组合成新列,往往解释不了。
- 特征构造:那是加列,特征选择是减列,方向相反,通常配合使用。
- 特征重要性排序:只是给名次,特征选择要真的动手砍掉。
对从业者的提醒
重要性榜单不等于真相。两个高度相关的特征会互相“分薄”重要性,看起来都不重要;换用置换重要性(Permutation Importance)之类的做法会更稳。另外,选特征只能在训练集上做,拿测试集来挑特征等于提前偷看答案。
对普通人的意义
做报表、做决策是同一回事。指标不是越多越好,一个看起来相关、其实无关的指标,会让人和模型一样,一本正经地得出错误结论。先问一句“这一列到底在解释什么”,常常比多加十列更有用。
