喂给 AI 的料得先洗洗:聊聊特征工程这步不能省的活儿

先泼冷水:模型再牛也救不了脏数据
说白了,特征工程就是把原始数据收拾成模型好消化的样子。你品品,同样是「用户消费」,原始表里有的是金额、有的是文字、有的是空着——直接喂进去模型当场懵。工程师得先把缺失的补上、把单位统一、把类别变成数字。业内老话:数据和特征定了上限,模型只是在逼近它。咱做业务复盘也是一个理,料不对,再漂亮的分析也歪。好多新手把时间全花调模型,却懒得洗数据,结果怎么调都上不去,根子就在这,绕都绕不开。
清洗:先治病,再谈养生
第一步往往是清洗:缺值填不填、怎么填(平均数?同类中位?),异常值(比如有人年龄写 999)砍不砍,重复行删不删。你品品,这像收菜先挑烂叶。别小看这步,很多模型翻车不是算法差,是数据里藏了几个离谱值把整体带偏。咱不是大厂,但脏数据这关谁都逃不掉。还有个隐蔽坑:测试集混进了训练集,成绩虚高,上线原形毕露,清洗时切分也得干净,不然自己骗自己。
编码:把文字变成模型认得的数字
模型只认数,可现实满地是文字——颜色红黄蓝、城市北上广。得把它们翻成数字:简单的用零一二标(有序的),多的用独热(红等于零一零、黄等于零一零)。你品品,相当于给每个类别发个工牌号。弄错了(比如把红黄蓝当一二三,模型会以为红到蓝有大小关系)模型就学出歪理。细节里全是坑。还有种按类别均值替数字的招,好用但容易过拟合,得加噪声或交叉验证才稳,不能裸用。
归一化:别让一个大数盖了一切
还有个常踩的雷:不同特征量纲差太大。比如「收入」几万、「年龄」几十,不处理模型光盯着收入跑。归一化(缩到零到一或调成均值为零)就是让大伙儿站同一起跑线。比喻一下:比身高体重,不统一单位谁都看不出谁壮。咱调参时这步省了,训练十有八九慢又飘。像距离类算法对量纲尤其敏感,不归一化基本废了一半功,这步看着小,实则救命。
构造特征:老手的杀手锏
高手不止洗数据,还造数据——从现有字段里抠出新信号。比如有下单时间和现在,算出「间隔天数」;有省市,映射出「是否一线城市」。这叫特征构造,往往比换模型提分更猛。你品品,同样一堆原料,大厨能变出花儿。咱做用户分层、风控,多在这层下功夫。业界有句话:上了深度学习才少依赖特征工程,但表格类问题里,人工构造特征至今仍是提分主力,老法子照样香。
对咱们有啥用?别迷信自动建模
看懂特征工程,你至少有数:一是听到自动机器学习也别全信,底层清洗编码偷不得懒;二是自己搞表格预测,先把数据收拾干净再谈模型;三是验收别人交付,多问一句特征怎么处理的,显专业也防坑。一句话:好模型是洗出来的,不止训出来的。咱干活儿,料先备齐,后头才顺,这道理放哪儿都通。
最后再啰嗦一句:特征工程不是一次性的,数据变了、业务换了,特征也得跟着迭代。别指望训一次就一劳永逸。咱做长期项目,把这层当日常维护,模型才不容易悄悄退化。这活儿看着不起眼,却是数据和模型之间那座最实在的桥,谁也绕不过去。








