news 2026/10/15 1:25:31

数据挖掘导论复习笔记:预处理、定性归纳与决策树全梳理

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
数据挖掘导论复习笔记:预处理、定性归纳与决策树全梳理

数据挖掘导论这门课,我复习到第一轮的时候最大的感受就是:概念密度太高了。介绍、数据预处理、定性归纳这三块看起来各自独立,实际上是一条完整的链路——先搞清楚数据挖掘要解决什么问题,再处理数据本身的脏乱差,最后才谈得上用归纳方法去“总结”规律。这篇复习笔记我就按这条链路来串,把课上常考的概念、计算题型和我在复习时踩过的坑一起整理出来,给正在啃《数据挖掘导论》的同学做个参照。

不管你是期末冲刺,还是想系统搭一个数据挖掘的知识地基,前几章都值得花时间抠细。后面学聚类、关联规则、分类器时,你会发现很多思路其实在预处理和定性归纳里就已经埋下伏笔了。

1. 数据挖掘到底在挖什么

1.1 定义与核心特征:别只背结论

数据挖掘的定义,不同教材措辞不同,但核心可以浓缩成一句话:从大量数据中发现事先未知、潜在有用、最终可理解的信息和规律。复习时不要只盯着“挖掘”两个字,要看到三个限定词的含义。

“事先未知”意味着挖掘出来的东西不能是显而易见的常识。比如某个超市生鲜区周末销售额更高,这不是挖掘,是报表统计。真正有价值的是类似“买尿布的人中有相当比例也会买啤酒”这种藏在数据背后、单靠直觉很难发现的关联。

“潜在有用”对应的是商业价值或决策价值,挖掘结果必须能落地。比如分类模型预测用户流失概率,流失概率高的客户群体就是运营团队重点召回的对象,这条规则能直接指导动作。讲到这里可以顺带理解为什么数据挖掘强调“可操作的”(actionable),而不只是“统计显著的”。

“最终可理解”是为了和纯机器学习区分开。机器学习有时只需要预测精度高,模型是不是“黑箱”无所谓;但数据挖掘通常要求结果能转写成人类能读懂的规则、概念或模式,比如决策树你也能画出来向业务方解释。

复习时可以这样自问:给你一段文字描述,你能不能准确判断它是不是“数据挖掘发现”?判断标准就是上面那三条,缺一个都不能算严格意义上的知识发现。

1.2 挖掘流程与任务地图:复习的主线索

数据挖掘不是上来就建模。课程导论部分一定会给一个完整流程,这也是简答题高发区,很多人栽在把“数据准备”和“数据预处理”混为一谈。

我习惯把流程压缩成六个阶段:业务理解 → 数据理解 → 数据准备 → 建模 → 评估 → 部署。业务理解经常被复习时忽略,但可以记住一句话:没有明确业务目标的挖掘项目,后面每一步都可能白做。数据准备和本文第二大部分直接相关,它不只是清洗,还包括“把数据整理成模型需要的格式”,所以很多人把预处理直接归到数据准备这一步。

任务地图方面,数据挖掘通常分成两大方向。

描述性任务负责刻画数据本身的分布或结构,典型代表是聚类(把相似样本归组)、关联规则(找属性间的共现关系)、序列模式和异常检测。预测性任务则用已知属性推测未知属性,典型代表是分类、回归和离群点预测。复习时可以用一条简单判别逻辑:如果输出是一个标签或类别,就是分类;如果输出是一个连续的数值,就是回归;如果没有标签、只是按相似度分组,就是聚类。

容易混淆的是分类和聚类。我自己的记法是:分类靠历史样本归纳出规则,再给新样本贴标签,属于“有监督”;聚类则完全不需要标签,属于“无监督”。数据挖掘导论里控制参数的核心思路绝大部分都围绕这两个方向展开,先把地图搭好,后面学算法才不会迷路。

2. 数据预处理方法:把脏数据收拾干净

2.1 数据清洗:缺失值、噪声与不一致怎么处理

真实数据永远是脏的,这句话我建议你抄在笔记第一页。考试里常给一些“看起来还蛮整齐”的小表格,但实际项目中你遇到的规模可能更大、问题更隐蔽,对算法效果的影响也更致命。

数据清洗要处理的头号问题就是缺失值。处理选择可以按一条经验法则:如果某条样本的缺失属性太多,直接删除整条;如果缺失集中在少数几个属性,且这几个属性后续根本不用,那就删属性;大部分情况下你不想损失数据,会选择填充。填充的常见方法包括用全局常量、用属性均值/中位数/众数、用同类样本的属性均值,以及用回归或决策树预测补齐。复习不要只记“均值填”三个字,可以想想为什么中位数对噪声更稳健——离群值会把均值拉偏,中位数不会。

第二个问题是噪声。噪声和离群值概念上有区别:噪声是随机误差,离群值是远离大部分数据的真实观测,有时候离群值反而是你要挖的“宝藏”。平滑噪声的经典方法有分箱、聚类、回归,以及合人类检测。分箱是常考细节:先把数据排序,再按等深(每个箱样本数相同)或等宽(每个箱的取值范围相同)分成箱子,最后用箱均值、箱中位数或箱边界平滑。

第三个问题是不一致数据,比如同一个人的姓名在两张表里一个写“张三”一个写“Zhang San”,或者日期格式一个是2024/01/05、一个是2024-01-05,需要靠数据集成阶段的实体识别和格式统一来解决。

清洗部分有一道很典型的复习题:为什么直接在原始数据上训练模型效果不稳定?答案可以结合缺失值填充、噪声叠加、量纲差异这三方面展开,等于把后面几节串起来了。

2.2 数据集成与数据变换:对不上、不好用怎么办

数据集成就是把多个来源的数据合并到一起,合并过程会出现三个典型问题:模式匹配(两张表里哪个字段对应哪个字段)、实体识别(两个记录是不是同一个对象)、冗余检测(同一信息在多个属性里重复出现)。

冗余检测里面会讲相关系数,这个点常被复习时跳过,但我提醒你可以留意一下:当两个属性相关性很高时,它们其实在提供重复的信息,留着反而可能让模型出现冗余和过拟合。考试如果给你两个属性的若干值,让你算皮尔逊相关系数,记住公式即可,但更重要的是能回答“相关系数越接近±1,冗余性越高,可以考虑只保留其中一个”。

数据变换是数据预处理的重头戏,尤其规范化计算几乎是必考项。min-max规范化把数值映射到[0,1],公式是 (x - min) / (max - min);z-score规范化利用均值和标准差,公式是 (x - mean) / σ;小数定标规范化通过移动小数点把值压缩到[-1,1],移动位数取决于属性绝对值的最大位数。

复习时可以用一个具体数练手,比如年龄35岁,min=15,max=65,则min-max结果为(35-15)/(65-15)=0.4;若均值40、标准差12,则z-score结果是(35-40)/12≈-0.42。算完会发现一样是“规范化”,出来的数值含义完全不同,这也是为什么很多项目会把规范化方法作为预处理调参项之一。

数据变换还包括概念层次和离散化。离散化就是把连续值切成区间标签,常见做法有分箱、基于熵的离散化、基于聚类或自然断点法。注意离散化会增加信息损失,但也能极大提升部分模型的可解释性和稳定性,这是一种有意的折中。

2.3 数据归约:把数据“瘦下来”再挖掘

数据归约单独拿出来讲,是因为它在考试中容易被算成“清洗”或“变换”的一部分,但它的目标不太一样:清洗是为了让数据“正确”,变换是为了让数据“适配”,归约是为了让数据“更小且信息基本不丢”。

维归约解决的是“属性太多”的问题。维度越高,数据越稀疏,距离计算越来越没有区分度,这种现象被称为维度灾难。主成分分析(PCA)是经典方法,复习时按四步走:先对每个属性做中心化(减去均值),再计算协方差矩阵,然后求该矩阵的特征值和特征向量,最后把原始数据投影到前k个最大特征值对应的特征向量方向上。k的选择一般看累计方差贡献率,比如保留使累计方差贡献率达到90%或95%的那几个主成分。

特征选择则不同于PCA,PCA是对属性做线性变换造出新属性,特征选择直接挑原有属性里的一个子集。常用的简单位法包括逐步式前向选择、后向删除,以及基于信息增益或卡方检验的过滤式选择。复习时最容易拿分的一句话:PCA不改变样本数量,只改变属性集合的表示;抽样则相反。

数量归约解决的是“样本太多”的问题。简单随机抽样虽然简单,但容易让某一类样本占比失真;分层抽样能保证每个类别的样本按原始比例被抽中,是更稳的选择。聚类也算一种数量归约:先用聚类把相似样本聚成簇,再用簇中心代替整簇样本,数据量瞬间变小,信息损失可控。

3. 定性归纳:从数据里“总结”出规则

3.1 概念描述与面向属性的归纳

“定性归纳”这个词,不少同学复习时会觉得陌生,其实它对应的是从数据中归纳出概念描述或分类规则。当年我复习时,差点把它当成一个不重要的章节跳过去,结果后面学分类时发现底子不够,又回头补了一遍。

概念描述有两种:特征化是描述一个类中样本的共同特征,比如“‘高价值客户’通常是消费频次高、活跃时长超过半年、客单价超过500元的人群”;区分是在对比两个类时找差异,比如“流失用户与活跃用户相比,互动次数显著更低”。面向属性的归纳(AOI)就是实现这两种描述的手段。

AOI的核心是“泛化”。它利用预设的概念层次,比如年龄可以泛化成“青年/中年/老年”,地区可以泛化成“华东/华北/全国”,数据挖掘者把当前属性值提升到更高层概念。复习时重点掌握三个操作:属性删除(冗余或不适合泛化的属性直接去掉)、属性泛化(在概念层次上向上游走)、阈值控制(某个属性的不同值个数太多时就强制泛化,太少时可以继续保留或下钻)。这套逻辑和后面决策树的“属性选择”形成对照:决策树是往下细分,AOI是向上概括,两者方向相反,但都属于定性归纳范畴。

3.2 决策树归纳:ID3、C4.5与CART

决策树是定性归纳里最常考的内容,一定要能手工计算。整个过程可以概括为:在每一步,选择一个属性作为分裂节点,按它的取值把数据集分成子集,然后递归重复,直到子集足够“纯”。

纯度用什么衡量?ID3用信息熵。以经典的天气与是否外出活动数据为例:14条记录里,9条外出、5条不外出,数据集熵为:

H(D) = -9/14 * log2(9/14) - 5/14 * log2(5/14) ≈ 0.940

按“天气”划分后,晴天5条(2外出3不外出)、阴天4条(4外出0不外出)、雨天5条(3外出2不外出)。晴天子集熵是 -2/5log2(2/5)-3/5log2(3/5) ≈ 0.971,阴天子集熵为0,雨天子集熵也是0.971。划分后的加权熵为:

5/14 × 0.971 + 4/14 × 0 + 5/14 × 0.971 ≈ 0.694

于是天气这个属性的信息增益就是 0.940 - 0.694 ≈ 0.246。ID3的思路就是算所有候选属性的增益,取最大者当分裂点。

这个计算过程看起来简单,但我提醒给为负数的情况要特别注意:信息增益不可能为负,因为按属性划分最多只可能增加纯度或保持不变;如果你算出来负的,基本可以断定log计算或分组计数出了错。

ID3有个著名缺陷:过度偏好取值多的属性。比如“编号”这种每个样本一个值的属性,一拆到底,每个叶子的纯度都是100%,信息增益直接最大,但生成的树毫无泛化能力。C4.5的改进正是引入增益率,它除以了一个分裂信息量来惩罚分支太多的属性;CART则改用基尼系数,只做二叉划分,每一步找使基尼指数下降最多的分裂方案。复习时可以对着同一个数据集分别用三种方法走一遍,感受差异比背结论深刻得多。

关于剪枝,建议和过拟合一起理解。决策树不停往下长,最后可能把噪声也学进模型,导致训练集满分、测试集崩溃。预剪枝提前停止生长(比如节点样本数小于阈值就停止),后剪枝等树完全长好再自底向上合并叶节点。考试一旦问“为什么树越大未必越好”,就把过拟合和剪枝这两个概念摆在一起回答。

3.3 规则归纳与序列覆盖

规则归纳也是定性归纳的重要组成部分。形式一般是“如果条件,那么结论”,比如“如果天气=晴天且湿度=低,那么外出活动=是”。一条规则的覆盖度指它能正确覆盖的正样本数量,准确度指标在正确预测中的比例。

序列覆盖算法是规则归纳的经典代表,它也叫做“覆盖算法”,核心逻辑很短:先学一条规则,让它尽可能覆盖当前训练集中的样本;把该规则覆盖的正确样本从数据集中移除;对剩余样本继续学下一条规则,直到满足停止条件。每学一条规则时,常用贪心搜索逐次添加条件,每一步选能最大程度提升规则准确度的条件。

复习时可以对比一下决策树和规则归纳:决策树天然是一组互斥规则的总和,规则归纳则是逐条凿出来的,两者有亲戚关系,但后者往往能产生更紧凑、更可读的规则集合。概念描述里AOI的泛化是“向上归纳”,规则归纳是“从样本中抽取条件组合”,别看名词都带“归纳”,方向完全不同。

4. 复习实操中的高频坑与经验

4.1 容易混淆的三个细节

第一,规范化和离散化不要混淆。规范化不改变数据分布形态,只改变数值尺度;离散化是把连续数值映射成类别区间。这两个操作虽然都归在数据变换里,但解决的问题完全不同:规范化处理量纲差异,离散化处理连续属性的表达方式。第二,信息增益和增益率不要混用。ID3用前者,C4.5用后者。第三,PCA不是特征选择,PCA生成的是原始属性的线性组合,取名“主成分”,没有直接可读的含义;特征选择保留的还是原始属性。搞混这三个点,至少丢两三个小问的分。

4.2 复习路线与自测方法

我的复习路线是:先画一张思维导图,把“数据挖掘定义 → 流程 → 两大任务 → 预处理四步 → 归约两类 → 定性归纳两条路线(AOI和决策树/规则)”的主干搭出来,然后按主干逐个填细节。知识点之间有关的就画箭头,比如缺失值填充影响后续距离计算、PCA和维度灾难关联、信息增益和特征选择关联。

自测时不要只看例题,建议自己造一个小数据集,比如设计8条学生成绩记录,属性有“平时分”“作业完成度”“是否挂科”,然后手工算一遍z-score规范化、信息增益和一次基尼划分。这几个计算练熟,考试时基本不会慌。如果你能边算边说出每一步为什么这么做,这部分就算真正拿下了。

最后再分享一个小技巧:所有预处理方法背后都有一个共同思想,就是把原始数据调整成“更有利于后续挖掘算法发挥”的形态。复习每学一个方法前,先问自己它能解决数据里的哪个毛病,再往下看细节,比死记步骤高效得多。我在第一轮复习时就是这样做的,后面几章学起来明显顺手了不少。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/15 1:25:31

自动控制原理第五讲:系统型别、开环增益与稳态误差的物理本质

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/15 1:25:30

永磁电机滑模观测器无感FOC:从抖动到锁相的工程解法与源码

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/15 1:25:27

软件构造Lab1完全指南:从代码规范到工程思维

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/15 1:25:08

医学影像AI落地肺炎诊断的五大核心挑战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/15 1:25:04

Android Q环境下EFR32MG21交叉编译:工具链搭建与避坑实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/15 1:25:00

NumPy ndarray底层逻辑与数组运算教程:从环境搭建到避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华