说实话,考完北交研究生机器学习测试走出教室的那一刻,我心里就一个念头:如果早两个月按“框架—推导—串联”的方式复习,后面那几周根本不用熬得那么狼狈。后来和一起备考的同学复盘,大家最一致的结论是——这套试卷其实不偏不怪,难的是你必须在有限时间里,把机器学习从数据处理到模型评估的整条链路一次串起来。这篇就当一次完整复盘:考点分布、资料怎么取舍、每个高频知识点怎么理解、答题时踩过哪些坑,我都会写清楚。无论是北交在读研究生,还是其他学校正准备机器学习课程考试的同学,都可以照着这个思路来。
1. 先弄清楚:北交研究生机器学习测试到底考什么
1.1 这门课在研究生阶段是什么定位
研究生阶段的机器学习课程,和本科同名课程最大的区别在于:本科可以只讲“怎么调用库、怎么跑通模型”,研究生层次的测试默认你已经具备基本的线性代数、概率论和微积分基础,考察重心落在“能不能解释算法为什么有效、能不能完成公式推导、能不能在具体场景里做对模型选择”。
以北交研究生机器学习课程为例,一学期大概36到48学时,平时会有2到3次编程或者推导型作业,期末测试一般以闭卷或半开卷形式出现。半开卷通常是允许带一张自己手写的A4纸——这张纸怎么利用好,后面会单独说。题型上,常见的组合是:概念简答题、公式推导题、算法流程描述题,再加一个基于给定场景的应用分析题。整体上不要求你背下全部推导,但核心算法的关键公式必须能写出来。
1.2 考点覆盖范围
我按我们这轮的试卷结构反推了一下,覆盖面大概是这样的:
- 数据预处理与特征工程:标准化、归一化、缺失值处理、分类特征编码、数据划分;
- 线性模型:线性回归、梯度下降、最小二乘、逻辑回归、Softmax多分类;
- 决策树与集成学习:信息熵、信息增益、基尼指数、剪枝、随机森林、GBDT思路;
- 支持向量机:间隔、对偶、核函数的基本思想,如果课时够就会涉及;
- 无监督学习:K-Means、PCA;
- 深度学习基础:神经元、反向传播、常见激活函数;
- 模型评估与调参:过拟合、交叉验证、评估指标、学习曲线。
这里有一个规律:学校不要求你对每个方向都钻得很深,但会要求你掌握机器学习的基础架构,也就是从数据进入模型、到损失函数、再到优化求解、最后评估反馈的闭环。考试不一定会出超复杂的SVM推导,但一定会出现“给一个业务场景,让你选择模型并说明理由”这类应用题。
1.3 研究生测试和本科期末的区别
很多同学用本科期末的方式复习,最后会吃亏。本科期末偏爱直接问“什么是过拟合”,研究生版本的类似题目会加一个转折,比如“用验证集判断过拟合时,如果测试集也参与调参会出现什么问题”。这就是研究生层次常见的考法:不直接考定义,而是考你对概念边界的理解,也就是对数据泄露、信息泄露这类问题的敏感度。
因此复习时不能只背结论,还要知道每个方法在什么前提条件下成立、在什么情况下会失效。如果说本科测试考的是answer,研究生测试考的就是reasoning。我自己的体会是:把考点按“概念定义、公式推导、流程掌握、场景应用”四个维度检查一遍,比单纯刷题要高效得多。
2. 网上那些经典资料,实际用起来怎么取舍
说到机器学习复习,大家都会搜到吴恩达、李宏毅、西瓜书、各种“机器学习知识点总结”、还有一堆“八股”总结。资料太多反而是负担。我实际用下来,比较合理的主次关系是这样的。
2.1 主线教材:《机器学习》(西瓜书)
如果目标是深度的课程考核,建议主线用周志华的《机器学习》而不是网上课程视频。因为考试考查的推导和概念,基本都源自这本书或者老师课件。读的时候不需要每一章都精读,前几章(绪论、模型评估、线性模型)要非常熟,决策树、神经网络、支持向量机、集成学习这四章至少要会推核心公式,后面的聚类、降维抓主要思想即可。
书里的公式推导比较密集,第一次读大概率看不懂,这很正常。正确读法是配合课堂PPT一起看,先看PPT的结论,再用西瓜书的推导补细节。如果哪个公式卡住了,不要死磕太久,标记下来跳过去,等整体框架建立后再回来看,往往就通了。
2.2 吴恩达机器学习:只用来补基础
吴恩达的《机器学习》绝对是全球最友好的入门课,对线性代数不熟、矩阵推导没底的同学非常有用。但必须承认,它面向的是本科生甚至非理工背景的学习者,难度比这次研究生测试低一个档次。它把每个概念讲得极其细致,连带梯度下降的可视化都做了,这一点很适合找感觉。
所以我的建议是:如果你已经具备基础,不需要花整段时间刷课;如果哪里卡住了(比如梯度下降到底在干什么、正规方程怎么来的),就去看对应章节,当作随查词典用。这比从第一集看到第十集效率高得多。我当时就在复习中期专门回看了“梯度下降”和“学习率”两节,十几分钟就把模糊的直觉补齐了。
2.3 李宏毅机器学习:用来建立直觉
李宏毅的课程特点是更新快、案例生动,对深度学习部分讲得很贴近工业界,经常拿真实任务举例。它的价值主要在帮你建立“这个算法到底在做什么”的直觉,比如听完一个人脸识别案例,整个神经网络的工作流程就活了。但是课程覆盖太广,很多内容考试不会涉及。
建议只挑其中讲线性模型、神经网络、反向传播的部分来看,其余结合自己的课时进度选择性跳过。尤其是反向传播那一段,李宏毅的讲法比很多教材都直观,理解起来省力不少。
2.4 冲刺期的“八股”总结:能用但别依赖
考前冲刺阶段,网上大量“机器学习八股文”“知识点总结”确实能帮你快速回忆术语。这类材料的优点是覆盖了标准答案里高频出现的关键词,比如偏差方差、正则化、过拟合、梯度消失等,很适合考前最后三天用来快速扫描盲区。
缺点是它把知识点变成了一个个孤立条目,缺乏推导过程。如果完全靠八股裸上,遇到要求手写推导的题目会很尴尬。所以正确姿势是:用它查漏,不用它当主课。可以把八股总结当成一个知识清单,每看到一个名词,就问自己“我能推导它吗?能举出适用场景吗?能说出失效边界吗?”能,说明掌握;不能,赶紧回教材补。
2.5 动手项目:学有余力再上
如果备考时间在一个月以上,强烈建议至少跑两个小项目:一个线性回归(预测连续值),一个逻辑回归或决策树(分类)。不需要大规模,用Python和Pandas就够了。重点放在熟悉数据处理的常见套路:读取数据、处理缺失值、划分训练集测试集、标准化特征、打印评估结果。做完这两个,你会发现很多公式从“背”变成了“知道为啥这么写”,整个学习闭环才算真正闭合。
我把这些资料的定位整理了一张表,方便参考:
| 资料 | 核心价值 | 局限性 | 优先级 |
|---|---|---|---|
| 西瓜书+课堂PPT | 系统、贴近考点、推导齐全 | 公式密集,初读劝退 | 主线 |
| 吴恩达机器学习 | 基础概念友好、梯度下降讲得清楚 | 深度不够 | 按需补充 |
| 李宏毅机器学习 | 直觉好、案例新、贴近工业 | 范围太广、深度参差 | 挑重点看 |
| 知识点总结/八股 | 考前快速回忆术语 | 缺乏推导、条目化 | 冲刺辅助 |
| 课后小项目 | 打通理论与代码 | 需要时间 | 学有余力 |
3. 高频考点逐个拆解:不只是背公式
这是全文最重的部分。我把备考中反复出现的考点按“数据处理—线性模型—决策树—评估”拆开讲,尽量给出推导逻辑而不是只丢结论。
3.1 数据处理到底在做什么
考试里数据处理往往放在第一道或第二道题,分值不高但很容易失分,因为大家总觉得它简单。实际上它考的是你对机器学习流程底层的理解。
先说标准化和归一化。为什么标准化重要?最直观的解释是:如果两个特征量纲差太远,比如身高用厘米(170)而收入用元(15000),梯度下降会沿着损失函数等高线拉得很扁的形状前进,导致收敛非常慢。标准化之后两个特征的尺度大致相同,优化才平稳。常见的标准化公式是 z = (x - μ) / σ;而归一化是把数据压到0到1之间,公式是 (x - min) / (max - min)。注意考试时别把两者混答,标准化依赖均值和方差,归一化依赖最小值和最大值,这是两个完全不同的变换。
缺失值处理也是高频。常规思路有三种:直接删除样本,适合缺失比例极低的情况;用均值、中位数或众数填充,适合数值型且缺失随机的特征;用回归或模型预测填充,相当于把缺失值当作标签来学习。答题时最好补一句:必须先看缺失机制,随机缺失才能用简单填充;如果是系统性缺失,直接填均值会引入偏差,导致后续模型估计不准确。
分类特征编码要警惕顺序数字陷阱。比如把颜色“红黄蓝”编码成1、2、3,模型会误以为蓝色比红色大,从而学出错误的数值关系。所以名义变量通常用One-Hot编码,只有真正有序的等级变量(比如学历、评分)才适合直接编码。这个点在应用分析题里经常出现,用来考察你是否能把业务特征正确转成模型输入。
最后是数据划分,这里最容易埋坑。严格流程是:先把数据划分为训练集和测试集,在训练集内部再划分验证集或做交叉验证;所有预处理参数(均值和方差)都只能在训练集上计算,再作用到验证集和测试集。如果先对全量数据做了标准化再去划分,就会造成数据泄露,验证集结果虚高,上线后实际效果远不如预期。
3.2 线性回归:从最小二乘到梯度下降
线性回归几乎是每张试卷的必考题。考查点集中在:模型假设、损失函数、闭式解、梯度下降、正则化。
模型假设写成:
y = w^T x + b
损失函数用均方误差MSE:
L(w) = (1/n) Σ (y_i - w^T x_i - b)^2
最小二乘法可以直接求出闭式解。把所有样本写成矩阵形式,加上偏置项之后有:
w_hat = (X^T X)^(-1) X^T y
这里有个考点:为什么需要X^T X可逆?因为正规方程的推导需要求逆,如果特征之间存在高度共线性或样本数小于特征数,X^T X就是奇异矩阵,无法直接求逆。这也是为什么需要正则化的原因之一。复习时把这个问题想透,考试中出现“特征共线时线性回归会遇到什么问题”这类变体题就能答到点上。
梯度下降是另一高频点。对均方误差求梯度,可以得到更新规则:
w := w - η * (2/n) X^T (Xw - y)
很多同学在第一步漏掉系数2/n,虽然不致命但会扣分。推导的关键是矩阵求导的链式法则:先把Xw - y看作整体,再对内层w求导。考试时如果能顺手写出这个链式过程,阅卷观感会明显不同。
正则化部分要理解L1和L2的区别。L2正则化,也就是岭回归,在损失上加λ||w||_2^2,让参数整体变小但不会真正归零;L1正则化,也就是Lasso,加的是λ||w||_1,它的几何特征是菱形约束区域,更容易让参数在坐标轴上被压缩为0,也就是产生稀疏解。考试如果问“为什么L1能稀疏”,不要只背结论,最好描述一下二维等高线和约束区域切点的位置:L1的菱形边界有角点,损失等高线更容易和角点相切,一旦相切就产生零系数。
3.3 逻辑回归:为分类而生
逻辑回归和线性回归名字很像,但解决的任务完全不同。线性回归输出连续数值,适合回归;逻辑回归输出概率,适合二分类。
逻辑回归先把线性输出 z = w^T x + b 通过sigmoid函数:
σ(z) = 1 / (1 + e^(-z))
映射到(0,1)区间。它的损失函数不是均方误差,而是交叉熵:
L = -[y log(p) + (1 - y) log(1 - p)]
很多同学会问:为什么逻辑回归不用MSE?主要有两个原因。第一,MSE关于sigmoid的输出是非凸的,梯度下降容易陷入局部最小值;而交叉熵在参数空间整体上是凸的,更容易找到全局最优。第二,sigmoid函数在两端斜率趋近于0,如果用MSE,梯度会非常小,训练速度很慢;交叉熵引入log后会把梯度整理得更干净,推导出来是:
w := w + η * (1/n) Σ (y_i - p_i) x_i
这里的正负号要特别注意,写反是常见失分点。我自己考前默写时就在这里错过一次,后来把它单独记在A4纸易错区才放心。
多分类时,逻辑回归的推广是Softmax回归,把线性输出变成K个类别的概率分布。考试通常只要求知道思想和公式,不太会要求完整推导。逻辑回归还有一个高频考点:决策边界。逻辑回归的决策边界是线性的,因为在p=0.5处等价于w^T x + b = 0。这个结论也暗示了它适合线性可分或近似线性可分的数据,面试和笔试都很喜欢问。
3.4 决策树与集成学习:信息论的运用
决策树是各种总结材料里出现率最高的部分,而且特别爱考计算题。需要掌握的基础知识包括:
信息熵定义是:
Ent(D) = -Σ p_k log2 p_k
信息增益表示用特征a划分后熵的减少量:
Gain(D, a) = Ent(D) - Σ (|D_v|/|D|) Ent(D_v)
ID3决策树用信息增益作为划分标准,但有个缺点:偏好取值数目多的特征。比如一个无意义的ID列,每个取值只有一个样本,信息增益会非常大,但它完全没有泛化能力。为了解决这个问题,C4.5改用增益率,在信息增益基础上除以固有值,相当于对取值多的特征做惩罚。CART树则用基尼指数:
Gini(D) = 1 - Σ p_k^2
剪枝也是必考概念。预剪枝在生成过程中提前停止,速度快但容易欠拟合;后剪枝先生成完整树再自底向上剪掉子树,耗时但泛化性通常更好。答题时要注意:剪枝的根本目的是提高模型的泛化能力,不只是减少过拟合,原理是通过验证集判断剪枝前后精度变化。一整棵完全生长的树很可能把训练集的每个细节都记住,包括噪声,必须靠剪枝把它拉回来。
常见计算题模式是:给你一个小型数据集,包含若干特征,让你计算某个特征的信息增益,并选择最优划分属性。计算步骤是:先算根节点熵,再按特征取值划分子集,分别算子集熵,加权平均得到条件熵,最后相减。这一步一定要细心,算错一个小数后面全乱。我备考时连续算了三道这类题,才彻底把流程固定下来。
集成学习里,Bagging的思路是并行训练多个基学习器然后投票或平均,主要降低方差,代表性算法是随机森林;Boosting的思路是串行训练、每一轮把权重集中到上一轮分错的样本上,主要降低偏差,代表性算法是AdaBoost和GBDT。这个区别必须说清楚,我见过不少同学答反。更细的考点还包括随机森林在Bagging基础上引入特征随机选择,进一步降低树与树之间的相关性。
3.5 模型评估与调参:所有算法的共同收尾
无论什么模型,最后都要回答“这模型到底行不行”。这部分分值占比很高,而且常和应用题混在一起。
过拟合的判别是基础中的基础。如果训练误差持续下降,但验证误差开始上升,说明模型已经开始记忆训练数据中的噪声。这正是“泛化能力”这个研究生层次的核心话题,考试很可能要求你联系偏差方差分解来解释:模型复杂度增加时,偏差下降、方差上升,测试误差呈现U形曲线。训练误差低不代表模型好,真正要关心的是测试误差。
应对过拟合的措施要背熟但也要会用:收集更多数据、引入正则化、降低模型复杂度、用集成方法(随机森林比单棵决策树通常更稳)、神经网络里用Dropout和早停。答题时至少列出三条,并结合场景说一句“在这个任务中我更倾向于……”,这会让你的答案更有说服力。
评估指标按任务分。分类任务里:
- 精确率 Precision = TP / (TP + FP),回答“预测为正的样本中有多少真的为正”
- 召回率 Recall = TP / (TP + FN),回答“真正为正的样本中有多少被找出来”
- F1是两者的调和平均,F1 = 2PR / (P + R)
在类别不平衡时只看准确率不靠谱。比如99%负样本,全预测负样本也有99%准确率,但毫无意义。这时通常结合PR曲线或ROC曲线。ROC曲线横轴是假正例率,纵轴是真正例率,AUC就是曲线下面积,它衡量排序能力,对类别不平衡相对稳定。如果题目里出现“信用卡欺诈检测”“用户流失预测”这类正样本极少的故事背景,一定要主动提AUC或F1,而不是只报准确率。
交叉验证的作用要写清楚:K折交叉验证把训练集分成K份,轮流用K-1份训练、1份验证,最终取平均。它不是为了提升模型准确率,而是为了稳定评估模型之间的好坏。常用的K值是5或10,样本量小的时候可以加大折数。别答成“交叉验证能增加训练数据”之类的表述,那是审题模糊。
学习曲线是压轴常客:横轴是训练样本量,纵轴是误差。如果训练误差和验证误差最终都收敛到较高水平且两者靠得很近,说明模型欠拟合;如果训练误差明显低于验证误差,说明过拟合。考前最好自己在纸上画一遍这条U形或者两条曲线的关系,考场上就不慌了。
4. 从“考前八股”到实际答题:思路复盘
4.1 概念题:不是默写定义,而是答出分层
研究生测试的简答题,不是让你写三行定义就完事。正确的答题结构分四层:定义、原因、措施、适用边界。
举个例子。“什么是过拟合?如何避免?”作答可以这样组织:定义是模型在训练集上表现好但在未见数据上表现差;原因是模型容量过大或训练数据不足,模型学到了训练噪声;应对措施包括增加数据、正则化、降低复杂度、集成、早停;最后补充一句“过拟合的判定必须依赖验证集,不能用训练集误差作为唯一判断标准”。这样就把区分度拉满,阅卷容易给高分。
考试时关键词一定要准,比如“泛化能力”“正则化”“验证集”“数据泄露”这些术语尽量原样出现,不要用同义词替换太多。阅卷老师对标准术语的敏感度很高,关键词一旦出现,分值就抓到了。
4.2 推导题:必须能徒手写完
推导题最怕的不是不会,而是“看答案都会、自己一写就卡壳”。所以备考后期,建议把以下推导全部练到不看资料默写的程度:线性回归最小二乘和梯度下降、逻辑回归交叉熵梯度的推导、决策树信息增益公式表达式、PCA最大方差目标函数推导。
我考前的做法是准备一个本子,每天晚上抽一个算法,先默写公式,再口述每一步依赖什么前提,最后拿红笔补漏。坚持三轮之后,推导题的稳定性会明显提升。这个习惯本来是为了应对考试,后来做研究看论文也一直受益,因为很多论文的推导本质上就是这类基础公式的堆叠。
4.3 应用题:先定位任务类型,再套通用框架
应用题最典型的形态是:给出一个业务背景,比如企业员工离职预测,让你描述一套机器学习解决方案。这个其实可以套通用框架:数据获取与预处理、特征工程、模型选择、训练与验证、评估与上线。
以员工离职预测为例,步骤是:先收集员工历史数据,包括在职状态、工龄、薪资、部门、考勤等;处理缺失值和异常值,对部门做One-Hot编码,对薪资等数值特征做标准化;任务类型是二分类,可选逻辑回归或决策树;用5折交叉验证评估,因为正负样本可能不平衡,指标选AUC或F1而不是准确率;上线前用测试集做最终检验。这样一个答案结构完整且不容易漏点。
我自己的经验是,这种题目扣分经常发生在忽略类别不平衡和处理缺失值的细节上。落笔前先画个小框架,比如“数据→特征→模型→评估→部署”,再逐项补内容,会比想到哪写到哪强很多。答题的条理性本身就在展示你对机器学习应用流程的掌握程度。
5. 如果让我再考一次:踩坑复盘与备考时间表
5.1 时间分配教训
我最开始的误区是花了两周刷吴恩达的视频,感觉“会了”;真正进入模拟题阶段才发现,看视频积累的自信在推导题面前完全不够用。后来调整为“教材框架→手推核心公式→串联流程→每两天一套真题式自测”,效率才上来。
如果你现在的复习时间只剩下三周,我建议按这个节奏来:第一周搭建框架并精读线性模型、决策树两章;第二周每天两个算法手推公式,同时开始做数据处理和评估指标的小题;第三周集中做应用综合题,并每天早上先花半小时默写全部核心公式,再进入新内容。最后两天只过错题和自己的易错点清单。
5.2 三个提升最明显的习惯
第一个习惯:把每个算法整理成一张“假设-损失-优化-评估”的一页卡片。假设写明它适用于什么数据、决策边界形状如何;损失写出完整表达式;优化写清梯度更新公式和关键符号;评估写明用什么指标、为什么。一张卡片就能覆盖绝大多数考点。
第二个习惯:考前两周开始每天默写一个推导题,写完立刻对照教材。我可以负责任地说,默写一遍胜过看三遍。很多推导你看时觉得顺滑,合上书才发现第二步就开始犹豫。
第三个习惯:对每个算法问一句“这个算法在什么条件下会失效”。比如线性回归在特征共线时失效、K-Means在类别不均衡时失效、决策树在数据维度高时容易过拟合。写不出来的就是盲区,考前一天集中补。
5.3 考试当天的小技巧
考试前一晚不要刷新题,把卡片和流程过一遍就行。考场上先整体浏览一遍试卷,把最熟悉的题目先做,推导题写到最后再检查符号和分母。如果要带A4纸,不要抄大段文字,应该写公式索引和易错点,比如“逻辑回归梯度正负号”“信息增益公式”“标准化公式”。纸张空间有限,只有真正易错的地方才值得占用位置。
我个人现在做项目最大的体会是:研究生阶段的考试,看上去是在考公式,实际上是在考你有没有把机器学习当作一套“数据—损失—优化—评估—迭代”的系统在工作。公式是系统里的零件,理解了这句话,复习时就不会再被各种资料牵着走。备考那段时间虽然难熬,但把整条链路串起来之后,再看更复杂的模型、更花哨的网络结构,心里都有底。