简介重庆大学《数据仓库与数据挖掘》期末考试试卷适合数据仓库与数据挖掘相关专业的学生及备考人员用于检验学习效果与查漏补缺。试卷内容覆盖六大板块数据仓库设计中的四种视图、数据预处理技术及其作用、星型、雪花型与实时星座三种数据仓库模式、决策树分类算法框架、文本分析与KMeans聚类算法并包含汽车保险费率评估的综合设计题。每个板块既有基础概念简答也有基于文档向量距离计算、聚类中心求解等动手算题对考生深度理解模型构建与应用能力要求较高。文件为单个doc文档压缩包仅64KB下载便捷。目前已有734人学习试卷题型完整、附有具体题目与数据可作为期末复习或自我测评的实用参考资料。1. 重大数据挖掘期末考试先搞清楚这门考试到底在考什么复习重大数据挖掘期末考试最常见的翻车方式是把几百页 PPT 从头背到尾结果拿到卷子发现计算题不会推、简答题写不到得分点上。所谓重大通常指这门课学分高、知识点多、挂科影响大老师出题不会只考记忆而是考你能不能把算法用对、算对、说明白。这门考试的本质是算题 说理给你一张小数据集让你手推决策树、跑 K-Means 迭代、找频繁项集再让你解释某个指标为什么这么用。适合谁的场景也很明确如果你是考前突击型选手或者平时听懂了但不会做题这篇笔记按考点把复习路径拆开照着练就能把计算题和简答题的分数稳住。2. 数据挖掘期末考试的知识地图四大算法族与它们的必考推导数据挖掘课程的内容跨度很大从数据预处理到模型评估都有但期末考试的大题基本集中在四个族分类、聚类、关联规则、评估指标。把每一族的必考推导和常见题型吃透等于覆盖了卷面八成以上的计算题和简答题。2.1 分类算法决策树与朴素贝叶斯的计算题套路决策树是计算题的重灾区。考 ID3 时给一张小表让你算信息增益选根属性考 CART 时让你算 Gini 系数考 C4.5 时让你算信息增益率。三者的区别要闭着眼能写出来ID3 用信息增益偏好取值多的属性C4.5 用增益率做除法缓解这个偏好CART 用 Gini 系数每次做二分。手推时最稳的顺序是先算类别的总熵再算每个属性的条件熵两者相减得到信息增益。以经典的两属性二分类数据为例总熵公式是-p1*log2(p1) - p2*log2(p2)计算每个特征的条件熵时要按特征取值分组分别算组内熵再按样本占比加权求和。这块丢分多半是小数位截断不一致建议每步保留三位小数并在卷面上标清底数。朴素贝叶斯的计算题更机械给一个待分类样本分别算每个类别的后验概率比较大小定类别。要注意分子上的类先验概率用训练集频率估计条件概率用特征在类内的出现频率估计。遇到测试样本中有某特征在某个类别下没出现过概率直接变 0这时候必须做拉普拉斯平滑——这是最常见的得分点也是失分点。用 Python 做决策树信息增益计算时我习惯先写一个熵函数再写按特征切分的加权熵import math from collections import Counter def entropy(labels): # 输入是类别标签列表输出是该集合的信息熵 total len(labels) counter Counter(labels) ent 0.0 for count in counter.values(): p count / total ent - p * math.log2(p) return ent def info_gain(data, labels, feature_idx): # data 是二维数组labels 是类别列feature_idx 指定用哪一列特征做切分 total_ent entropy(labels) # 按特征取值分组 groups {} for row, label in zip(data, labels): val row[feature_idx] groups.setdefault(val, []).append(label) cond_ent 0.0 for val, sub_labels in groups.items(): weight len(sub_labels) / len(labels) cond_ent weight * entropy(sub_labels) return total_ent - cond_ent这段代码的关键点在groups字典同一特征值下的所有样本聚合到一起各自算熵。考试手推时也是同样的逻辑只不过换成表格里数数。注意math.log2对应底数为 2如果平时用ln同一道题的结果会整体不同老师阅卷时会按你的底数判断写清楚公式里的底数就不算错。2.2 聚类算法K-Means 与层次聚类的考试常考步骤K-Means 的考试题通常是给 6 个二维点K2初始中心给 A 和 B写出第一次迭代后的簇和中心。步骤固定分配每个点到最近中心重新计算每簇均值重复直到中心不再变化。手推时最容易算错的是距离公式——题目用欧氏距离还是曼哈顿距离必须看清欧氏距离要开平方曼哈顿距离是绝对值求和。另一个陷阱是均值更新后中心点落在非样本点上这是正常的不要试图把中心拉回样本点。如果某个簇为空常见处理是随机选一个距离当前所有中心最远的点作为新中心课程版本不同规则不同考试时按题目给出的规则走。层次聚类考得更多的是距离度量单链接取簇间最小距离全链接取最大距离平均链接取平均。给定距离矩阵让你画树状图或者反过来问你某一步合并的是哪两个簇。这类题只要按矩阵逐步收缩就能做对——每次合并距离最小的两个簇然后重新计算新簇与其余簇的距离。用 Python 手写 K-Means 迭代过程比调 sklearn 更容易理解考试步骤def kmeans_one_step(points, centers): # points 是样本点列表centers 是当前中心点列表 # 返回新的簇划分、新的中心点、每个点到最近中心的距离平方和 clusters [[] for _ in centers] for p in points: # 计算到每个中心的欧氏距离选最近的一个 distances [sum((a - b) ** 2 for a, b in zip(p, c)) ** 0.5 for c in centers] idx distances.index(min(distances)) clusters[idx].append(p) new_centers [] for c in clusters: if c: # 均值作为新中心四舍五入到三位小数方便和手推结果对照 new_centers.append(tuple(round(sum(coord) / len(c), 3) for coord in zip(*c))) else: # 空簇处理本题规定保留旧中心 new_centers.append(None) return clusters, new_centers这段代码对应考试手推 K-Means 的分配—更新循环。clusters列表里每个元素是一个簇的样本列表new_centers计算簇内样本各维度的均值。做作业或复习时用它对答案比自己硬算快很多也能暴露你手推时哪一步分配错了。2.3 关联规则Apriori 与 FP-Growth 的频繁项集挖掘关联规则的必考题是 Apriori。给一个事务数据库和最小支持度让你生成频繁项集、计算置信度或者判断某条关联规则是否成立。Apriori 的核心是频繁项集的非空子集也必须是频繁的这一先验性质流程是先找频繁 1 项集再由频繁 k-1 项集连接生成候选 k 项集剪枝掉含非频繁子集的候选项最后扫描数据库数支持度。手推时最容易错的是连接步两个项集能连接的条件是前 k-2 个元素相同最后一个元素不同。很多同学把集合直接求并集导致漏掉一些候选。正确做法是把项集按字典序排序然后只对前缀相同、尾项不同的两项集做并集。置信度公式是support(A∪B) / support(A)提升度是confidence / support(B)提升度大于 1 才说明 A 对 B 有正向促进。FP-Growth 在期末考试中通常不要求手推完整过程但会考它相比 Apriori 的优点只需扫描数据库两次不需要反复生成候选集。如果出一道简答题答出用 FP 树压缩事务、避免候选集爆炸就能拿大部分分。练习 Apriori 的候选生成时可以写个短函数验证def apriori_candidates(freq_sets, k): # freq_sets 是频繁 (k-1) 项集列表每个项集是 tuple 且已排序 # 返回候选 k 项集列表 candidates set() n len(freq_sets) for i in range(n): for j in range(i 1, n): a, b freq_sets[i], freq_sets[j] # 前 k-2 个元素相同尾元素不同才能连接 if a[:-1] b[:-1] and a[-1] ! b[-1]: candidates.add(tuple(sorted(set(a) | set(b)))) return sorted(candidates)重点在a[:-1] b[:-1]这个条件它保证连接不是随便求并集。如果你手推 Apriori 时候选列表总差几个多半是这里漏了前缀相同的限制。把这一步写对后面的支持度计数就只是数数。2.4 评估指标准确率、召回率、F1 与 AUC 的辨析评估指标这部分的考题通常混合计算和概念。给你一个混淆矩阵算准确率、精确率、召回率、F1这是最基础的送分题。公式要先写对精确率是预测为正且预测对的样本占所有预测为正样本的比例召回率是预测为正且预测对的样本占所有实际为正样本的比例F1 是两者的调和平均。更拉分的考点是什么时候不能用准确率。比如正负样本比例严重失衡100 个样本里 95 个负类模型全预测负类准确率也有 95%但没有任何实用价值。这种判断题要用召回率或 AUC 说话。AUC 考概念居多ROC 曲线的横轴是假正率纵轴是真正率AUC 是曲线下面积越接近 1 模型越好。考试如果考手绘 ROC 曲线通常是给一组预测分数和真实标签按阈值从高到低滑动记录每个阈值下的真正率和假正率。简答题里常出现精确率和召回率的 trade-off提高阈值预测为正的样本变少精确率可能上升但召回率下降降低阈值则相反。答题要先把两个指标的业务含义写出来再画出关系。比如搜索引擎场景检索结果少而精时精确率高想不漏掉任何相关结果就牺牲精确率换召回率。这种题不需要长篇大论把阈值—指标联动说清楚就能拿分。3. 把复习落到纸面上三天到两周的复习计划与手推训练法知道考什么之后接下来是把知识点变成手感。数据挖掘期末考试的计算题和编程题都讲熟练度公式要看一眼就能写手推要能一气呵成不出错。这一章给出从考点清单到手推训练、再到代码复现的一整套操作流程。3.1 从课程 PPT 到考点清单怎么整理出自己的重点表不要对着 PPT 从头看到尾。第一步把课程目录抄成一张表每个章节对应一个可能的题型决策树对应计算题聚类对应计算题关联规则对应计算题评估指标对应计算简答数据预处理对应简答或选择。然后对照往年题——如果你有的话——把出现次数多的章节标记出来。没有往年题就看老师反复强调的案例老师课上用整块时间讲过某个算法的推导那它就值得出现在你的重点表里。我一般会做一张三列表格考点、题型、必背公式。考点只写具体算法名比如ID3 决策树不写分类这种大词题型栏写计算-选根属性或简答-过拟合公式栏写你手推时真正会用的那个式子。写完这张表复习就不再是漫无目的地翻书而是对着表逐项确认这个考点我能不能不看笔记写出推导流程不能的话就标记为待练。3.2 计算题手推训练用稀疏矩阵和空数据集练手计算题的失误大多不是不会而是算得慢、算得糙。训练方法是给自己造一张 10 行左右的二分类小表特征用离散值先算一遍信息熵和每个特征的信息增益再换一张数值表跑一遍 K-Means 两步迭代。每道题都按考试要求写下过程公式、代值、结果至少精确到三位小数。手推时故意制造一点干扰比如某个特征取值出现次数很少某个簇初始中心选得很偏看看自己会不会在处理边界时卡住。Apriori 的练习可以给 5 个事务、最小支持度设为 2生成全部频繁项集。把每一步的候选集、剪枝结果、支持度计数都写出来和代码结果对照。我习惯把训练用的数据集保存成 CSV 文件格式类似下表样本天气温度湿度是否打球1晴高高否2晴高中否3阴高高是4雨中高是5雨低中否这个表能同时练决策树、朴素贝叶斯和关联规则。决策树用手算信息增益贝叶斯算某个样本打球概率关联规则把每行看成一个事务找频繁项集。你不需要在意数据是否真实它是用来练流程的。3.3 代码题复习用 Python 快速复现 K-Means 与决策树如果考试里有代码题常见形式是补全某段算法的核心逻辑或者给你一个 sklearn 调用片段让你填参数。复现训练比背代码更可靠把 K-Means、决策树、朴素贝叶斯各写一个能跑的最小实现考试时哪怕只记得骨架也能根据报错回忆出细节。最小实现原则是不要封装、不要调库只用 Python 基础语法。决策树的难点是递归建树和停止条件我通常先实现一个只选一个根节点的版本确认信息增益算对了再扩展成递归。K-Means 的最小实现就是上面 2.2 节那段代码配合一个随机生成的小数据集跑十轮观察中心是否收敛。import random def generate_points(n12, seed42): # 生成 n 个二维随机点范围 0~10固定种子方便复现 random.seed(seed) return [(round(random.uniform(0, 10), 1), round(random.uniform(0, 10), 1)) for _ in range(n)] points generate_points() clusters, centers kmeans_one_step(points, [(0.0, 0.0), (9.0, 9.0)]) print(簇分配:, [len(c) for c in clusters]) print(新中心:, centers)generate_points用固定随机种子是为了让你和同学或和自己手推的结果能对得上。训练时把初始中心换到 (0,0) 和 (9,9)看第一轮分配是否符合直觉再换到 (5,5) 和 (6,6)观察簇会不会空掉。这些边界场景放到考试里就是老师爱设的陷阱。4. 数据挖掘期末考试避坑指南六个最容易丢分的细节平时觉得会做、一到考试就对不上的情况几乎都出在细节上。这六条是我见过的、也是我自己踩过的坑每一条都按现象、原因、解决写清楚。4.1 信息增益计算时 log 底数不一致导致结果偏差现象用计算器算出来的信息增益和同学对不上甚至自己算两遍结果都不一样。原因信息熵公式里的 log 底数有时是 2有时是自然对数 e题目不会每次主动写明沿用 PPT 里的默认底数就可能在同一次考试中换底。解决先看卷子第一道计算题附近有没有给出公式没给就统一用底数 2并在公式下方写一行log₂作标注。其实底数不同只会让熵值整体缩放不影响属性排序但如果题目要求填具体数值底数不一致就是实打实的丢分。4.2 K-Means 初始中心选择与空簇处理现象手推第一轮迭代时某个簇一个样本都没有不知道中心该怎么更新。原因初始中心选得离样本密集区太远或者中心两点距离很近导致所有样本都被分到其中一个中心。解决考试时按题目给定规则处理如果题目没写空簇规则就在计算过程中注明当前簇为空保留上一轮中心并继续往后推。平时训练时也应当故意制造空簇场景别只挑好算的初始值。另外注意某些课程版本的 K-Means 初始中心要求选样本点本身不允许任意坐标读题时圈出初始中心四个字。4.3 Apriori 连接步漏掉候选集现象候选项集列表比标准答案少几个导致后续频繁项集也少。原因把两个项集直接做并集比如 {A,B} 和 {B,C} 连接成 {A,B,C}这步没错但 {A,B} 和 {A,C} 这种前缀相同的情况反而被跳过。解决严格按前 k-2 个元素相同、最后一个元素不同来配对。每次连接前把项集按字典序排序再做前缀比较。手推时在草稿纸上把每对项集的连接条件写出来宁可多写也不能跳步。4.4 归一化与标准化混用现象简答题问为什么要对数值型特征做归一化答完发现和标准化混在一起说被扣一半分。原因两个概念都涉及数据缩放但适用场景和公式不同——归一化把数据映射到 [0,1]公式是 (x-min)/(max-min)标准化把数据变成均值 0、方差 1公式是 (x-μ)/σ。解决答题先写公式再写用途。距离类算法如 K-Means、KNN 对特征尺度敏感通常用归一化或标准化都行但要说明避免大数值特征主导距离计算。如果题目单独问某一项就只答那一个不要主动把另一个扯进来。4.5 过拟合判断只看训练集准确率现象给一张分类结果对比表训练集准确率 98%、测试集准确率 72%问是否过拟合有人只看训练集 98% 就答模型很好。原因过拟合的本质是模型在训练集上表现好、在测试集上表现差比较训练集和测试集之间的差距才是判据。解决答题时写训练集准确率明显高于测试集说明模型泛化能力不足存在过拟合风险同时点出缓解方法剪枝、正则化、增加数据、降低模型复杂度。这类题的核心是对比不是看单一数字。4.6 复习时间错配把精力耗在记概念上现象考前一周反复背书上的术语定义计算题一拖再拖最后上考场发现时间全花在选择题上简答题没写满。原因把记忆型复习当成主要任务忽略了数据挖掘考试真正拉分的计算题需要训练量。解决如果你的复习总时间是 20 小时至少 12 小时给计算题手推4 小时给代码复现4 小时给概念和简答。记忆性的内容放在考前一晚看计算和代码平时每天练。这个比例不是固定的但计算优先适用于绝大多数院校的数据挖掘课程。5. 考前 24 小时还能做什么高频公式速查与答题策略到了考前最后一天再从头刷题已经来不及了但还有三件事能让分数明显回升整理一张公式速查表、设计一套答题时间方案、学会简答题的得分点写法。5.1 必背公式表的整理方法公式不是抄一遍就完要按什么场景用哪个公式来分组。我自己会做成一个两列表格左列写触发场景右列写公式和参数。考前两小时只看这张表不翻书。场景公式或步骤二分类信息熵E -p*log₂p - q*log₂q信息增益Gain E(全体) - Σ(wi * E(第 i 组))Gini 系数Gini 1 - Σ(pi²)二分时按样本占比加权贝叶斯后验P(cK-Means 更新簇内样本各维均值单链接距离两簇间最小样本距离置信度conf(A→B) support(A∪B) / support(A)提升度lift conf(A→B) / support(B)大于 1 正相关F12 * P * R / (P R)P 为精确率R 为召回率这张表自己写一遍比打印十份都管用因为书写过程会强迫你回忆公式背后的适用条件。5.2 答题顺序与时间分配我的习惯是拿到卷子先花两分钟通读所有大题把会做和不会做的打上标记。正式答题先写计算题里最有把握的比如评估指标和 K-Means再写决策树和 Apriori最后写简答论述。为什么这么排计算题分值高、答案明确先把稳定分拿到手心态会稳很多。简答题哪怕没复习到也能凭理解写几句话放在最后不亏。时间分配上如果卷面满分 100 分、考试 120 分钟按分值比例分配时间10 分的题控制在 12 分钟以内遇到卡壳超过这个时间就跳到下一题。留下来 15 分钟检查重点看信息熵每一步的 log 是否一致、K-Means 的距离公式是否用对、Apriori 的候选列表有没有按连接条件生成。5.3 简答题与论述题得分点写作简答题不给步骤分只看关键词踩没踩到。常见的踩分点包括算法名称、公式、适用范围、与相近算法的区别。比如问简述决策树剪枝的目的至少要答出减少过拟合、提高泛化能力再补一句预剪枝在构建时提前停止后剪枝在构建完成后去掉冗余子树。两个术语各占一分写不出来就拿不到。论述题考课内案例时按场景—方法—结果—解释四段式写。第一句直接点题比如该案例属于典型的文本分类问题适合用朴素贝叶斯处理中间写具体处理流程包括分词、特征选择、训练、预测最后用一句话解释为什么选这个方法比如特征间条件独立假设在文本场景下可接受且训练速度快。判卷老师看的是你有没有把思路串起来而不是文采。我自己考前的习惯是找一张 A5 纸手写一遍所有公式把每次手推错的步骤在旁边画个叉。第二天进考场前只看这张纸不再翻任何书。这个动作帮我规避了无数次公式在脑子边缘但写不出来的尴尬。希望帮到你。本文还有配套的精品资源点击获取
阅读完成 · 觉得有帮助?