特征工程是什么?把原始数据加工成模型好用的特征
特征工程(Feature Engineering)是利用领域知识,从原始数据中提取和构造出对机器学习模型有用的特征的过程。也常被称为特征提取。它是传统机器学习项目中最耗时、也最能决定模型效果的环节之一。业界流传着一句话:“数据和特征决定了机器学习的上限,而模型和算法只是在逼近这个上限。”
为什么需要特征工程
原始数据往往不能直接交给模型使用:它可能有缺失和错误,可能是文字、日期这类模型无法直接计算的格式,也可能隐藏着需要加工才能显现的规律。比如一条交易记录只有“下单时间:2024-11-11 23:58”,模型很难直接从这个字符串中学到什么;但如果把它加工成“是否是购物节”“是否是深夜”“是星期几”这样的特征,模型就能更容易地发现规律。
常见的操作
处理缺失值:删除缺失过多的样本或特征,或者用平均值、中位数、众数填充,也可以增加一个“是否缺失”的标记,因为缺失本身有时就包含信息。类别变量编码:把“城市”“颜色”这类文字类别转换成数字,常用独热编码、标签编码,以及用每个类别对应的目标平均值来编码的目标编码。数值变换:标准化和归一化,让不同特征的数值范围相近;对分布严重偏斜的数据,比如收入,取对数;把连续数值分段,比如把年龄分成几个年龄段。构造新特征:根据业务理解组合出新的特征,比如用总价除以面积得到单价,用身高和体重计算体质指数;从时间中提取年、月、星期、小时、是否节假日;从用户的历史行为中统计最近 7 天的访问次数、平均消费金额、距离上次购买的天数。文本和图像特征:从文本中提取词频、关键词,从图像中提取颜色、纹理等。特征选择:去掉无关和冗余的特征。
深度学习时代的变化
深度学习的一大优势是能够从原始数据中自动学习特征:处理图像、语音和文本时,神经网络可以直接读入像素、声波和文字,自己学到有用的表示,不再需要人工设计复杂的特征。这大大减少了这些领域中人工特征工程的工作量。但对于表格形式的结构化数据,比如金融风控、营销预测、销量预测,精心的特征工程配合梯度提升树模型,至今依然非常有效,往往是决定项目成败的关键。在数据竞赛中,好的特征常常比换一个更复杂的模型带来更大的提升。