别瞎做特征工程!机器学习特征筛选 + 缺失值处理技巧让模型准确率狂涨
要是舍不得删,也能做主成分分析(PCA)降维,但要注意,PCA 会把原始特征转换成新的综合特征,解释性会变差,比如你没法说清「主成分 1」具体代表什么,做业务解读时会有点麻烦。比如特征「用户年龄」范围是 0-100,「用户年收入」是 0-100 万,不缩放的话,年收入的数值量级会完全掩盖年龄的影响,模型会误以为年收入是唯一重要的特征。比如做外卖订单预测,只单独用「距离」「配送费」特征,效果一般,但
很多做机器学习的朋友都有过这种困惑:算法选的是最先进的,参数调得快把手册翻烂了,可模型准确率就是上不去,甚至还不如别人用简单算法做的效果。你想想看,问题大概率出在被忽略的「特征工程」上 —— 这步就像做菜前的备菜,食材处理得乱七八糟,再牛的大厨也炒不出好菜。
小索奇认为,特征工程里的坑远比想象中多,而且每个坑都能直接把模型效果拉垮。先说说最常见的「特征冗余」问题,比如做房价预测时,同时输入「建筑面积」「使用面积」「套内面积」三个特征,看似信息丰富,实则这三者高度相关。模型训练时会被这些重复信息带偏,比如过分放大建筑面积的影响,反而忽略了楼层、地段这些关键因素。
怎么解决呢?教你个实用方法:用方差膨胀因子(VIF)检测多重共线性,VIF 值大于 10 的特征就属于高冗余,直接删掉其中一个就行。要是舍不得删,也能做主成分分析(PCA)降维,但要注意,PCA 会把原始特征转换成新的综合特征,解释性会变差,比如你没法说清「主成分 1」具体代表什么,做业务解读时会有点麻烦。
缺失值处理更是重灾区,我见过太多人不管三七二十一,要么直接删掉有缺失值的样本,要么全填个均值了事。这简直是在浪费数据!就拿用户流失预测来说,「最近一次消费时间」这个特征缺失,很可能意味着用户已经很久没活跃了,直接删掉这些样本,等于丢掉了最能反映流失倾向的数据。
正确的做法得看情况来:如果是数值型特征,比如「用户消费金额」,缺失率低于 10% 可以用中位数填充(比均值抗异常值);缺失率高的话,不如新增一个「是否缺失」的二元特征,再用 0 或中位数填充原字段。要是分类特征,比如「用户会员等级」缺失,直接填「未知」类别就行,比硬塞一个现有等级靠谱多了。
是不是觉得所有模型都得做特征缩放?之前我也这么想,不管做什么任务,先归一化到 [0,1] 再说,直到踩了个大雷。那次做客户违约预测,用随机森林算法,缩放完特征后准确率反而降了 5 个百分点。这背后的原因是啥呢?说白了,决策树、随机森林这类基于树的模型,是通过划分特征阈值来做判断的,特征的绝对大小不影响分裂逻辑,缩放反而多此一举。
但像 SVM、逻辑回归、KNN 这些模型就必须缩放!比如特征「用户年龄」范围是 0-100,「用户年收入」是 0-100 万,不缩放的话,年收入的数值量级会完全掩盖年龄的影响,模型会误以为年收入是唯一重要的特征。这里给个简单口诀:树模型不用缩,线性模型必须缩,神经网络看激活(用 ReLU 一般建议缩)。
还有个容易被忽略的坑:特征和目标变量无关。有次帮朋友做电商复购预测,他一股脑加了「用户星座」「注册设备品牌」等十几个特征,结果模型 AUC 一直上不去。后来用互信息值(衡量分类特征与目标的相关性)一测,发现「星座」的互信息值几乎为 0,纯属无效特征。
筛选有效特征其实很简单:数值型特征用皮尔逊相关系数,绝对值大于 0.1 的留下;分类特征用互信息值,越大相关性越强。亲测把这些无关特征删掉后,模型不仅准确率提上去了,训练速度还快了近一倍 —— 毕竟模型不用在没用的信息上浪费算力了。
说到特征衍生,很多人又走进了「越多越好」的误区。比如做外卖订单预测,只单独用「距离」「配送费」特征,效果一般,但要是衍生出「配送费 / 距离」这个比率特征,就能反映出「单位距离成本」,模型立马能区分出对价格敏感的用户。但要是乱衍生,比如把「距离」和「用户性别」做交叉,反而会产生噪声特征,让模型过拟合。
小索奇总结了个特征衍生的核心原则:围绕业务逻辑来。比如做金融风控,就衍生「近 3 个月逾期次数」「信用卡负债率」;做内容推荐,就衍生「用户日均阅读时长」「同类内容点击占比」。这些贴合业务的衍生特征,比瞎凑的交叉特征有用 10 倍。
你是不是也有过「特征堆了一堆,模型效果反而差」的经历?其实特征工程的本质不是「做加法」,而是「做减法和乘法」—— 减掉冗余、无关的特征,给有效特征做业务化衍生。这步做扎实了,哪怕用简单的逻辑回归,也能跑出不错的效果。
你在特征工程里踩过最惨的坑是啥?是填错缺失值还是冗余特征太多?评论区聊聊,让大家避避坑!
我是【即兴小索奇】,点击关注,后台回复 领取,获取更多相关资源
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)