机器学习中完成特征组合后是否需要删除原始特征?
构造a+b、a*b类组合特征后是否需要删除原始特征a、b?
根本不存在“必须删”或者“必须留”的固定规则,要不要删完全取决于你用的模型类型、特征实际贡献、部署场景约束,机械操作很容易踩坑。
我平时做项目的判断逻辑可以直接参考:
这些场景完全没必要删,留着反而更好
- 用树类模型(随机森林、XGBoost、LightGBM、CatBoost等)的时候:树模型本身对特征冗余的容忍度极高,训练时会自动根据分裂增益选择有用的特征,不会因为多了两个相关特征就崩掉。反而原始a、b携带的独立效应是组合特征没法完全替代的——比如你做了
c = a*b的交互特征,a本身对标签的直接影响没法通过c完整表达,删了很容易丢信息。这点冗余带来的训练开销在当前算力下基本可以忽略,完全犯不上为了“看起来不冗余”删特征。 - 做特征探索阶段:还没确定最终用什么特征组合的时候,先把原始特征和构造的特征都放进去跑基线,等拿到特征重要性结果再判断,别提前删特征堵死自己的优化空间。
这些场景建议按需删除,留着反而会干扰效果
- 用对多重共线性极敏感的模型时:比如无正则的普通线性回归、逻辑回归,或者KNN、SVM、K-Means这类依赖距离计算的模型。冗余特征会导致线性模型系数不稳定、解释性完全失效,也会拉高距离类模型的维度,稀释有效特征的距离权重。
特别提醒:如果构造的是c = a+b这类和原始特征完全线性相关的组合,在无正则线性模型里会直接导致特征矩阵奇异,模型根本没法训练,这种情况必须做取舍,不能同时放。 - 部署场景算力极度受限时:比如要把模型部署到单片机、低配置嵌入式设备,存储和推理算力卡得非常死,这时候可以通过置换重要性、特征重要性排序做校验,如果加入c之后a、b的重要性直接降到0,删掉之后验证集效果没有下降,再删掉省资源。
实操里别把“特征冗余”当洪水猛兽,为了所谓的“不冗余”随便删原始特征,最后把有效信息丢了导致模型效果掉点,才是真的得不偿失。最稳妥的判断标准永远是验证集效果:加了特征效果涨就留,删了特征效果不跌就可以删,别靠书本上的死规则做决策。
内容的提问来源于stack exchange,提问作者귀요미
相关产品推荐
相关产品推荐

