2026/11/3 3:16:49

机器学习期末复习:别刷题背答案,理解模型机制与评估链路

机器学习期末复习:别刷题背答案,理解模型机制与评估链路 简介这份《机器学习期末复习题及答案》面向准备机器学习课程期末考核的本科生与自学者围绕概念辨析、算法原理和编程步骤梳理高频考点适合考前集中刷题与查漏补缺。压缩包内为1个docx文档约20KB按单项选择题、多项选择题、名词解释、简答题和编程题组织题目附带参考答案便于对照自测。内容覆盖训练集与测试集划分、欠拟合与过拟合、K近邻、朴素贝叶斯、Sklearn线性回归、聚类、支持向量机核函数、回归评估指标、决策树生成以及神经网络基础等知识点编程题还给出简单线性回归和K近邻分类的建模、拟合、预测与评价步骤。已有13141人学习适合用较短时间完成知识点回顾、题型适应和易错概念复核。1. 机器学习期末复习为什么「刷题背答案」在机器学习里必然翻车机器学习期末考试的复习资料绝大多数人拿到手的第一反应是背答案选择题记住 A、B、C、D名词解释一字不差地默写。但这份资料里有一道题会立刻让背书策略失效——「以下属于解决模型欠拟合的方法是」选项里既有「增加训练数据量」又有「增加训练迭代次数」还有「正则化」。如果你只背了答案换一道变体题立刻懵如果你理解欠拟合的本质是模型容量不足以表达数据规律那么你就能判断正则化是压制模型复杂度的手段方向相反属于治过拟合的药。这就是这份复习题真正的价值它不是题库而是一张被压缩成问答形式的知识地图。每一道选择题的背后都对应一个具体的机制判断每一道编程题的背后都对应一条 sklearn 的调用链路。把题目当检索入口顺着题目往下挖原理你才可能在一张卷子上同时在选择、名词解释、简答和编程四个题型里都不掉链子。接下来几章我会按「模型怎么学 → 怎么评估 → 怎么防止学歪 → 代码怎么落地」的顺序把这份资料里的技术点拆开讲透让你看到每道题在问什么。2. 训练集与测试集为什么要留一份「不能碰」的数据资料里第一道单选题就是「机器学习把数据集分成训练集和B测试集」简答题又问「为什么要把数据集分成训练集与测试集」。这两个问题指向同一个机制模型评估的有效性来自数据隔离。如果模型在训练时见过某条数据它在这条数据上的表现就不再是对「泛化能力」的估计而是对「记忆能力」的复述。2.1 拟合与泛化的分界线机器学习的目标不是让模型在已知数据上算得准而是让它在没见过的数据上仍然准。资料里对这条边界的描述很直白「当拟合模型时完全依靠训练集数据完成拟合尽管对训练集数据来说该模型是比较精确的但并不能保证当它应用在其他数据时还保持着较高贴合度」。用数学语言说训练集上的误差叫经验风险真实分布上的误差叫期望风险。我们只能观测前者却真正关心后者。测试集的作用就是用一个独立采样出来的小数据集去无偏地估计期望风险。这里的关键词是「独立采样」——测试样本必须没有参与任何形式的参数更新包括特征标准化时的均值方差计算、超参数搜索时的模型选择。常见的实现思路是这样的划分流程from sklearn.model_selection import train_test_split # X 是特征矩阵, y 是标签; random_state 固定随机种子保证可复现 X_train, X_test, y_train, y_test train_test_split( X, y, test_size0.2, # 20% 留作测试, 小数据集可放到 0.3 random_state42, # 固定种子, 让每次实验可比 stratifyy # 分类任务按类别比例分层, 避免某类样本全落到一侧 ) # 注意: 标准化器只能在训练集上 fit, 再 transform 测试集 # 若先对全量数据 fit, 测试集的均值方差就泄漏进了训练过程test_size决定留出比例样本量小的时候 20% 可能只剩几十条评估方差会很大这时更稳的做法是交叉验证把训练集切成 K 份轮流留一份做验证最后取平均。stratify参数在类别不均衡时尤其重要比如正负样本 9:1随机划分有可能测试集里一个正样本都没有评估结果直接失真。提示划分之前先做一次全量数据的乱序检查。如果原始数据是按标签或时间排序的直接切分会得到分布完全不同的训练集和测试集这是评估结果异常偏高的常见原因。2.2 测试集不能反复使用一个容易被忽略的事实测试集只能用一次。如果你根据测试集的表现反复调超参数、改特征测试集的信息就通过你的决策泄漏进了模型它的评估结果会逐渐偏向乐观。工程上的标准做法是三段划分——训练集拟合参数、验证集挑选超参数、测试集只在最后报告一次。资料里没提验证集但这是测试集机制成立的前提缺了它测试集就退化成了第二个训练集。3. 欠拟合与过拟合模型容量这根轴上的两端资料的单项选择题里有一道高信息量的题「以下属于解决模型欠拟合的方法是C增加训练过程的迭代次数」选项混入了「增加训练数据量」通常缓解过拟合、「对模型进行裁剪」减小容量加重欠拟合、「正则化」压制复杂度治过拟合。四个选项其实是围绕「模型容量」这一根轴展开的。3.1 名词解释背后的偏差-方差结构资料给出的欠拟合定义是「在训练数据和预测结果时模型精确度均不高的情况未能把握核心特征」过拟合的定义是「模型出现拟合过度的情况特征值选取过多」。这两句话可以统一到偏差-方差分解里期望误差 偏差² 方差 不可约噪声。欠拟合是偏差主导模型太简单连训练集的规律都没抓住过拟合是方差主导模型对训练集里的噪声过度敏感换一批数据表现就崩。判断当前处在轴的哪一端看训练误差和验证误差的差值训练误差验证误差诊断典型处置高高欠拟合增加模型复杂度、增加迭代轮数、补充有效特征低高过拟合正则化、减少特征、增加数据、早停低低合适保持关注边际收益这张表比背四个选项有用得多因为考试可以出任意变体而诊断逻辑只有一套。资料里「增加训练过程的迭代次数」之所以能缓解欠拟合是因为迭代不足时模型还没收敛到当前容量下的最优解属于优化不充分而不是容量不足——这是两种不同的欠拟合来源考试里常被合并成一个选项理解时最好分开。3.2 正则化为什么是反向操作资料的多选题提到「正规化回归模型有BCD岭回归、最小绝对收缩与选择算子、弹性网络」。这三个都是正则化家族岭回归加 L2 惩罚最小绝对收缩与选择算子Lasso加 L1 惩罚弹性网络把两者加权组合。它们的共同点是在损失函数里加一项与参数大小相关的惩罚# 以岭回归为例, 目标函数为 ||y - Xw||^2 alpha * ||w||^2 from sklearn.linear_model import Ridge # alpha 越大, 惩罚越强, 模型容量越小, 越偏向欠拟合一侧 # alpha 越小, 越接近普通最小二乘, 越容易过拟合 model Ridge(alpha1.0) model.fit(X_train, y_train)alpha是控制点在容量轴上位置的旋钮。资料里「特征值选取过多」被列为过拟合的原因正则化的作用正是把不重要的特征权重压向零L1 直接压成零实现特征选择L2 压小但不为零从效果上等价于减少有效特征数。所以当题目问「缓解欠拟合的方法」时正则化必然是干扰项它的方向与需求相反。注意L1 和 L2 的选择不是玄学。特征维度高且大部分无用用 L1 做稀疏化特征之间高度相关用 L2 更稳因为 L1 在相关特征里随机保留一个结果不稳定。4. 四类算法的判定逻辑从 KNN 到朴素贝叶斯的概率视角这份资料的选择题反复考查算法的归属和公式比如「K 近邻算法是A有监督学习」「朴素贝叶斯算法的判定公式是AH(x)argmax P(Ci)ΠP(ak|ci)」「PCA 降维是B无监督学习」。这些题本质上在问这个算法有没有标签、它的决策依据是什么。4.1 KNN没有训练过程的懒惰学习KNN 的机制极其朴素给定一个待分类样本找训练集里距离它最近的 K 个样本按多数投票决定类别。资料把它归为有监督学习因为投票用的是带标签的邻居但它在训练阶段几乎不做任何计算只是把数据存起来所有开销压在预测时——这类方法被称为懒惰学习lazy learning与之相对的是线性回归、决策树那种训练时就把参数或结构定下来的急切学习。距离度量和 K 的取值是两个决定成败的参数。K 太小模型对噪声极度敏感一个错标样本就能翻转结果方差大K 太大决策边界被平滑得过头邻近的正确结构被稀释偏差大。常见做法是取奇数避免平票并用交叉验证在候选集合里选。from sklearn.neighbors import KNeighborsClassifier # n_neighbors 即 K; metric 默认欧氏距离, 高维场景需谨慎 knn KNeighborsClassifier(n_neighbors3, metricminkowski, p2) knn.fit(X_train, y_train) pred knn.predict(X_test)资料编程题给出的数据集是二维十个点、两类标签这正是 KNN 最好讲清楚的场景在平面上画出两类点K3 时待测点周围三个邻居的标签分布直接决定结果没有任何隐式参数需要解释。这里还有一个常被考试忽略的点KNN 对特征尺度敏感。一个取值范围 0 到 1000 的特征会完全主导欧氏距离另一个 0 到 1 的特征等于没参与计算。所以标准化不是可选项是使用 KNN 的前置条件。4.2 朴素贝叶斯一个「不成立」的假设换来可计算性资料给出的判定公式 H(x)argmax P(Ci)ΠP(ak|ci) 里那个连乘符号是关键。按贝叶斯定理我们要算的是 P(Ci|X)其中 X 是多个特征的联合取值。直接估计联合概率需要指数级的样本量维度一高就彻底不可行。朴素贝叶斯的解法是假设特征在给定类别下条件独立于是联合概率拆成每个特征条件概率的连乘。这个假设在现实中几乎从不成立——文档分类里词与词明显相关——但奇妙的是分类任务只关心哪个类别的后验概率最大不关心概率的绝对值所以即使概率估计有偏排序往往仍然正确。这就是它能在文本分类里长期占据基线位置的原因。实现上要注意平滑。如果某个特征取值在某类别下从未出现连乘就会得到零一个零把整条后验概率抹平。常见的实现思路是拉普拉斯平滑给每个计数加一个常数from sklearn.naive_bayes import MultinomialNB # alpha 即平滑系数, 默认 1.0; 取 0 表示不平滑, 稀疏数据下极易出现零概率 nb MultinomialNB(alpha1.0) nb.fit(X_train_counts, y_train) # predict_proba 返回各类别后验概率, 可用于观察置信度 proba nb.predict_proba(X_test_counts)alpha越小越接近原始频率估计越大越平滑、越偏向均匀分布。稀疏的文本特征下alpha取 0.1 到 1.0 之间是经验区间。还有一条常考的陷阱多项式朴素贝叶斯要求特征非负词频如果输入里有负数会直接报错连续特征应当用高斯朴素贝叶斯。文档里只说「基于贝叶斯定理求解属于各个类别的概率概率最大的类别即为类别」把三个变体的差异省略了做题时要么看数据形态要么看题目给的公式形式。4.3 决策树与 SVM两种切分空间的方式决策树的原理资料写得很清楚「分支节点表示对一个特征进行测试根据测试结果进行分类树叶节点代表一个类别」。它是一串 if-else 的嵌套把特征空间切成若干矩形区域。多选题问「决策树算法的划分标准」答案是信息增益和基尼指数——对应的正是 ID3、C4.5 用信息增益及增益率、CART 用基尼指数这三代算法。信息增益偏好取值多的特征这是 ID3 的固有缺陷C4.5 用增益率修正CART 则改用基尼指数并支持回归。支持向量机的思路完全不同它不切分空间而是找一条把两类分开且 margin 最大的边界。资料简答题问「如何理解线性可分」答案给了一维找点、二维找线、三维找面、n 维找超平面的递进——这个递进本身就是 SVM 的核心概念分类器是一个超平面。线性不可分时用核函数把数据映射到更高维空间在那里变得线性可分。资料列出的高斯核函数就是最常用的径向基核参数 gamma 控制单个样本的影响半径gamma 越大边界越弯曲、越容易过拟合。提示高斯核的 gamma 和正则化参数 C 是一对联动旋钮。C 大表示不容忍误分类边界更贴合训练数据C 小允许更多间隔违例边界更平滑。调参时两个一起网格搜索不要单独调一个。5. 性能评估与数据清洗被答案掩盖的工程细节资料的两份题目里性能评估出现了三次名词解释里的「准确率、查准率、查全率、综合评价指标」选择题里的「平均绝对误差 MAE」「均方差 RMSE」以及「分类准确度 分类正确样本 / 总样本」。这些指标不是随便列的选错指标会让模型评估彻底失效。5.1 分类指标准确率在什么情况下会骗人准确率的问题在于它对类别不均衡毫无免疫力。假设一个二分类任务里负样本占 95%一个把所有样本都判为负的模型准确率是 95%但它毫无用处。这时要看查准率和查全率查准率是「判为正的样本里真正为正的比例」查全率是「真正为正的样本里被判出来的比例」两者此消彼长权衡点由业务决定——疾病筛查要查全率垃圾内容拦截要查准率。综合评价指标 F1 是两者的调和平均比算术平均更惩罚极端不平衡的情况。资料里把这三个指标并列在「性能评估」的名词解释里答题时应该点明它们各自适用的场景而不只是罗列名字。5.2 回归指标MAE 与 RMSE 的差异在哪资料选择题考「回归模型性能评估平均绝对误差CMAE」另一份考「均方差ARMSE」。这两个指标的差别在于对大误差的惩罚力度。MAE 是绝对误差的平均每个误差线性计入RMSE 先平方再开方大误差被平方放大因此对离群点更敏感。选择依据很实际如果数据里存在少量标注错误或极端值RMSE 会被拉得很难看此时 MAE 更能反映模型的典型表现如果业务上大误差的代价远高于小误差比如预测库存差一点无所谓差十倍会出事就用 RMSE。R² 则回答另一个问题——模型比「直接预测均值」好多少取值可能为负负值意味着模型还不如什么都不学。5.3 数据清洗多选题里的两个选项只是冰山一角资料多选题问「数据清洗包括BD缺失值处理、离群值检查」名词解释补充了「填补缺失值、光滑噪声数据、平滑或删除离群点、解决数据的不一致性」。这四件事里缺失值处理最容易做错。直接删除缺失样本是最省事的做法但如果缺失不是随机的——比如高收入人群更倾向于不填收入——删完的数据分布就偏了模型学到的规律也随之偏移。常见的实现思路是分情况缺失比例极低的列直接删缺失比例高的列若无业务含义也删中间地带用均值、中位数或众数填充或者用模型预测填充。类别特征要单独处理不能把「未知」硬塞成某个已有类别。离群点检查同样需要谨慎。Z-score 超过 3 倍标准差、箱线图超出 1.5 倍四分位距这些都是常用的判定规则但被判为离群的点未必是错误数据——金融欺诈检测里离群点恰恰是目标。是先清洗再建模还是保留离群点换用对异常稳健的模型如基于树的模型取决于任务本身。6. 编程题的调用链路与几个容易翻车的地方资料的两道编程题都只要求写步骤导入库函数、导入数据集、建模、模型拟合、预测、模型评价。这条链路看起来机械但每一步都有具体的参数含义考试答步骤实际写代码时任何一步顺序错乱都会翻车。6.1 线性回归的完整链路与参数import numpy as np from sklearn.linear_model import LinearRegression from sklearn.metrics import mean_squared_error, mean_absolute_error, r2_score # 1. 导入数据集; sklearn 要求特征为二维数组, 单特征需 reshape(-1, 1) X np.array([1, 2, 3, 4, 5]).reshape(-1, 1) y np.array([3, 4, 6, 8, 9]) # 2. 建模: 模型实例化, 此时还没有任何参数被学习 model LinearRegression() # 3. 拟合: 用最小二乘法求解 w0(截距) 和 w1(斜率) model.fit(X, y) # 4. 预测 y_pred model.predict(X) # 5. 评价: 三个指标从不同角度刻画误差 print(MAE:, mean_absolute_error(y, y_pred)) print(RMSE:, np.sqrt(mean_squared_error(y, y_pred))) print(R2:, r2_score(y, y_pred))fit内部做的是最小化残差平方和闭式解为 (XᵀX)⁻¹Xᵀysklearn 用 SVD 分解实现以规避矩阵不可逆的问题。coef_拿到斜率intercept_拿到截距这两个属性在fit之前不存在这也是「实例化」和「拟合」必须分成两步的原因——这种设计让同一个模型对象可以在不同数据上重复训练而不互相污染。注意reshape(-1, 1)是新手最常漏的一步。sklearn 的所有估计器都要求 X 是二维的样本数 × 特征数一维数组会直接抛错。错误信息通常提示 Expected 2D array, got 1D array看到这句话就去检查形状。6.2 「避坑 / 常见问题」五条踩坑记录现象一模型在训练集上 R² 高达 0.99换测试集掉到 0.3。原因通常不是模型不好而是特征里混入了标签的衍生信息或者标准化、缺失值填充在全量数据上做了测试集信息提前泄漏。解决方式是重建流水线把所有依赖统计量的变换包进 Pipeline只在训练集上 fit。现象二KNN 分类结果几乎全是同一个类别。原因是特征未标准化某个大尺度特征主导了距离计算。解决是先做 StandardScaler 再送入 KNN且 scaler 只能在训练集上 fit。另一个可能是 K 取得过大邻域覆盖了过多异类样本。现象三朴素贝叶斯预测时抛出「negative values in data」错误。多项式朴素贝叶斯要求输入非负而 TF-IDF 或标准化后的连续特征可能含负值。解决是改用高斯朴素贝叶斯处理连续特征或对文本改用词频矩阵而非 TF-IDF。现象四决策树训练集准确率 100%验证集惨不忍睹。这是一棵完全生长、没有任何剪枝的树它把每个训练样本都单独切成了一个叶子。解决是限制max_depth、min_samples_leaf或做后剪枝。注意树的深度增加会让模型迅速滑向过拟合一侧。现象五两份复习资料的答案互相矛盾比如「决策树生成有几种算法」一份答 3 一份答 4。这类题的答案取决于教材口径ID3、C4.5、CART 是三代经典算法答 3有的教材把 CHAID 或随机森林算进来则会答 4。解决办法不是死记数字而是记住三个算法名及其划分标准信息增益、增益率、基尼指数遇到变体题按算法名反推。6.3 设计取舍这套知识结构为什么这样组织把这份资料当作一个整体看它的组织逻辑是从「定位」到「机制」再到「操作」单选题确定概念边界和算法归属多选题确认分类体系哪些算法属于哪一族名词解释给出精确定义简答题要求讲清原理编程题落到可执行的调用链路。这个顺序和实际做项目的顺序恰好相反——工程里是先有数据和任务再选指标再选模型最后才关心算法属于哪一类。资料里有一个明显的取舍值得说它把「素贝叶斯」的判定公式作为正确答案给出但完整公式应当是 argmax 后接先验概率乘以各特征条件概率的连乘资料里省略了先验项 P(Ci) 的展开形式只保留了结构。这不是错误而是为了在选择题里保持可辨识度。复习时应当理解结构而不是符号本身。SVM 部分的处理更明显只说「线性不可分是找不到一条直线或平面把两类分开」避开了间隔最大化、对偶问题和核技巧的数学推导。对期末考足够对真正理解不够。如果后续要深入入口就是「为什么最大化间隔等价于最小化参数范数」这个问题。从那以后我每次看到「复习题」这类资料都会先挑出一道有我判断不了的变体题顺着它把机制推一遍——推得通说明这块真懂了推不通说明只是背过。这份资料里最值得这样推的是欠拟合与正则化那组方向相反的操作以及测试集为什么必须留一份不能碰。希望帮到你。本文还有配套的精品资源点击获取