资讯动态

机器学习面试题汇总:从监督学习到SVM与逻辑回归原理精讲

发布时间:2026/10/17 21:13:13 来源:尧图企业网站定制
简介这是一份机器学习常见面试题汇总文档面向具备一定基础、正在备战算法岗或数据科学面试的研发人员系统梳理有监督与无监督学习、SVM、LR、决策树、聚类、贝叶斯、正则化、特征选择等核心知识点。文档共1个docx文件压缩包约49KB轻量便携便于离线查阅与补充笔记目前已有111人学习。内容不限于原理罗列还深入对比了SVM、LR、决策树的适用场景解释SVM推导、核函数与多分类策略LR的优缺点与概率输出决策树的信息增益、基尼指数与剪枝GBDT与随机森林的差异以及EM算法、k-means、DBSCAN、贝叶斯分类、L1/L2正则化和TF-IDF等高频考点同时给出类别不平衡、过拟合、凸优化、对偶问题等问题的解答思路。文档还专门讨论了特征选择、过拟合成因与对策、偏差与方差、神经网络基础以及CNN与DBN的区别覆盖从理论到实践的常见疑问整体适合面试冲刺复习和实际项目选型参考。1. 机器学习常见面试题汇总为什么算法原理题决定你能否过技术面你投了一个月简历终于约到一面。面试官没让你先讲项目而是从题单里抽出一道“逻辑回归的损失函数为什么不用均方误差”你愣了两秒开始从记忆里翻答案——项目可以包装原理没法临时编。这样的场景在算法岗和数据岗面试里每天都在发生。机器学习常见面试题汇总这个方向要解决的就是把监督与非监督学习、SVM、LR、决策树这几类最高频的算法题拆成“原理一条线、推导一张纸、工程一套说法”让你在面试现场能复述、能推导、能落到场景上。适合两类人准备算法岗或数据分析岗面试的从业者以及想快速校准技术判断力的团队负责人。它不是背题清单而是一条答题主线。2. 监督与非监督学习先分清“有没有标签”背后的出题逻辑2.1 一问定义监督、非监督、半监督、自监督的边界面试官问“什么是监督学习、什么是非监督学习”时最常见的翻车回答是“有标签是监督没标签是非监督”——这句话本身没错但只说对了一半。面试官真正想听的是你对这组概念的边界有判断力。我的标准答法分两层。第一层是定义监督学习从带标签的样本中学 x 到 y 的映射目标是让模型在未见数据上预测准确非监督学习没有标签学的是数据自身的分布、结构或相似关系典型任务是聚类、降维、异常检测。第二层是边界半监督学习是少量标签加大量无标签数据常见做法是用有标签部分训练初始模型再对无标签部分打伪标签迭代训练自监督学习不依赖人工标注而是从数据本身构造监督信号比如语言模型里的掩码预测。按“是否使用人工标签”划分自监督应该归入无监督这一侧但它的训练形态又有监督的特点面试里一定要答出这个区分不能一刀切。说到半监督一个高频追问是“伪标签错了怎么办”。我的回答是伪标签本质是把模型自己的高置信预测当作监督信号所以一般只取置信度高于阈值比如 0.9的样本并且每轮迭代后重新打标而不是一次性固化。这个细节能在追问环节帮你多撑两个来回。2.2 二问选型同样的数据两类算法各自解决什么问题面试官经常会追问“给你一份用户行为日志你会先跑监督还是非监督”这不是让你二选一而是考察你知不知道两者在流程里的位置。我做项目时的一般顺序是先非监督做数据探查分群看离群点再做监督建模。这个顺序在面试里说出来会很有工程感因为它表明你不只是会调包而是有建模流程意识。维度监督学习非监督学习输入特征 标签只有特征任务分类、回归聚类、降维、异常检测评估准确率、F1、AUC轮廓系数、DBI、ARI典型算法LR、SVM、决策树K-Means、DBSCAN、PCA数据成本标注成本高无需标注但结果解释成本高这个表格要能默写出来。面试里把“评估方式差异”讲清楚很加分监督学习可以拿标签算误差非监督学习没有标签内部指标只能看结构合理性外部指标如 ARI、NMI 需要已知的真实划分做参照只能用于验证集或实验场景。很多候选人在这里只记得“聚类用轮廓系数”一旦被问“轮廓系数怎么算”就卡住所以每个指标至少要能说出一句计算逻辑。2.3 三问评估聚类没有标签怎么证明你分得对“聚类效果怎么评估”是进阶高频题只答“看轮廓系数”会被追问到底。要答出三层第一层轮廓系数取值在 [-1, 1]越接近 1 说明样本离自己簇近、离别的簇远第二层是卡林斯基-哈拉巴斯指数不需要标签计算簇间离散度与簇内离散度的比值越大越好第三层是带参照的 ARI 和 NMI只有在你有先验划分时才能用。分层答完面试官会认为你真正碰过聚类评估而不是背了一个词。这里有一个我踩过多次的坑K-Means 用欧氏距离如果特征尺度差异悬殊聚类结果会被大数值特征主导。所以做聚类前标准化是铁律。下面这段就是聚类评估的最小脚本。from sklearn.cluster import KMeans from sklearn.preprocessing import StandardScaler from sklearn.metrics import silhouette_score, calinski_harabasz_score # 特征尺度差异大时会扭曲欧氏距离先标准化再做聚类 X_scaled StandardScaler().fit_transform(X) for k in range(2, 8): model KMeans(n_clustersk, n_init10, random_state42) labels model.fit_predict(X_scaled) sil silhouette_score(X_scaled, labels) ch calinski_harabasz_score(X_scaled, labels) print(fk{k}, silhouette{sil:.4f}, calinski_harabasz{ch:.1f})参数说明n_init10表示用 10 组不同初始中心跑 10 次取最优K-Means 对初始化敏感这个参数不能省random_state固定随机种子保证结果可复现轮廓系数和卡林斯基指数都用于 K 值选择但两者不是单调关系我一般画曲线看拐点而不是机械地取最大值。提示面试里提到聚类评估最好主动补一句“聚类结果是给业务解释用的指标只是参考”这比单纯背公式显得有工程感。2.4 四问经典K-Means、DBSCAN、PCA 的固定问法非监督学习里K-Means、DBSCAN、PCA 是面试题里的三驾马车。K-Means 必问“算法步骤”标准答法是初始化 K 个中心分配样本到最近中心重新计算中心重复直到中心不再变化或达到最大迭代次数。追问“怎么选 K”答“肘部法则看 SSE 拐点或按轮廓系数排序但最终以业务解释为准”。DBSCAN 必问“和 K-Means 的区别”答“K-Means 假设簇是凸的对噪声敏感DBSCAN 基于密度能发现任意形状的簇还能顺带识别离群点但两个参数 eps 和 min_samples 对尺度敏感”。PCA 必问“为什么能降维”答“找方差最大的正交方向做投影保留主要方差丢弃冗余维度但 PCA 丢失可解释性特征维度高度稀疏时先考虑特征选择而不是 PCA”。这三问串起来就是非监督部分最完整的面试覆盖。3. SVM 高频面试题从最大间隔到核函数的五个必答点3.1 最大间隔与支持向量为什么“间隔最大”能压低泛化误差SVM 的第一道必问题一定是“解释最大间隔”。面试官要的不是“找一条分界线”而是你能说出间隔为什么影响泛化。我的答法是间隔是决策边界到最近样本的距离SVM 找的是让这个距离最大的超平面支持向量就是落在间隔边界上的样本。间隔越大模型对样本位置的微小扰动越不敏感泛化误差上界越低。这个概念对应的是结构风险最小化思想不是单纯的经验风险最小化。一道经典变体题是“为什么支持向量是少数样本”。因为目标函数只被间隔边界上的点约束其他样本即使移动只要不越过间隔边界最优超平面就不变。这个性质带来两个实际后果SVM 训练完成后决策函数只依赖支持向量模型可以稀疏如果数据里噪声点成了支持向量模型会被带偏所以后面才要引入软间隔。面试时把这个因果关系讲出来比“支持向量是关键样本”这种结论强很多。3.2 硬间隔与软间隔C 参数到底在惩罚什么线性可分只是理想情况真实数据总有权重。软间隔允许部分样本违反间隔约束目标函数从“间隔最大”变成“间隔最大加惩罚项”。这里的 C 是惩罚系数C 越大对违反约束的样本惩罚越重间隔会变窄逼近硬间隔容易过拟合C 越小容忍噪声越多边界更平滑但可能欠拟合。面试里给参数调优建议时我一般会说“先用对数尺度搜索 C再在最优附近加密”。面试里我会顺手把 hinge 损失写出来max(0, 1 - y * f(x))。它只有分类错误或者落在间隔带内的样本才产生损失这与支持向量的稀疏性天然对应。这个细节能帮你和只会说“软间隔就是容忍错误”的候选者拉开差距。如果面试官接着问“hinge 损失和 0-1 损失的关系”还可以补一句hinge 是 0-1 损失的凸上界优化它是在近似优化分类错误率同时保证了问题可解。3.3 核函数别只答“升维”要答出内积计算“核函数的作用”是 SVM 面试里最容易答浅的一道题。如果你只说“把数据映射到高维让它线性可分”一定会被追问一句“那高维空间的维数是多少计算量怎么控”。正确的主线是显式做高维映射成本极高而 SVM 对偶问题里样本只以内积形式出现核函数直接计算高维空间的内积跳过了显式映射这就是核技巧。RBF 核天然把样本映射到无穷维但计算仍是基于两两样本相似度的标量值。核函数的选型有固定套路线性核用于文本或高维稀疏特征RBF 是默认首选多项式核在核函数调好时效果也不错但参数更多。RBF 有两个核心参数C 和 gamma。gamma 决定单个样本的影响半径gamma 越大模型只盯着附近的点决策边界越弯曲也越容易过拟合。from sklearn.svm import SVC from sklearn.model_selection import GridSearchCV from sklearn.preprocessing import StandardScaler # SVM 对特征尺度敏感训练前归一化否则 C 和 gamma 的语义会失真 X_train_scaled StandardScaler().fit_transform(X_train) X_test_scaled StandardScaler().fit_transform(X_test) param_grid { C: [0.1, 1, 10, 100], gamma: [0.01, 0.1, 1, 10], kernel: [rbf] } # C 控制间隔宽度惩罚gamma 控制 RBF 核的影响半径 grid GridSearchCV(SVC(probabilityTrue, random_state42), param_grid, cv5, scoringf1, n_jobs-1) grid.fit(X_train_scaled, y_train) print(grid.best_params_)逻辑说明这段是先归一化再搜索参数顺序不能反。如果直接对原始特征搜 C 和 gamma搜索到的最优参数只对当前尺度的数据有效换一份数据就失效。probabilityTrue会让 SVC 额外做一层概率缩放换来可解释性代价是训练时间增加。n_jobs-1用满所有 CPU 核网格搜索本身很重这个参数在本地调参时值得加。3.4 SVM 与 LR 的选型差异面试里最常搭配出题的一对面试官特别爱把 SVM 和 LR 放在一起问“同一个二分类问题你用哪个为什么”这不是选择题是让你展示对模型性质的理解。我一般按三个维度答第一LR 输出天然是概率SVM 输出的是决策距离需要额外缩放才是概率业务上需要概率打分排序时 LR 更直接第二LR 线性模型可解释性强特征重要性清晰SVM 靠核隐式映射解释性弱第三训练规模上 LR 在海量稀疏样本上靠随机梯度下降可以跑SVM 的核矩阵成本高样本量一上来就要谨慎。维度LRSVM损失函数交叉熵hinge 损失输出概率决策距离概率需额外缩放核技巧通常没有核心特性可解释性系数直接解释黑匣子程度更高大规模数据梯度下降可扩展核矩阵成本高这个表不是让背而是要能展开说明每个行为的后果。比如“样本量很大时为什么优先 LR”SVM 的核计算成本随样本量近似平方增长而 LR 可以用 mini-batch 无限轮训练。反过来中小样本、特征维度高且有线性边界时线性 SVM 的泛化表现往往不差而且对异常点比 LR 更鲁棒。面试里把这个权衡逻辑讲清楚比报一堆参数有用得多。4. 逻辑回归面试题损失函数、特征交叉与工程落地4.1 为什么用交叉熵而不是均方误差这道题出现在面试里的频率几乎和“自我介绍”一样高。反问求解把逻辑回归的输出经过 sigmoid再用 MSE 做损失得到的目标函数是非凸的而且梯度在预测值接近 0 或 1 时会被 sigmoid 导数压到几乎为 0收敛极慢。交叉熵来自最大似然估计和 sigmoid 组合后是凸函数梯度形式简洁只在预测与真实不一致时才产生大梯度。我一般会在纸上写出两类梯度对比import numpy as np def sigmoid(z): return 1.0 / (1.0 np.exp(-z)) # 交叉熵梯度: dL/dw (y_hat - y) * x # MSE 梯度: dL/dw (y_hat - y) * y_hat * (1 - y_hat) * x # 当 y_hat 趋近 0 或 1 时MSE 梯度被 y_hat*(1-y_hat) 压到接近 0参数几乎不再更新这个对比的目的不是背公式而是回答“为什么 MSE 在分类问题里不好收敛”。你要能顺势补一句MSE 在回归任务里仍然是首选首选的损失它的问题不在数学形式而在与 sigmoid 组合后的梯度传播表现。这样回答既正确又显得你没有被教条绑住。4.2 表示能力不够特征工程来凑离散化与交叉特征LR 是线性模型单个特征对 log-odds 的贡献是线性的这是它的边界也是面试官爱深挖的地方。“你怎么给 LR 加非线性能力”标准答案是特征离散化和交叉特征。连续特征分桶后做 one-hot每个桶有独立权重等价于学习分段常数函数天然带非线性再做特征两两交叉可以捕捉组合关系。这里有个工程经验离散化的收益不只是非线性还有稳定性和鲁棒性。连续值的极端值会被分到边界桶里不会像原始尺度那样直接拉爆权重。我一般会先看特征分布再决定分桶边界常用等频分桶配合业务阈值而不是无脑等宽分桶。等宽分桶对长尾数据几乎总是产生一个空桶和一个满桶实际上是在丢信息。面试里能说出“我不用等宽分桶”的人至少是真正处理过真实特征的。4.3 正则化与训练节奏L1、L2 与样本权重LR 面试的收尾题通常是正则化。“L1 和 L2 的区别”要答出三层。第一层数学区别L1 是系数绝对值之和解偏向稀疏L2 是系数平方和解偏向等权重压缩。第二层直觉区别L1 在零点不可导容易把无关特征的权重压成 0天然做特征选择L2 对大权重惩罚更重适合特征间相关性强的场景。第三层工程区别L1 的稀疏性可以减少线上特征读取这是推荐系统里用 L1 的核心理由。正则项解的性质特征选择典型场景L1稀疏部分权重为 0自带高维稀疏特征、线上特征裁剪L2权重整体缩小不直接特征相关性高、防止过拟合注意面试里答正则化最好加上“训练时样本权重”这条。LR 的损失函数天然支持给样本加权类别不平衡时常用“给少数类更大的样本权重”而不是直接过采样因为过采样会让梯度重复、训练变慢。这是很多候选人没意识到的点。4.4 追问准备类别不平衡与特征标准化LR 面试还常带两个追问类别不平衡怎么办特征要不要标准化。类别不平衡的答案链是先看业务指标不要只看准确率建议用 AUC、召回率、精确率组合评估然后按顺序试样本权重、过采样、欠采样、合成样本最后补一句“在 LR 里过采样不如调样本权重效率高因为重复样本不带来新信息”。特征标准化这道题LR 本身对尺度不敏感因为梯度下降可以通过调整学习率适应不同尺度但归一化后收敛更快、特征重要性更可比所以我的习惯是“做了不亏不做有风险”。这两问回答顺了LR 部分基本就稳了。5. 决策树面试题避坑指南从信息增益到剪枝的四个翻车点5.1 翻车点一信息增益、增益率、基尼指数答成同一个东西现象面试官问“ID3、C4.5、CART 的分裂依据分别是什么”候选人答“都是选信息增益最大的特征”现场沉默三秒。原因只看过结论没推过公式。三个指标确实都是“选特征”但各自解决的问题不同。ID3 用信息增益等于划分前熵减划分后加权熵缺点是偏好取值多的特征比如把用户 ID 这种特征直接选上C4.5 用增益率除以特征固有值做归一化抑制了 ID3 的偏好CART 用基尼指数衡量从数据集中随机抽取两个样本类别不同的概率越小越好计算比熵快不涉及对数。解决面试时直接写公式。信息增益等于划分前熵减划分后各分支熵的加权和增益率等于信息增益除以特征固有值。附一个最小实现import numpy as np def entropy(y): _, counts np.unique(y, return_countsTrue) p counts / counts.sum() return -(p * np.log2(p)).sum() def info_gain(y, y_left, y_right): parent entropy(y) n len(y) weighted (len(y_left) / n) * entropy(y_left) \ (len(y_right) / n) * entropy(y_right) return parent - weighted # 连续特征切分先排序再在相邻值中点取候选切分点 # 增益率在信息增益基础上除以特征的固有值惩罚多取值特征逻辑说明这段最容易被写错的地方是weighted用的是样本数占比不是等权平均。面试手撕这道题时先用 10 个以内的小样本算一遍熵确认能算对再上公式。5.2 翻车点二剪枝顺序说反现象“决策树怎么防止过拟合”这题候选人回答“先做预剪枝再后剪枝预剪枝效果更好”。考官追问“为什么预剪枝更好”答不上来。原因把训练流程和泛化效果混为一谈。预剪枝是在建树过程中提前停止分裂比如限制最大深度、最小叶子样本数后剪枝是等树完全长成自底向上用验证集判断某个子树该不该替换成叶子节点。后剪枝因为看过完整生长过程才剪给出的剪枝决定更全局效果通常优于预剪枝但代价是建树开销大。解决把两种剪枝的适用场景说清楚。数据量大、训练时间紧用预剪枝控制开销数据量小、追求泛化精度用后剪枝。工程里我一般是两段式先设一个偏小的max_depth和min_samples_leaf跑基线再用交叉验证微调。决策树的关键参数如下参数作用常见初始值max_depth最大深度控制树的复杂度3~10min_samples_split内部节点再分裂所需最小样本数10~20min_samples_leaf叶子节点最少样本数防止叶子过小5~10max_features每次分裂最多考虑的特征数特征数的平方根5.3 翻车点三连续值与缺失值处理讲不出细节现象问“决策树怎么处理连续特征和缺失特征”候选人答“连续特征二分缺失值跳过”面试官皱眉。原因结论对但没有到能落地的程度。连续特征的标准做法是先排序把相邻特征值的中点当作候选切分点逐一计算信息增益或基尼指数选最优的切分点。缺失值处理分两步选择分裂特征时只用无缺失样本计算指标样本进入分裂时把缺失样本按权重分到各分支或者用代理分裂。解决面试回答给两层。先讲连续值二分再补一句“二分只是最简单的做法实际切分点会在每个相邻值之间做线性扫描复杂度 O(n log n)”缺失值则强调“不是简单丢弃而是要让缺失样本也能参与分裂”。这一层信息量直接区分你和背答案的人。顺便说一句很多人在工程里遇到缺失值就直接删行这在样本量大的时候没问题但面试官问的是理论边界你要先答标准做法再说工程简化。5.4 翻车点四只说“树容易过拟合”不给解法现象“决策树的缺点是什么”答“容易过拟合”然后没有了。面试官下一句必然是“那怎么解决”。原因只记住了结论没记住上下文。决策树过拟合的根源是树结构对训练样本的精细记忆解决办法按场景分单棵树用剪枝限制复杂度集成模型用随机森林的样本和特征双采样降低树间相关性GBDT 用学习率收缩每棵树的贡献并配合早停。这一串下来你已经从单模型讲到集成学习正好衔接面试官下一个问题。解决提前把这条回答链准备好从“过拟合”开始一路引到随机森林的采样比例、GBDT 的学习率。如果面试官追问随机森林和 GBDT 的区别又刚好落回到树模型这个主题上等于你把面试节奏握在自己手里。我面试别人时最看重这种“主动延伸”的能力它比正确答案本身更值钱。6. 面试现场的算法题答题框架一个可复用的四段式技巧最后一章我把自己的面试经验压成一个四段式答题框架你拿去直接用。无论被问到 LR、SVM 还是决策树用这个顺序答三分钟内能把一道题讲完整。第一段一句话定义。比如“逻辑回归是广义线性模型用 sigmoid 把线性输出映射成 0 到 1 的概率”。第二段核心公式或原理能写公式就写公式能画边界就画边界信息增益、间隔、交叉熵这些都是你在纸上能证明自己真懂的东西。第三段对比与边界把这模型和最近的算法比一次LR 和 SVM 比输出、比核、比规模决策树和线性模型比可解释性、比非线性。第四段工程落地说清楚什么数据量、什么业务场景下你会选它以及参数怎么设、坑在哪里。用“LR 和 SVM 的区别”演示一遍定义段说 LR 输出概率、SVM 最大化间隔公式段写交叉熵和 hinge 损失各一行对比段说 LR 可解释、可大规模SVM 有核技巧、擅长中小样本落地段补充“特征归一化对 SVM 是硬前提LR 对归一化不那么敏感但 L1 正则能帮你做特征选择”。四段走完面试官几乎不需要再追问。这个框架的真正价值不在背诵在于它逼你把每个算法的知识组织成固定结构面试现场遇到新题也能现场套用。我的血泪经验是第一次面算法岗时我把几十道题的答案背得很熟结果面试官换了个业务场景问“点击率预估你会用 LR 还是树模型”我就卡住了因为背的答案是死的不会迁移。后来我把每个算法都整理成这四段发现不管题目怎么换回答路径都是通的。祝你也在面试前把核心算法过成自己的四段式——不背题而是理解每一层的来龙去脉。希望帮到你。本文还有配套的精品资源点击获取

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑