上篇:没有特征工程,你的模型就是个“睁眼瞎”——这玩意儿到底解决了什么?
先讲一个真实场景
你接过一个任务:预测一个用户会不会点击你发的营销短信。原始数据长这样:
手机号、打开时间、GPS位置、短信内容、手机型号、上次点击距今天数……
你直接把这一堆东西扔给模型?模型会疯掉。“打开时间”是“2026-04-16 14:30:00”,这怎么算大小? “短信内容”是一段中文,模型怎么相减?
这时候你意识到一件事:计算机只认识数字,不认识现实世界。你得想办法把这些乱七八糟的东西转化成模型能消化的数值。
这个转化的过程,就叫特征工程。
那到底什么是特征工程?
说人话:把原始数据变成模型听得懂、吃得香的那盘菜。
更正式一点:特征工程是指将原始数据(可能是文本、图像、时间、类别、缺失值……)通过各种处理手段,转换成能够被机器学习算法有效利用的特征(通常是数值型向量)的整个过程。
注意几个关键词:
原始数据:脏、乱、格式不统一、含义模糊。
特征:干净、结构化、模型能直接算。
工程:不是一拍脑门,而是一整套可复用的方法和流程。
为什么会出现特征工程?它不是吃饱了撑的
这个问题问得好。你可能会想:现在的深度学习不是号称端到端吗?我把原始像素扔进去,它自己不就学了吗?
道理是没错。但你得看看现实。
原因一:大部分模型不吃“生肉”
逻辑回归、决策树、随机森林、GBDT……这些经典而强大的模型,输入必须是数值型、有限维、没有缺失的向量。你给一个缺失值,它就报错;你给一个字符串“男性/女性”,它根本不知道这俩怎么比较。你不做特征工程,模型连跑都跑不起来。
原因二:深度学习的“端到端”在很多场景下是奢侈品
图像、语音这种连续信号,深度学习确实可以直接吃。但换到表格数据(比如银行风控、电商点击率预测),深度学习的表现常常不如树模型。而树模型又对原始表格数据非常“挑剔”——你得帮它把类别转成数值、把时间拆成星期几、把长尾分布做变换……不做这些,效果差一大截。
原因三:数据里有“杂质”和“陷阱”
缺失值:用户没填年龄,你是补0还是补均值?瞎填会带偏模型。
量纲不一致:身高单位是米,收入单位是万元,模型会误以为收入不重要(因为数值小)。
冗余特征:ID类特征看起来唯一,但模型可能会学到“ID=10086的用户一定不点击”这种过拟合垃圾。
原因四:人的经验依然很值钱
一个做了十年风控的人,一眼就知道“最近30天逾期次数”比“总借款金额”重要十倍。这种领域知识,不通过特征工程注入模型,模型自己要从头学很久,甚至学不到。
所以特征工程的出现,本质上是为了弥补模型理解现实世界的缺陷,同时把人的智慧高效地传递给机器。
一个例子让你彻底明白
假设你要判断一个人会不会得糖尿病。原始数据里有“出生日期”这一列。
不做特征工程:模型看到“1965-03-21”,一脸懵。这怎么和糖尿病挂钩?
做特征工程:你把出生日期转成“年龄 = 当前年份 - 出生年份”。模型一看,哦,年龄越大风险越高,瞬间学会。
再进一步:你又造了一个特征“BMI = 体重(kg) / 身高(m)^2”。模型直接看到这个黄金指标,效果飞升。
这两个新列就是你的“工程成果”。原始数据里根本没有,是你创造出来的。
