第4章 机器学习基础面试:分类与回归算法、评估指标(AUC、F1等)、过拟合处理方法
本章聚焦面试中机器学习基础高频考点:分类/回归算法原理对比、评估指标选择与陷阱、过拟合的识别与解决方案。内容结构包括3个面试问答卡片、1个真实项目模板、1组大厂模拟对话,帮助候选人建立结构化的回答框架。
▎面试问答卡片
面试问题:你如何评估一个二分类模型的性能?AUC和F1分别适用于什么场景?
面试官考察点:是否理解指标背后的统计含义、能否根据业务选择最优指标、是否清楚AUC不依赖阈值而F1依赖阈值。
回答框架:①说明AUC衡量排序能力,适合不平衡数据;②说明F1是精确率与召回率的调和平均,适合关注正类准确率和覆盖率平衡的场景;③给出选择依据:当业务要求固定阈值(如拒绝模型)用F1,当需要整体排序性能用AUC。
简短示例回答:
AUC衡量模型对正负样本的排序能力,不依赖阈值,常用于评分卡或推荐排序场景。F1强调精确率和召回率的均衡,适合欺诈检测等正类稀缺但误报代价高的任务。若业务需求固定概率阈值,优先F1;若要评估整体区分能力,选AUC。
可能追问:如果测试集极度不平衡(正例<1%),AUC是否仍然有效?此时F1会有什么问题?
面试问题:逻辑回归(分类)与线性回归(回归)的区别是什么?为什么逻辑回归不能直接用线性回归的损失函数?
面试官考察点:是否理解两种模型本质、是否清楚输出空间与损失函数的匹配关系、是否了解广义线性模型。
回答框架:①输出域不同:线性回归连续,逻辑回归通过Sigmoid映射到(0,1);②损失函数:线性回归用MSE(最小二乘),逻辑回归用交叉熵(最大化似然);③原因:MSE对逻辑回归是非凸的,难以优化;交叉熵是凸函数,且与伯努利分布似然等价。
简短示例回答:
线性回归预测连续值,损失为MSE;逻辑回归输出概率,若用MSE会导致非凸损失函数,梯度下降易陷入局部最优。逻辑回归基于最大似然估计,交叉熵损失是凸函数,保证全局最优。此外,Sigmoid函数将线性组合压缩到(0,1),符合概率解释。
可能追问:逻辑回归对异常值敏感吗?如何处理?
面试问题:你如何判断模型过拟合?有哪些处理手段?它们的适用条件是什么?
面试官考察点:能否从训练/验证指标诊断过拟合、是否具备多种解决方法的经验、能否根据场景选择最合适的手段。
回答框架:①诊断:训练指标远优于验证指标,且验证指标随训练轮次先降后升;②手段:增加训练数据(最根本)、降低模型复杂度(减少层数/特征)、正则化(L1做特征选择、L2控制权重幅度)、早停(监控验证损失)、集成(Bagging降低方差);③选择原则:数据量足够用正则化,特征冗余用L1,模型过深先简化结构。
简短示例回答:
过拟合表现为训练AUC接近1而验证AUC明显偏低。首选检查数据量是否充足,若不足则采用L2正则化(权重衰减)或早停。若特征维度高且稀疏,使用L1正则化自动筛选特征。对于深度学习模型,可配合Dropout和数据增强。极端情况下用Bagging集成降低方差。
可能追问:L1和L2正则化为什么会产生稀疏解?
▎项目案例模板
| 项目名称 | 新闻标题多分类系统 |
| 业务背景 | 对每日百万量级新闻标题自动分入政治、财经、科技等200个类别,用于推荐冷启动 |
| 规模指标 | 训练样本50万条,类别分布长尾(Top10占70%),测试集AUC目标>0.92 |
| 技术栈 | Python / scikit-learn / TF-IDF / 逻辑回归 + L2正则化 / 网格搜索 / 交叉验证 |
| 核心难点 | ①长尾类别样本少导致过拟合;②TF-IDF维度过高(5万维)易过拟合;③类别间混淆度高(如“科技”与“数码”) |
| 面试高频追问 | 怎么处理类别不平衡?为什么选逻辑回归而不是SVM?正则化参数如何确定? |
| 可迁移回答话术 | “针对长尾类别,我们使用类别权重(class_weight='balanced')和分层采样;L2正则化参数通过5折交叉验证在[0.01,0.1,1]网格搜索确定。选择逻辑回归是因为模型可解释性强,且能输出概率用于后续阈值调整。” |
▎大厂模拟对话
面试官提问:在模型训练中,你发现训练集AUC稳定在0.99,而测试集AUC只有0.72。你会采取什么措施?请具体说明诊断步骤和解决思路。
候选人回答:“我首先会查看验证集上AUC随训练轮次的变化曲线,确认是否为过拟合。然后我会尝试增加正则化强度、减少特征维度或使用早停。”
普通答案:
“用更多数据、加正则化、降低模型复杂度。如果还不行就换模型。”
优秀答案:
“我会先观察验证损失曲线是否先降后升,确认过拟合。然后检查特征数量是否过多,用L1正则化或卡方检验降维。使用L2正则化时,我会对C值做网格搜索。同时增加Dropout或早停。若仍不行,考虑用梯度提升树等对特征不敏感的模型。”
专家答案:
“首先我会排除数据泄露(如时间穿越),确保训练/测试样本独立同分布。然后画学习曲线:若训练误差低而验证误差高,是过拟合;若两者均高则是欠拟合。对于过拟合,我会按优先级尝试:①统计特征分布,对长尾特征做平滑或删除;②使用Elastic Net结合L1和L2;③对特征做PCA或聚类降维;④最后用集成方法(如随机森林)降低方差。此外,我会检查验证集是否与测试集分布一致,必要时做对抗验证。”
面试官追问:你提到了对抗验证,能具体解释一下它的原理和用途吗?