机器学习 面试高频题|算法面试|AI面试|数据预处理|特征工程实战
很多人一听到“数据处理与特征工程”就开始背术语:缺失值、标准化、独热编码、PCA。**但真正面试里,面试官想听的不是你会不会背名词,**而是你能不能把“为什么做、什么时候做、怎么做、做错会怎样”讲清楚。
**说白了,**数据处理是在解决“数据能不能直接拿来训练”的问题,特征工程是在解决“数据怎样才能让模型学得更好”的问题。
01、面试官为什么特别爱问这道题
因为在真实机器学习 项目 里,模型本身往往不是最耗时间的部分,数据才是。很多公开课程和工程文档都反复强调:机器学习从业者花在数据清洗、转换和准备上的时间,通常远多于真正训练模型的时间。把这道题答好,基本就能体现你有没有真正接触过完整建模流程。
• 会不会处理缺失值、异常值、重复值、脏数据
• 懂不懂数值型、类别型、时间型特征的不同处理方式
• 知不知道特征选择、降维、编码、缩放这些操作的真实作用
• 最关键:是否知道数据泄漏,以及为什么 预处理 必须只在训练集上拟合
02、什么是数据处理?什么是特征工程?
数据处理,更偏“打地基”。它关注的是把原始数据整理干净,让数据质量过关,比如去重、补缺失、处理异常、统一单位、修正格式、拆分训练集与测试集。
特征工程,更偏“装修和布线”。它关注的是如何把数据变成更适合模型学习的表达方式,比如类别编码、标准化、构造交叉特征、筛掉无效特征、做降维。
**如果用做菜来比喻:**数据处理像洗菜、切菜、挑坏叶子;特征工程像决定切丝还是切块、要不要腌制、怎么搭配配料。前者保证能做,后者决定好不好吃。
03、特征工程到底包含哪些内容?
一套完整的特征工程,通常不只是一件事,而是一串连续动作:
• 特征清洗:处理缺失值、异常值、重复值、噪声数据
• 特征变换:标准化、归一化、对数变换、分桶、离散化
• 特征编码:把字符串类别转成模型能识别的数值表示
• 特征构造:从原始字段中衍生更有信息量的新特征
• 特征选择:去掉弱相关、重复、冗余、噪声特征
• 特征降维:在高维场景里压缩表示,降低复杂度
所以面试里一旦被问到“什么是特征工程”,不要只答“把原始数据转成模型特征”,最好顺手把这六类动作带出来,答案会立刻完整很多。
04、缺失值怎么处理?为什么不能一刀切?
缺失值处理是面试里的固定题。最容易扣分的回答就是:有缺失值就删掉。这样说太粗糙,因为删不删,取决于缺失比例、业务含义、样本量,以及这一列到底重不重要。
• 缺失很少:样本量足够时,可以直接删除少量样本;也可以用简单方法填补。
• 数值型缺失:常见做法是均值、中位数填补。若异常值较多,中位数通常更稳。
• 类别型缺失:常用众数填补,或者单独设为“未知/缺省”类别。
• 时间序列缺失:常见前向填补、后向填补、插值、滚动统计填补。
• 缺失很多:要重新评估这一列是否值得保留;有时可以同时增加一列“是否缺失”,让模型学习缺失本身携带的信息。
高分回答的关键点在于:你不仅会说“怎么补”,还会说“缺失本身也可能是一种信号”。比如用户没有填写收入、没有补充资料、没有完成认证,这些“空”本身就有业务意义。
05、归一化、标准化、鲁棒缩放,有什么区别?
这是面试中非常高频的一个追问。很多人只会背“归一化是 0 到 1,标准化是均值 0 方差 1”,但真正拉开差距的是:你能不能说出它们各自适合什么场景。
• 归一化:把数据压缩到固定区间,最常见是 0 到 1。适合数值范围差异特别大的场景,也常用于神经网络、距离计算。
• 标准化:把不同特征拉回到相对可比较的尺度上,通用性最强。 线性 模型、逻辑回归、SVM、KNN 这类算法通常更依赖标准化。
• 鲁棒缩放:当数据里离群点很多时,用中位数和分位区间来缩放,往往比均值和标准差更稳。
面试时一句特别加分的话是:
如果我对数据分布还没有完全把握,默认会先考虑标准化;如果明确要求固定区间,我会用归一化;如果异常值很多,我会优先考虑更鲁棒的缩放方式。
06、类别型变量怎么处理?独热编码是不是万能答案?
类别型变量无法直接喂给大多数机器学习模型,所以必须先转换成数值表示。但这里最容易犯的错误,就是把城市、性别、品牌这类无序类别直接映射成 1、2、3、4。这样模型会误以为这些类别存在大小顺序。
• 标签编码:实现简单,但容易引入伪顺序。更适合树模型,或者本身就有自然顺序的类别,比如低、中、高。
• 独热编码:最常见、最稳妥,因为不会引入大小关系。缺点是类别很多时维度会迅速膨胀。
• 频数编码/目标编码:适合高基数类别,比如广告位 ID、商品 ID、用户 ID,但一定要注意防止信息泄漏。
• 哈希编码/ Embedding :适合超高基数场景,特别是推荐、搜索和深度学习任务。
如果面试官追问“实际项目里一般常用哪种”,你可以这样答:
类别数不多时,独热编码通常是默认更安全的选择;类别数特别大时,我会考虑频数编码、目标编码、哈希编码或 Embedding,兼顾维度和效果。
07、特征选择有哪些具体技术?
特征不是越多越好。特征太多,模型可能会学到噪声、训练变慢、解释困难,还容易过拟合。所以特征选择的核心目标,就是留下有效信号,删掉无效或重复信息。
• 过滤法:先不依赖具体模型,直接用统计指标粗筛。常见有低方差过滤、相关系数、卡方检验、互信息。优点是快。
• 包裹法:让模型参与进来,反复试不同特征子集。比如前向选择、后向删除、递归特征消除 RFE。优点是更细,缺点是更慢。
• 嵌入法:在模型训练过程中顺便完成特征选择。比如 L1 正则、树模型特征重要性。通常是实战中性价比很高的一类。
• 降维方法:严格来说不完全等于特征选择,因为它不是删列,而是把高维信息压成低维表示,比如 PCA、SVD。
一个很像真实项目的回答方式是:先用过滤法做第一轮粗筛,再用嵌入法或 RFE 精筛;如果数据非常高维、非常稀疏,再考虑降维。
08、如何处理高维特征?
高维特征在文本、广告、推荐、行为日志里特别常见。高维本身不是问题,问题在于高维往往伴随稀疏、噪声、重复、训练成本增加。
• 先删:去掉低方差、低频、几乎不提供信息的列。
• 再选:用 L1、树模型重要性、RFE 等方法保留更关键的特征。
• 再压缩:如果维度仍然很大,可以用 PCA、SVD 或 Embedding 压缩表示。
• 最后控复杂度:结合正则化、交叉验证、早停等方法,一起抑制过拟合。
高分答案里最好补一句:高维问题的本质不是“列太多”,而是“有效信号占比不够高”。所以处理高维,不只是做降维,更重要的是提高信噪比。
09、数据中有噪声、异常值、高相关特征,怎么处理?
噪声数据会让模型学偏,高相关特征会让模型重复学习同一件事。它们都会拉低模型的泛化能力。
• 噪声处理:先区分是真异常还是脏数据。真异常不能随便删,它可能恰恰是业务重点;脏数据则应该修正、 截断 、剔除。
• 异常值处理:常见方法包括截尾、分箱、对数变换、鲁棒缩放,必要时也可以单独增加“是否异常”的标记列。
• 高相关特征处理:如果两列表达的是同一个含义,比如“年龄”和“出生年份”、“月收入”和‘年收入/12’,通常没必要全留。
面试官很爱问:为什么要去掉高度相关特征?你可以从三个角度回答:
• 第一,信息重复,模型相当于被同一信号反复喂,收益有限。
• 第二,在线性模型里容易带来多重共线性,导致参数不稳。
• 第三,特征越冗余,越容易让模型把噪声也一起学进去。
10、如何解决数据不平衡问题?
比如欺诈识别、疾病预测、故障检测,往往“真正重要的少数类”只占很小比例。这时候如果你只看准确率,模型很容易看起来很高分,但实际上几乎没抓住目标。
• 重采样:包括欠采样多数类、过采样少数类,以及 SMOTE 这类合成少数类样本方法。
• 调整类别权重:给少数类更高的 class_weight 或 sample_weight,让模型训练时更重视它。
• 调整决策阈值:别机械使用 0.5,可以根据召回率、误杀成本、漏报成本来调。
• 换评估指标:少看 Accuracy,多看 Precision、Recall、F1、AUC,必要时看 PR 曲线。
这一题如果想答得更像实战,可以补一句:在高风险业务里,阈值选择常常比模型本身更重要,因为业务要平衡误报和漏报成本。
11、数据预处理时,能不能把训练集、验证集、测试集放在一起处理?
标准答案是:不能。至少不能在它们混在一起的情况下去学习填补、编码、标准化这些规则。原因只有四个字:数据泄漏。
• 正确做法:先切分训练集、验证集、测试集。
• 再只在训练集上学习预处理规则,比如均值、中位数、类别词表、缩放参数。
• 最后把同样的规则应用到验证集和测试集。
• 工程上最好把整套流程写进 Pipeline,避免离线和线上规则不一致。
为什么这么重要?因为如果你先对全量数据做标准化,再切分数据,那么测试集的信息已经提前参与了训练前的统计计算,得到的离线结果会偏乐观,上线以后经常掉分。
一句最能打动面试官的话:所有需要“学习参数”的预处理动作,都必须只在训练集上 fit。
12、如果让我在面试里用一分钟回答这道题,我会怎么说?
下面这段可以直接背熟,但更建议你理解后用自己的话说:
数据处理与特征工程,本质上是在把原始数据变成模型更容易学习的高质量输入。数据处理侧重清洗和规范化,比如去重、补缺失、处理异常、切分训练测试集;特征工程侧重表达优化,比如编码、标准化、构造新特征、筛选重要特征、降维。实际做的时候,我会先区分数值型和类别型特征,对缺失值和异常值分别处理;类别少时优先独热编码,类别多时考虑频数编码、目标编码或 Embedding;对线性模型、SVM、KNN这类算法通常会做标准化;如果特征很多,会结合过滤法、嵌入法或RFE做特征选择;如果类别严重不平衡,会结合重采样、类别权重和阈值调整;同时特别注意数据泄漏,所有预处理参数都只在训练集上 fit,再应用到验证集和测试集。 |
13、总结:真正拉开差距的,不是术语,而是顺序和判断
面试里,数据处理与特征工程这道题真正考察的是三个层次:
• 你知不知道有哪些常见方法。
• 你能不能说清这些方法分别适合什么场景。
• 你是否知道实际工程中的先后顺序,尤其是如何避免数据泄漏。
所以别只记“归一化、标准化、独热编码、PCA”这些名词。真正高分的回答,应该是:先说目标,再说方法,再说场景,最后补上风险点和工程规范。这样一来,答案才会像做过项目的人,而不是只背过八股的人。