机器学习算法专家高阶面试宝典 - 第4节

第4章 特征工程与数据预处理面试

特征工程是机器学习面试的高频模块,面试官会重点考察候选人在缺失值处理、特征编码、特征选择、降维四个维度的系统化思维与业务落地能力。以下为本章核心知识结构。

模块 常用方法 适用场景 注意事项
缺失值处理 均值/中位数填充、KNN插补、模型预测 随机缺失、低比例缺失 避免数据泄露,考虑业务含义
特征编码 One-Hot、Target Encoding、Label Encoding 无序/有序/高基数类别 高基数用Target平滑,避免过拟合
特征选择 方差过滤、卡方检验、Lasso、递归消除 高维数据、需要解释性 使用交叉验证评估稳定性
降维 PCA、LDA、t-SNE 消除共线性、可视化、模型加速 失去可解释性,需配合业务解释
分析缺失比例与模式 判断缺失机制(MCAR/MAR) 选择处理策略(删除/填充) 考虑业务影响与风险 验证模型稳定性与泛化

🎯 面试问题:请谈谈你在项目中如何处理缺失值?

面试官考察点
系统性思考、业务理解、技术选择(是否考虑缺失机制)
回答框架
  1. 统计缺失比例与分布
  2. 判断缺失机制(MCAR / MAR / MNAR)
  3. 选择策略(简单删除、均值填充、KNN插补、模型预测)
  4. 交叉验证对比效果
  5. 结合业务解释填充合理性
简短示例回答
“我首先统计缺失比例和分布,判断为MAR。对于<5%且随机缺失的特征,用均值填充;对重要特征且缺失>20%,使用KNN插补,最后用5折交叉验证评估填充对AUC的影响,确保填充后模型性能不下降。”
可能追问
如何处理时间序列数据中的缺失值?为什么在某些场景下不能直接删除行?
避坑提醒
🚫 不要盲目使用均值填充,尤其当缺失机制为MNAR时会产生严重偏差;务必区分训练集和测试集的填充统计量。

🎯 面试问题:分类特征编码有哪些方法?如何选择?

面试官考察点
对编码原理的理解、处理高基数类别、防范数据泄露
回答框架
  1. 常用方法:Label Encoding、One-Hot、Target Encoding、Count Encoding
  2. 选择依据:类别数量、是否有序、模型类型(树模型/线性模型)
  3. 避免:Label Encoding用于有序类别;One-Hot避免高基数导致稀疏;Target Encoding需平滑+交叉验证
简短示例回答
“有序特征如学历用Label Encoding;无序高基类别如商户ID使用Target Encoding加5折交叉验证平滑。树模型对Label Encoding不敏感,线性模型通常用One-Hot或Target Encoding避免稀疏。”
可能追问
Target Encoding如何具体做交叉验证平滑?什么是留一法编码?
避坑提醒
🚫 严禁在全体训练集上计算Target均值后直接填充;必须用交叉验证或留一法防止目标泄露。

🎯 面试问题:特征选择和降维有什么区别?你如何在实际项目中选择?

面试官考察点
理解两者目的差异、适用场景、实践顺序
回答框架
  1. 特征选择:保留原始特征,适合业务解释;降维:生成新特征,适合消除共线性和加速
  2. 选择依据:是否需要可解释性、特征维度、线性/非线性数据
  3. 典型流程:先用过滤式(方差/卡方)快速剔除,再用嵌入式(L1正则)选择,最后对高维数据用PCA降维
简短示例回答
“特征选择保留解释性,降维消除共线性。我先用方差过滤和卡方检验初步筛选,再用Lasso选出20个核心特征,最后对剩余高维特征用PCA降至50维用于GBDT模型。”
可能追问
PCA后特征失去了物理意义怎么向业务方解释?L1正则的λ如何选择?
避坑提醒
🚫 降维后的特征不能直接用于业务决策;特征选择时要结合交叉验证避免过拟合。

📁 项目案例:金融风控用户信用评分卡

业务背景构建用户信用评分模型,需处理海量用户行为数据,包含大量缺失值和类别型特征
规模指标训练数据500万用户,特征维度2000+,缺失率最高达60%
技术栈Python, Pandas, NumPy, Scikit-learn, XGBoost, Optuna
核心难点缺失值比例高且非随机缺失(MAR);高基数类别特征(商户ID)如何编码;特征维度高需降维
面试高频追问如何判断缺失机制?如何处理高基数类别?为什么选择XGBoost而不是神经网络?特征选择和降维的顺序?
可迁移回答话术“本项目首要挑战是缺失值处理。我通过业务分析发现部分特征缺失与用户活跃度相关,属于MAR。采用分组统计填充(按用户等级均值),对高基数类别使用Target Encoding结合5折交叉验证避免过拟合。特征选择先使用LightGBM内置重要性筛选Top 100,再用PCA降至50维,最终模型AUC提升0.03。”