机器学习期末考试和面试翻车,十有八九不是没听课,而是复习的时候不知道哪些是真正的考点。我见过太多人抱着西瓜书和吴恩达视频啃,笔记抄了一整本,结果考试遇到一道“偏差与方差怎么权衡”就懵了,面试被问到“为什么逻辑回归用交叉熵而不用均方误差”直接卡壳。说白了,机器学习常见考点就那几条主线,翻来覆去地考,你需要的是把知识串成体系,而不是零散地背公式。这篇复习笔记,就是按这个思路整理的,覆盖我刷题、备考、带新人过程中觉得最值得反复看的考点,适合期末冲刺、考研复试、面试前快速过一遍的人。
1. 核心主线:先分清机器学习到底在解决什么问题
1.1 三大学习范式不能只背名字
机器学习的考点哪怕再多,你第一个要拎清楚的,就是它到底在解决什么类型的问题。考试题里经常出现“给一个场景,让你判断属于哪种学习任务”,这种题没难度,但答错很伤人。三大范式是地基:监督学习、无监督学习、强化学习。
监督学习的本质是“给答案学规律”。训练数据里每一条样本都带着标签,你要做的就是找到输入到输出的映射函数。回归问题是标签是连续的值,分类问题是标签是离散的类别。点这里要提醒的是,有些教材会把“排序学习”“序列标注”单独拎出来,但大框架上它们仍然属于监督学习的变体,不必被名词吓住。
无监督学习的本质是“不给答案找结构”。数据没有标签,你要从数据本身去发现分布规律。聚类是把相似的样本归到一堆,降维是去掉冗余特征保留核心结构,关联规则是找物品之间的共现关系。无监督里最容易考的是 KMeans 的流程和 PCA 的原理,后面我会单独展开。
强化学习的本质是“靠反馈学策略”。它跟前面两种都不太一样,监督和无监督解决的是“感知与理解”的问题,强化解决的是“决策与行动”的问题。智能体通过与环境交互获得奖励信号,目标是让长期累积奖励最大化。热词里的“机器学习奖励驱动”就是在说这一块。期末考强化学习一般不会考太深,但马尔可夫决策过程、奖励函数的设计、探索与利用的权衡,这三个概念要能说清楚。
注意:有些资料会把“半监督学习”也列为核心范式。它介于监督和无监督之间,用少量标注数据加大量未标注数据训练。考试如果出现,你只需要掌握它的核心思想:利用未标注数据的分布信息辅助建模,最典型的方法是自训练和协同训练。
1.2 泛化、过拟合和欠拟合:怎么考都不过时
我再强调一遍,泛化能力是机器学习最核心的命题,没有之一。模型在训练集上表现好不算本事,在没见过的数据上表现好才算真本事。所有防止过拟合的手段,本质上都是在保护泛化能力。
过拟合是模型把训练数据里的噪声和个别特例都背下来了,导致在训练集上性能爆表,在测试集上一塌糊涂。直观理解就是“死记硬背的学生,换道题就不会了”。过拟合常见的信号是训练误差极低、验证误差高,两者之间的差距大。欠拟合则反过来,模型太简单,连训练数据的规律都没学到,训练误差和验证误差都高。
考试喜欢考“给定一个场景,判断是过拟合还是欠拟合”,然后问“怎么解决”。这里给你一个顺口溜:过拟合就是模型太复杂,数据太少,训练太久;解决办法是加正则、加数据、早停、简化模型、交叉验证、Dropout。欠拟合就是模型太简单,特征太少;解决办法是增加模型复杂度、加特征、减少正则化强度。
偏差与方差的权衡是上面这个问题的理论延伸。偏差是模型预测值的期望与真实值的差异,反映的是模型的拟合能力;方差是模型在不同训练集上预测值的波动程度,反映的是模型对数据变化的敏感度。简单模型高偏差低方差,复杂模型低偏差高方差。你需要在两者之间找一个平衡点,这也是为什么会有“偏差-方差分解”这个概念——泛化误差可以分解为偏差平方加方差加噪声。
1.3 数据集划分和交叉验证:看起来简单,坑最多
训练集、验证集、测试集三者的区别,是期末考试必考的基础题,但很多人搞混。训练集用来学参数,验证集用来调超参数、选模型,测试集用来做最终评估。测试集是“考场”,在整个建模过程中只能碰一次,绝对不能拿它反复调参,否则就相当于你把考卷答案透给了模型,测试集的评估结果就失真了。
交叉验证是用来在训练数据内部做模型选择的。K 折交叉验证是把训练数据切成 K 份,每次拿 K-1 份训练、1 份验证,轮流 K 次,最后把 K 次验证结果平均。留一法是 K=N 的特殊交叉验证,适合小数据集。分层交叉验证是在分类任务中保证每一折的正负样本比例和全局一致,处理不平衡数据时尤其有用。
实操中大家常常忽略一个问题:数据预处理(比如标准化、PCA、缺失值填充)必须在每一折交叉验证内部单独做,不能先在整个数据集上做预处理再划分。因为预处理过程会用到全局统计量,相当于引入了未来信息,会造成数据泄漏。这一点笔试未必考,但做项目时是个大坑。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 经典模型与算法考点:每个模型的“题眼”要抓到
2.1 线性回归与逻辑回归:最基础也最容易丢分
线性回归是最简单的监督模型,原理是用线性函数拟合输入与输出的关系。目标是最小化均方误差。最小二乘法的闭式解是 w = (X^T X)^(-1) X^T y,这个公式要会推,考试经常让你推导。
但线性回归的考点不止于此。它容易受异常值影响,因为平方误差会把大误差放大得更狠;它对特征尺度敏感,所以一般要先做标准化。如果特征之间存在严重共线性,X^T X 可能不可逆,这时可以用岭回归加 L2 正则,或者用梯度下降而不是闭式解。
逻辑回归名字里有“回归”,但它干的是分类的活。它通过 Sigmoid 函数把线性输出映射到 0-1 之间,输出的是概率。决策边界仍然是线性的。逻辑回归的损失函数是交叉熵,而不是均方误差。为什么?因为 Sigmoid 函数加均方误差会导致损失函数是非凸的,梯度下降容易陷入局部最优;而交叉熵损失是凸函数,保证能找到全局最优。另外,交叉熵在概率预测上天然合适,它衡量的是两个分布之间的差异。这个“为什么不用 MSE”是超级高频的面试题,务必背熟。
2.2 决策树与随机森林:信息增益、基尼指数必须会算
决策树的核心考点集中在三个地方:特征选择准则、树的生成与剪枝、如何处理连续值与缺失值。
分类任务里,ID3 用信息增益选择特征。信息增益 = 划分前的熵 - 划分后的加权熵。熵的计算公式是 -Σ p_i log(p_i)。信息增益偏好取值多的特征,为了克服这个问题,C4.5 用信息增益比,除以特征的固有值。CART 分类树用基尼指数,基尼系数越小纯度越高。要学会手算一个简单的例子,考试经常给一个小表格让你算“按哪个特征划分最好”。
决策树的剪枝分为预剪枝和后剪枝。预剪枝是在构建过程中提前停止分裂,比如限制树的最大深度、节点最小样本数;后剪枝是先把树建完整,再从底向上把对验证集性能没有提升的子树替换成叶节点。后剪枝通常比预剪枝效果更好,因为它避免了“早停可能错过好结构”的问题。
随机森林属于 Bagging 的典型代表,核心是“样本有放回抽样 + 特征随机选择”。随机森林的两个随机性使得每棵树的相关性降低,从而减少方差,不容易过拟合。它不需要太多调参,对默认参数就表现良好,这是它的核心优势。
2.3 SVM与核函数:从硬间隔到核技巧
SVM 是考点里公式推导最多的一块,值得花时间。核心思想是找一个超平面,使得两类样本的间隔最大化。间隔是支持向量到超平面的最小距离。最大化间隔等价于最小化 ||w||²/2,约束条件是每个样本都被正确分类且函数间隔不小于 1。通过拉格朗日对偶,把原问题转化成对偶问题,最后分类决策只依赖支持向量那些落在边界上的样本。
现实数据往往是线性不可分的,这时有两个思路:一是引入软间隔,允许少量样本违反间隔约束,在优化目标里加一个惩罚项 C;二是使用核函数,把低维空间映射到高维空间,使得数据在高维空间中线性可分。常见的核函数有线性核、多项式核、高斯核(RBF)。高斯核是默认选择,因为它只有一个参数 gamma,而且对大多数非线性数据都有效。
SVM 的考点还包括:对偶问题的 KKT 条件、支持向量的含义、核矩阵的性质(对称半正定)等。期末一般不会让你手推全部对偶推导,但对偶目标函数的形式、SMO 的基本思想、核技巧的本质是什么,要能说出来。
2.4 聚类与降维:无监督里的两大核心考点
KMeans 是聚类里必考的算法。流程是:随机选 K 个中心点,迭代执行“分配样本到最近中心”和“重新计算中心”两步,直到中心不再变化。KMeans 需要提前指定 K 值,对初始中心敏感,容易陷入局部最优,所以常用 KMeans++ 策略初始化:先随机选第一个中心,再按距离平方加权的概率选后续中心。评估聚类效果的指标有轮廓系数和 SSE(簇内误差平方和)。
PCA(主成分分析)的考点集中在这几个问题:它到底在做什么?PCA 的核心是寻找数据方差最大的正交投影方向,把高维数据投影到低维空间,同时尽可能保留原始信息。具体做法是,先对数据做中心化(或标准化),计算协方差矩阵,再对协方差矩阵做特征值分解,取前 k 个最大特征值对应的特征向量构成投影矩阵。特征值越大代表保留的方差越多,所以按特征值降序取前 k 个。这里有一个常见混淆:PCA 是无监督的,它不利用标签信息;LDA(线性判别分析)是有监督的降维方法,它利用标签信息让类间距离最大、类内距离最小。
2.5 集成学习:Boosting 是怎么“串”起来的
集成学习的逻辑链条是:多个弱模型组合成强模型。Bagging 是并行训练多个模型后做投票或平均,降低方差;Boosting 是串行训练多个模型,每个模型都去纠正前一个模型的错误,降低偏差。
Boosting 的代表是 AdaBoost 和 GBDT。AdaBoost 的考点是:每一轮提高被前一轮分类器错分的样本权重,降低正确分类样本的权重,然后重新训练。最后把所有弱分类器按加权投票组合起来。GBDT 的思路是每一棵树拟合的是前面所有树的负梯度(在回归问题里就是残差)。XGBoost 在 GBDT 基础上加入了二阶导数信息、正则项、列采样和并行优化,所以训练速度和精度都更好。
考试经常问 Boosting 为什么不容易过拟合。答案是,虽然 Boosting 是串行拟合残差,理论上模型复杂度会随迭代次数增加,但如果每棵树深度控制得好,加上学习率(步长)设置合理,整体仍然有很好的泛化性能。实际调参时,学习率小一点、树的数量多一点的组合经常比大学习率少树木效果更稳。
3. 模型评估、调参与优化策略
3.1 评估指标:精确率、召回率、F1、ROC,一个都不能含糊
分类任务的评估指标是必考内容。混淆矩阵是基础:TP 是正类预测为正类,FP 是负类预测为正类,FN 是正类预测为负类,TN 是负类预测为负类。
精确率 Precision = TP/(TP+FP),意思是“你预测为正类的样本里,多少是真的正类”。召回率 Recall = TP/(TP+FN),意思是“真实正类的样本里,你找回了多少”。两者往往此消彼长,所以用 F1 分数综合两者:F1 = 2 * Precision * Recall / (Precision + Recall)。
ROC 曲线和 AUC 是另一个高频考点。ROC 横轴是假正例率 FPR = FP/(FP+TN),纵轴是真正例率 TPR = TP/(TP+FN)。ROC 曲线越靠近左上角越好,AUC 是曲线下的面积,取值范围 0.5 到 1,AUC 越大代表模型排序能力越强。AUC 最直观的理解是:随机抽取一个正样本和一个负样本,模型给正样本打分高于负样本的概率。
什么时候用准确率,什么时候用 F1?在样本不平衡的场景下(比如欺诈检测、疾病诊断),准确率会失真——99% 都是负样本时,你全预测负样本准确率也有 99%,但这个模型毫无意义。这时要看精确率、召回率、F1,或者用 PR 曲线。热词里有“机器学习检测”,实际做异常检测时这一点特别重要。
3.2 正则化与损失函数:L1 和 L2 的差别要能说透
正则化是防止过拟合最常用的手段。L2 正则(岭回归)在损失函数中加入所有权重平方和的惩罚项,权重会被压缩到接近 0 但不等于 0,好处是保证解的稳定性和唯一性。L1 正则(LASSO)加入的是权重绝对值之和,因为它在 0 点不可导,所以优化过程会把一部分权重压缩到恰好为 0,天然具备特征选择能力。
为什么 L1 产生稀疏解而 L2 不产生?用图形解释最直观:L1 的约束区域是菱形,尖角在坐标轴上,误差等值线很容易先碰到角点,角点上某个坐标为 0;L2 的约束区域是圆形,边界光滑,切点落在坐标轴上的概率很低。考试遇到这个问题,能用这个几何解释就基本满分。
另一个常考的正则化技巧是 Dropout。它是深度学习中用的,训练时以一定概率随机丢弃一部分神经元,相当于每次训练一个不同的“子网络”,最后在测试时使用全部神经元。它本质上是一种集成学习的近似。期末如果只考到传统机器学习,Dropout 一般不考,但如果你的课程还涵盖了“深度学习和机器学习”的对比,那就可能要写两句。
3.3 梯度下降与优化器:手推公式不是目的,理解参数更新才是
线性回归和逻辑回归的求解都依赖梯度下降。梯度下降的更新公式是 w = w - lr * gradient。学习率太大,参数会在最优点附近震荡,甚至发散;学习率太小,收敛速度慢。
考试常考的变体有批量梯度下降(BGD)、随机梯度下降(SGD)、小批量梯度下降(Mini-batch GD)。BGD 每次用全量数据计算梯度,准确但是慢;SGD 每次用一个样本,快但梯度噪声大;Mini-batch 介于两者之间,训练深度学习最常用。还有一个容易考的细节是特征缩放的重要性:如果特征量纲差异大,梯度下降的等高线会变成狭长椭圆,更新路径会来回震荡,收敛极慢;标准化后等高线接近圆形,收敛快很多。所以面试题“为什么 SVM 和逻辑回归要做特征缩放”也常用这个逻辑回答。
3.4 超参数调优:网格搜索、随机搜索和贝叶斯优化
调参是实战里绕不开的步骤,也是期末项目报告的加分点。最简单的是网格搜索:给每个超参数列出候选值,再枚举所有组合,配合交叉验证选最优。缺点是组合爆炸,参数多时计算量无法接受。随机搜索的改进是每个参数在给定分布里随机取值,理论上同样数量的尝试可以覆盖更多参数空间。贝叶斯优化则建模目标函数,根据历史评估结果选择下一组最有潜力的参数,效率更高,适合深度学习等单次训练成本高的场景。
课程作业里最实际的建议是:先用粗网格找好参数范围,再用细网格或随机搜索精调。调参之前先固定随机种子保证结果可复现,这个习惯一定要养成。另外,调参是在验证集上调的,不是在测试集上调,这一点我再强调一次,因为实践中忘记这一条的人太多了。
4. 实战路线与常见考点题型分析
4.1 期末笔试常见题型:概念题、推导题、计算题、设计题
概念题一般考名词解释和简答,比如“什么是过拟合,如何防止”“偏差和方差的区别”。这类题复习时建议画一张脑图,把模型家族和关键术语串起来。推导题集中在线性回归最小二乘、逻辑回归损失函数求梯度、SVM 对偶问题推导,建议至少把逻辑回归的梯度推导手写三遍以上。计算题最爱考信息增益、基尼指数、朴素贝叶斯后验概率、KMeans 迭代过程,做题时要静下心一步步算,不要跳步。
设计题是拉开差距的地方。比如“给一个电商用户数据集,预测用户是否会在未来一个月下单,请设计完整方案”。这时候你要把机器学习应用流程完整写出来:数据采集与预处理、特征工程、模型选择、训练验证、评估指标选择。热词里的“机器学习 应用流程”说的就是这个。答题时一定不要只写“用逻辑回归”,要把“为什么选这个模型”“数据不平衡怎么处理”“评估用什么指标”都交代清楚。
4.2 常见复习资料怎么用:吴恩达课程、周志华西瓜书、期末真题
网上的网课和教材很多,但要分清主次。吴恩达的机器学习课程适合入门和建立直观理解,配套作业是很好的练手材料。但如果你是期末冲刺,时间不够的话,不用每个课后作业都精做,把 Linear Regression、Logistic Regression、Neural Network、SVM、KMeans、PCA 这几个核心作业的代码过一遍,搞清楚 Loss、梯度、预测这三个模块怎么写的就够了。
周志华老师的《机器学习》(西瓜书)是很多学校期末考卷的出题来源,尤其是前六章和第八章集成学习。西瓜书的问题在于数学门槛偏高,推导多。第一遍读的时候,不要试图把所有公式都看懂,先把定理和概念抓住,公式推导等第二轮再补。网上流传的“西瓜书课后习题答案”质量参差不齐,答案只能用来对结果,不要直接背,因为考试出题风格会变化。
“西电机器学习期末”“山东大学机器学习期末”这些热词说明很多学校都有自己的题库。最有效的复习方法,是找到本校近三年的期末真题做一遍,分析考点分布。拿不到真题也别慌,把上面提到的模型、指标、优化、流程这四条主线各找 3 到 5 道题练手,覆盖面已经很可观了。
4.3 代码与算法手写题:Python 实现别只停留在“看得懂”
现在的考试越来越喜欢考手写代码或者给定代码填空。高频考点的代码版本要提前写好,存到自己的代码库,随时能调。线性回归的梯度下降实现、逻辑回归的预测函数、KMeans 的迭代主体、PCA 的特征分解过程,这几个我建议你亲自敲一遍,不要直接复制网上的代码。
写代码时,规范比技巧更重要。函数命名清晰、封装好 train/predict 两个接口、处理异常输入,这些在面试手撕代码的时候特别加分。另外要注意 sklearn 的一些默认行为,比如 LogisticRegression 默认带 L2 正则,默认的 C 值是 1.0,如果你在作业里发现自己和预期不符,先检查是不是正则项在起作用。
机器学习环境的搭建也是一个隐藏考点。热词里出现了“sql server 2019机器学习服务器组件下载”“java机器学习用什么组件”“python机器学习模块”这类搜索词。如果在课程里要装环境,我建议直接用 Anaconda 装 Python 全家桶,里面自带了 sklearn、pandas、numpy、matplotlib,基本覆盖本科和硕士阶段所有实验需求。Java 生态里做机器学习一般是借助 Weka、Deeplearning4j,或者直接用 Java 调用 Python 的服务接口,项目里很少纯 Java 做训练。SQL Server 2019 的机器学习服务本质是集成了 Python 和 R 的执行环境,企业里更多是用于数据库内训练和预测,课程作业一般用不到,但你要是论文里有提到也算加分点。
4.4 “机器学习 vs 深度学习”:对比题怎么答不丢分
期末和面试都爱出一个对比题:机器学习和深度学习的区别是什么。复习时要能说清楚以下几点:传统机器学习算法依赖人工特征工程,深度学习可以从原始数据自动学习特征表示;机器学习在中小规模数据上效果好、可解释性强,深度学习需要大量数据和算力,但性能上限更高;深度学习是机器学习的一个子领域,神经网络只是其中的一类模型。
注意不要踩坑:不是说深度学习就一定比机器学习好。在数据量不够、算力有限、模型可解释性要求高的场景(比如金融风控、医疗诊断),传统机器学习反而更适用。答题时把两种方法各自的适用条件写清楚,比站队表态更能体现你真正理解了两者的差异。
5. 常见错误与高效复习的实操建议
5.1 复习中经常踩的坑:数据泄漏、随机种子、指标错选
我每年看期末项目和考研复试的简历,翻来覆去见的错误就那几种。第一种是数据泄漏,典型的做法是在划分训练集测试集之前,就对整个数据集做了标准化或特征选择,后果是测试集的评估指标虚高,真实场景里根本没有这么好看的效果。正确的做法是只对训练集 fit,再用训练集得到的参数对测试集 transform。
第二种是不设随机种子。同一个模型同一套代码,运行两次结果差异很大,你以为自己在调参,实际上在调随机状态。固定 random_state=42 这种小习惯,能让你的实验可复现,也让老师对你的结果有信心。
第三种是评估指标选错。分类问题不管数据平不平衡,一律只看 accuracy。面试官一问“如果正负样本比例是 99:1,你用什么指标”,很多人就答不上来。这题我在前面已经说过了,样本不平衡时看精确率、召回率、F1、AUC,而不是 accuracy。
5.2 高效复习方法:三轮复习法
第一轮是快速过知识点,目标是建立全局框架和核心概念。不用抠推导细节,只要能把“模型分类—损失函数—优化方法—评估指标”这条线捋顺就可以。第二轮刷题,以典型计算题和推导题为主,每道题做完之后想一下“这个知识点如果出成简答题,我能不能把逻辑讲清楚”。第三轮做模拟训练,限定时间完成真题或自拟题,训练答题速度,同时查漏补缺。
复习节奏上,我建议不要太早开始背书,先理解后记忆。很多名词,比如“信息增益”“正则化”“交叉验证”,如果你能用自己的话给一个没学过的人讲明白,那说明你真的理解了。如果你发现自己只能说定义但举不出例子,那大概率还没掌握,回去再看一遍相关章节。
5.3 考前最后 12 小时看什么
如果只剩一天时间,不要再刷难题了,性价比最高的是做三件事。第一,背熟每个模型的应用场景和优缺点对比表,考试简答题直接能用。第二,重新手写一遍逻辑回归的梯度推导和 KMeans 的迭代流程,这两个是出现频率最高又最容易拿分的内容。第三,闭卷默写评估指标的计算公式,包括精确率、召回率、F1、AUC 的含义。把这三件事做完,至少能保住基础分。
我做项目带新人也经常告诉他们,考完试之后真正留下的东西,不是某个模型的推导公式,而是“拿到一个问题,你知道选什么模型、怎么评估、怎么调参”的整套思维方式。机器学习学习到后面,你一定会发现所有模型背后共享的这套方法论才是最值钱的,这也是复习的时候最应该花时间去体会的部分。
最后再分享一个小技巧:拿一张白纸,不看任何资料,从“监督学习、无监督学习、强化学习”三个词开始向外扩展,把你能想到的所有算法、指标、流程、坑全部写下来。写不出来的内容,就是你最后的复习重点。这个办法我每次备考都用,实测比翻十遍笔记管用。
