机器学习面试100问:大厂高频面试题及详细解答
一、基础概念篇
1. 什么是机器学习,核心目标是什么?
机器学习是一门通过设计算法,让计算机从数据中自动学习规律、调整参数,进而实现对未知数据进行预测或决策的技术。它核心是“数据驱动”,目标不是依靠人工编写固定指令完成任务,而是让计算机借助数据“经验”自主优化模型,最小化在未知数据上的预测误差,提升泛化能力。比如软件测试中,可通过分析历史测试数据,让机器学习模型自动识别潜在bug。
2. 监督学习、无监督学习和强化学习有何区别?
-
监督学习:使用带标签数据训练,学习输入与标签的映射关系,用于预测已知输出。典型场景如垃圾邮件检测、房价预测,算法有线性回归、决策树等。在测试中,可用于根据测试用例标签预测用例执行结果。
-
无监督学习:在无标签数据中寻找隐藏模式,如客户分群、异常检测,常用算法有K-Means、PCA。测试里可用于聚类分析测试用例,发现相似用例组。
-
强化学习:智能体通过与环境互动,依据奖励信号学习决策策略,如机器人控制、游戏AI,代表算法有Q-Learning、PPO。在自动化测试中,可让测试智能体根据测试环境反馈优化测试路径。
3. 偏差和方差的权衡是怎样的?
偏差是模型预测值与真实值的系统性偏离,源于模型假设过简单,导致欠拟合;方差是模型在不同训练集上预测结果的波动程度,源于模型过复杂,导致过拟合。总误差=偏差²+方差+不可约误差。在测试模型构建中,若训练集表现好但测试集差,是高方差问题,可通过增加训练数据、降低模型复杂度解决;若训练集和测试集表现都差,是高偏差问题,可增加特征数量、选用更复杂模型。
二、经典算法篇
4. 逻辑回归是线性模型还是非线性模型?
逻辑回归是广义线性模型。其原始形式是非线性的,但决策面是线性的。它通过Sigmoid函数将线性回归的输出映射到0-1之间,用于二分类任务。在测试中,可用于预测测试用例是否会发现bug。
5. 逻辑回归为何使用对数损失而非平方损失?
-
从损失函数角度,逻辑回归预测函数非线性,用MSE得到的损失函数是非凸函数,梯度下降易陷入局部极小值;对数损失是凸函数,便于求全局最优解。
-
从梯度更新角度,平方损失的梯度更新速度与Sigmoid函数梯度相关,Sigmoid梯度不大于0.25,训练慢;对数损失的导数是误差差值,误差大更新快,误差小更新慢,符合训练需求。
6. 支持向量机(SVM)的核心思想是什么?
SVM目标是找到一个分类超平面,将不同数据分隔开,使两类数据到超平面的距离最大化。它通过核函数将低维数据映射到高维,解决非线性分类问题。在测试中,可用于对测试用例进行分类,区分有效用例和无效用例。
7. 决策树如何进行特征选择?
决策树通过信息增益、信息增益比或基尼指数进行特征选择。信息增益是划分前后数据集熵的变化,信息增益比是信息增益与特征熵的比值,基尼指数衡量数据集的纯度。选择能使数据集纯度提升最大的特征进行划分。在测试中,可用于分析影响测试结果的关键特征。
三、模型评估篇
8. 准确率、精确率、召回率和F1-score有何区别?
-
准确率:分类正确的样本占总样本的比例,适用于正负样本均衡场景。但在测试中,若bug样本占比极低,即使模型将所有样本预测为无bug,准确率也很高,无法体现模型真实性能。
-
精确率:分类正确的正样本个数占预测为正样本的比例,反映模型预测正样本的准确性。
-
召回率:分类正确的正样本个数占实际正样本的比例,衡量模型对正样本的识别能力。在测试中,高召回率意味着能尽可能多发现bug。
-
F1-score:精确率和召回率的调和平均数,综合反映模型分类性能,适用于正负样本不均衡场景。
9. ROC曲线和AUC是什么?
ROC曲线以假阳性率(FPR)为横坐标,真阳性率(TPR)为纵坐标,反映模型在不同阈值下的分类性能。AUC是ROC曲线下的面积,取值范围0-1,AUC越大,模型排序能力越强,即越能将正例排在负例之前。在测试模型评估中,AUC能更全面反映模型性能。
10. 交叉验证的作用和常见方法有哪些?
交叉验证用于评估模型泛化能力,避免过拟合。常见方法:
-
留出法:将数据划分为训练集和测试集,简单但结果随机性高,对小数据集不友好。
-
K折交叉验证:将数据划分为K个子集,轮流用一个子集做验证集,其余做训练集,取K次结果平均值,工业界常用K=5或10。
-
留一法:每个样本单独做验证集,计算开销大,适合极小数据集。
四、深度学习篇
11. 神经网络的基本结构是什么?
神经网络由输入层、隐藏层和输出层组成。输入层接收数据,隐藏层对数据进行特征提取和变换,输出层输出预测结果。每层包含多个神经元,神经元之间通过权重连接,通过激活函数引入非线性。在测试中,可用于构建复杂的测试预测模型。
12. 梯度下降法有哪些变体,各有何优缺点?
-
批梯度下降:每次用所有训练数据更新参数,能获得全局最优解,但计算量大,数据量大时更新慢。
-
随机梯度下降:每次用一个样本更新参数,更新频繁,可能跳到更好的局部最优解,但收敛过程复杂,方差大。
-
小批量梯度下降:每次用n个样本更新参数,结合前两者优点,减少更新次数,收敛更稳定,是深度学习常用方法。
13. 什么是过拟合,如何解决?
过拟合是模型在训练集上表现极好,但在测试集上泛化能力差,原因是模型学习了训练数据的噪声。解决方法:
-
正则化:L1正则化使部分特征权重为0,实现特征选择;L2正则化压缩特征权重,防止过拟合。
-
早停:当验证集性能不再提升时提前停止训练。
-
数据增强:对图像、文本等数据进行旋转、翻转、加噪声等操作,增加数据多样性。
-
Dropout:在训练中随机失活部分神经元,减少神经元之间的依赖。
五、生产部署与测试结合篇
14. 机器学习模型在软件测试中的应用场景有哪些?
-
测试用例生成:通过学习已有测试用例,自动生成新的测试用例,覆盖更多场景。
-
缺陷预测:根据代码特征、历史缺陷数据,预测哪些模块容易出现缺陷,指导测试重点。
-
自动化测试:利用强化学习让测试智能体自动执行测试任务,优化测试路径。
-
性能测试:通过分析性能数据,预测系统在不同负载下的性能表现。
15. 如何评估机器学习模型在测试中的性能?
除了常规的准确率、精确率等指标,还需结合测试场景关注:
-
缺陷发现率:模型预测的缺陷中实际存在的比例。
-
测试覆盖率提升:模型生成的测试用例对代码的覆盖程度。
-
测试效率提升:模型节省的测试时间和人力成本。
16. 机器学习模型部署到测试环境中需要注意什么?
-
数据一致性:确保训练数据和测试环境数据分布一致,避免模型性能下降。
-
实时性:对于实时测试场景,模型响应速度要满足要求。
-
可解释性:测试人员需要理解模型决策依据,便于排查问题。
-
监控与维护:实时监控模型性能,定期更新模型,适应测试环境变化。
更多推荐



所有评论(0)