资讯动态

数据挖掘第三章数据预处理课后题答案与考点拆解

发布时间:2026/10/15 13:15:08 来源:尧图企业网站定制
1. 为什么第三章值得单独写一篇拆解《数据挖掘概念与技术》这本书在数据挖掘领域的地位大概相当于算法圈里的那本经典红皮书——你可以不逐页读完但做数据相关的工作早晚会被人问到里面的概念。第三版相比第二版调整了不少内容尤其是第三章“数据预处理”这一块几乎是全书承上启下的关键章节。第一章讲什么是数据挖掘第二章讲数据长什么样到了第三章直接开始动手处理数据了。很多读者前两章看得挺顺一到第三章的课后题就卡住原因很简单这一章的题目看起来是概念题实际上每一道都在考你对数据预处理流程的真实理解而不是背定义。我自己第一次做这一章课后题的时候也觉得“数据清洗、数据集成、数据变换、数据归约”这四个词背得滚瓜烂熟做题应该没问题。结果第一道关于缺失值处理的题就让我意识到光知道“可以用均值填充”和“知道什么时候不该用均值填充”完全是两回事。后来带过几届学生做这本书的习题发现大家踩的坑高度集中分不清噪声和离群点、把数据归约和数据降维混为一谈、标准化和归一化的公式记混、对离散化和概念分层的理解停留在表面。所以这篇内容我打算把第三章的课后答案做一次系统性的拆解不是简单给个答案而是把每类题目背后的知识点、常见错误、以及实际工作中怎么用讲清楚。这篇内容适合三类人看正在学这门课、需要完成课后作业的学生准备数据挖掘相关考试、需要快速梳理第三章重点的备考者以及刚入行做数据分析、想补一补预处理基础的从业者。我会按照第三章的主要知识板块来组织每个板块先讲核心概念再拆解典型课后题的解题思路最后补充实际应用中的注意事项。答案本身不是重点重点是解题的逻辑和背后的“为什么”。2. 第三章知识框架与核心考点梳理2.1 数据预处理到底在解决什么问题第三章开篇就抛出一个很现实的问题现实世界的数据是“脏”的。这个“脏”不是骂人而是指数据存在缺失、噪声、不一致、冗余、量纲差异大等问题。如果直接拿原始数据去跑挖掘算法结果基本不可信。数据预处理就是在这之前做一轮“洗菜切菜”的工作让后续的算法能吃到干净、规整、大小合适的食材。书里把数据预处理分成四大块数据清洗、数据集成、数据变换、数据归约。这四块不是严格线性的实际项目中经常来回穿插。比如你在清洗时发现两个字段其实是一个意思这就涉及集成集成完发现数值范围差太多又要做变换变换完数据量太大跑不动再做归约。课后题基本也是围绕这四个方向出题所以做题前先把这张框架图在脑子里建好比死记硬背强得多。2.2 第三章课后题的常见题型分布翻一遍第三章的习题大致可以归为几类。第一类是概念辨析题比如“什么是噪声噪声和离群点有什么区别”这类题考的是定义的精确理解答题时不能只给一句话要能举例说明。第二类是计算题比如给定一组数据让你用某种方法做平滑、标准化或归一化这类题必须动手算光看答案没用。第三类是方法对比题比如“比较最小-最大归一化和z-score标准化的优缺点”这类题需要你理解每种方法的适用场景和局限。第四类是设计题比如“给定一个数据集设计一个预处理方案”这类题最考验综合能力也是实际工作中最常遇到的。我统计过计算题和对比题占了第三章习题的一半以上。很多人复习时只背概念结果一到计算就露馅。所以下面的拆解我会把计算过程写清楚该列公式列公式该代数字代数字。2.3 做课后题前必须搞清楚的几个基础概念在进入具体题目之前有几个概念必须先厘清否则后面越做越乱。第一个是噪声和离群点的区别。噪声是随机误差通常表现为数据在真实值附近的微小波动离群点则是明显偏离其他数据点的观测值可能是错误也可能是真实但罕见的事件。书里用“平滑”来处理噪声用“离群点分析”来检测离群点两者目的不同。第二个是标准化和归一化的区别。标准化z-score是把数据转换成均值为0、标准差为1的分布公式是 (x - μ) / σ归一化最小-最大是把数据缩放到某个固定区间通常是[0,1]公式是 (x - min) / (max - min)。这两个词在中文里经常被混用但在这本书的语境下必须区分清楚。第三个是数据归约和降维的关系。降维是数据归约的一种手段但数据归约还包括数量归约比如用直方图、聚类代替原始数据和数据压缩。做题时看到“归约”不要只想到PCA。3. 数据清洗类课后题拆解与答案要点3.1 缺失值处理什么时候填什么时候删第三章关于缺失值的课后题最典型的一道是给定一个包含缺失值的数据集要求分别用“忽略元组”“均值填充”“中位数填充”“最可能值填充”等方法处理并讨论各自的适用场景。这道题看起来简单但答题时容易漏掉关键点。忽略元组适用于缺失值占比很小、且缺失是随机发生的情况。如果某个字段有30%以上的缺失直接删元组会损失大量信息这时候就要考虑填充。均值填充适合近似正态分布且没有极端值的数值型字段计算简单但会低估方差。中位数填充在数据偏斜或有离群点时更稳健。最可能值填充通常用回归或贝叶斯方法预测缺失值精度高但计算成本大适合缺失字段与其他字段相关性强的场景。实际答题时我建议按“先分析缺失模式再选择方法最后说明影响”的结构来写。比如先判断缺失是完全随机缺失、随机缺失还是非随机缺失这决定了填充方法是否会产生偏差。很多同学直接上来就写“用均值填充”没有分析前提答案就不完整。注意考试或作业中如果题目没有明确说明缺失模式答题时最好分情况讨论展示你考虑了不同可能性这比只给一个答案得分更高。3.2 噪声处理分箱、回归、聚类三种平滑方法噪声处理的课后题通常会给出一个数值序列要求用等宽分箱或等频分箱做平滑。这类题的关键是分箱的边界怎么定以及箱内用什么统计量替换原值。以等宽分箱为例假设数据范围是[0, 100]分成5个箱每个箱宽度20。第一箱[0,20)第二箱[20,40)以此类推。箱内平滑可以用箱均值、箱中位数或箱边界。用箱均值替换时箱内所有值变成同一个数用箱边界替换时离边界近的值替换为边界值。书上的例题通常要求用箱均值因为计算最直接。等频分箱则是让每个箱包含相同数量的数据点。比如10个数据分5箱每箱2个点。等频分箱对偏斜数据更友好但边界可能不整齐。答题时要写清楚你选择的分箱方法和理由。回归平滑是用函数拟合数据来消除噪声聚类平滑是把相似的点聚在一起再用簇中心替换。这两种方法在课后题中出现频率较低但概念题会考。记住一点分箱是局部平滑回归是全局平滑聚类是基于相似性的平滑。3.3 不一致数据的检测与修正不一致数据通常指同一实体在不同数据源中的表示冲突比如同一个人的年龄在表A是25在表B是26。课后题可能会给两个数据集要求找出不一致的记录并说明修正策略。检测方法包括字段级比对同一字段在不同源中的值是否一致、依赖关系检查如邮编和城市是否匹配、以及业务规则校验如出生日期不能晚于入职日期。修正策略有以权威数据源为准、用多数投票决定、或人工核查。答题时要强调“不一致的根源往往是数据集成时的模式冲突或录入错误”这能体现你对数据集成章节的联动理解。4. 数据集成与变换类题目详解4.1 实体识别与冗余属性处理数据集成部分的课后题常考实体识别和冗余属性。实体识别是指判断两个数据源中的记录是否指向同一实体。比如一个源用“学号”标识学生另一个源用“身份证号”需要建立映射关系。冗余属性是指可以通过其他属性推导出来的属性比如“出生日期”和“年龄”就是冗余的因为年龄可以由出生日期和当前日期算出。答题时冗余属性的处理要分情况如果是数值型冗余可以用相关性分析如卡方检验、相关系数来量化冗余程度如果是标称型冗余可以用卡方检验。书上课后题可能会给一个相关系数矩阵让你判断哪些属性冗余。记住相关系数绝对值接近1表示高度相关可以考虑去掉其中一个。4.2 数值变换标准化与归一化的计算过程这是第三章计算题的重灾区。题目通常给一组数值要求分别做最小-最大归一化和z-score标准化。我把计算步骤拆开写。假设数据是[10, 20, 30, 40, 50]。最小-最大归一化到[0,1]新值 (原值 - 最小值) / (最大值 - 最小值)。10变成050变成130变成0.5。如果目标区间是[-1,1]公式变成 2 * (原值 - min) / (max - min) - 1。z-score标准化先算均值μ 30再算标准差σ。标准差的计算是 sqrt(Σ(xi - μ)² / n)。这组数据的方差是 (4001000100400)/5 200标准差约14.14。那么10标准化后是 (10-30)/14.14 ≈ -1.4150是1.41。答题时要注意z-score标准化后的数据没有固定边界可能有负值最小-最大归一化对离群点敏感因为max和min容易被极端值拉偏。如果题目问“哪种方法更适合有离群点的数据”答案是z-score因为标准差虽然也受离群点影响但比极值稳健一些。更稳健的是用中位数和四分位距做标准化但书上没重点讲答题时可以作为加分项提一句。4.3 离散化与概念分层等宽、等频、基于熵离散化是把连续属性变成分类属性的过程。课后题常考等宽离散化、等频离散化和基于熵的离散化。前两种和分箱类似基于熵的方法稍微复杂一点。基于熵的离散化核心思想是找到一个切分点使得切分后两个子集的熵之和最小。熵的公式是 -Σ p log2(p)。题目通常会给出一个属性值和对应的类别标签让你计算最佳切分点。步骤是对每个候选切分点计算左右子集的熵加权求和得到总熵选总熵最小的那个点。计算时注意log以2为底概率用频率估计。概念分层是把低层概念映射到高层概念比如“街道→城市→省份→国家”。课后题可能要求你为一个属性设计概念分层或者判断给定的分层是否合理。答题时要注意分层的粒度要一致不能有的分支三层有的分支五层。5. 数据归约类题目思路与答案组织5.1 维度归约属性子集选择与PCA维度归约的课后题主要有两类属性子集选择和主成分分析。属性子集选择是挑出最有用的属性去掉冗余和无关的。书里介绍了逐步向前选择、逐步向后删除、以及两者结合的方法。答题时要能描述每种方法的步骤和优缺点。逐步向前选择是从空集开始每次加入一个最能提升模型性能的属性逐步向后删除是从全集开始每次去掉一个最不影响性能的属性。前者的计算量小但可能陷入局部最优后者相反。PCA的课后题通常要求计算协方差矩阵、特征值和特征向量然后选前k个主成分。计算量较大但步骤固定先标准化数据再算协方差矩阵然后求特征值排序最后投影。答题时如果题目没要求具体数值可以只写步骤和公式但要把“为什么要标准化”说清楚——因为PCA对量纲敏感不标准化的话方差大的属性会主导主成分。5.2 数量归约直方图、聚类、抽样数量归约是用更小的数据表示原始数据。直方图是把数据分箱后用箱的统计量代替原始值聚类是把相似的点归为一簇用簇中心代表抽样是从数据中选一个子集包括简单随机抽样、分层抽样、聚类抽样。课后题可能会问“哪种数量归约方法适合流数据”答案是抽样或直方图因为流数据不能存储全部。也可能问“分层抽样和简单随机抽样的区别”答题时要强调分层抽样能保证每个子群体都有代表适合类别分布不均衡的数据。5.3 数据压缩有损与无损的取舍数据压缩分无损和有损。无损压缩如字典编码解压后能完全恢复原数据有损压缩如小波变换压缩率高但会丢失细节。课后题可能要求判断某种压缩方法属于哪类或者讨论在数据挖掘中为什么常用有损压缩。原因是挖掘任务通常不需要精确的原始值只要保留主要模式即可。答题时举个小波变换的例子会更有说服力。6. 常见易错点与答题避坑指南6.1 概念混淆类错误最常见的混淆有三个。第一把数据清洗和数据变换搞混。清洗是处理缺失、噪声、不一致变换是改变数据的表示形式如标准化、离散化。第二把归一化和标准化当成同义词。第三把离群点检测和噪声去除混为一谈。离群点不一定是噪声可能是真实的有价值事件比如信用卡欺诈检测中异常交易恰恰是目标。答题时如果涉及这些概念建议先给定义再举例最后说明区别。比如“噪声是随机误差离群点是显著偏离的观测前者需要平滑后者需要分析”。6.2 计算过程中的细节陷阱计算题最容易丢分的地方是分母搞错。最小-最大归一化的分母是max-min不是maxz-score标准化的分母是标准差不是方差。另外标准差有样本标准差和总体标准差之分书上的例题通常用总体标准差除以n但有些题目会明确说用样本标准差除以n-1要看清楚。还有一个陷阱是归一化的目标区间。题目说“归一化到[0,1]”和“归一化到[-1,1]”公式不同后者要在前者基础上乘2减1。很多同学看漏了区间直接套[0,1]的公式结果全错。6.3 答题结构不完整的问题设计类题目最容易犯的错是只给方法不给理由。比如题目问“给定一个含缺失值和噪声的数据集设计预处理方案”有的同学直接写“用均值填充用分箱平滑”没有分析数据特点也没有说明为什么选这些方法。完整的答案应该包括数据诊断缺失比例、噪声类型、量纲差异、方法选择及理由、处理顺序、以及可能的风险。这样即使方法不是最优也能拿到过程分。提示作业和考试中如果时间允许尽量把“为什么选这个方法”和“这个方法有什么局限”都写上这往往是拉开分数的地方。7. 从课后题到实际项目的迁移经验7.1 真实数据预处理流程与课本的差异课本上的课后题通常是理想化的数据量小、问题明确、方法单一。实际项目中数据预处理往往占整个流程60%以上的时间而且问题交织在一起。比如你拿到一份用户行为数据缺失值、噪声、量纲差异、冗余字段同时存在不可能按章节顺序一步步来。我的经验是先做一轮快速诊断用pandas的info()看缺失用describe()看分布用corr()看相关性然后根据诊断结果决定处理优先级。另一个差异是课本很少讲处理顺序。实际中通常先做数据集成把多个源合并再做清洗处理合并后的缺失和噪声然后变换标准化、离散化最后归约如果数据量太大。但这个顺序不是绝对的比如如果两个源的量纲差异极大可能先做变换再集成更好。7.2 工具选择什么时候用代码什么时候用可视化课后题都是手算实际项目中没人手算。Python的pandas、scikit-learn、以及专门的预处理库如feature-engine是常用工具。但工具不是越自动越好。我的习惯是对于缺失值和离群点先可视化再决定处理方式。比如用箱线图看离群点用缺失矩阵图看缺失模式。可视化能帮你发现代码诊断发现不了的问题比如缺失不是随机的而是集中在某个时间段或某个用户群体。标准化和归一化通常用sklearn的StandardScaler和MinMaxScaler但要注意fit和transform的分离——测试集要用训练集的参数来变换不能自己fit。这个细节课本不讲但实际中错了会导致数据泄漏。7.3 预处理效果评估怎么知道处理得好不好课后题不要求评估预处理效果但实际项目中必须评估。评估方法分两种一是看预处理后的数据是否满足下游算法的假设比如线性回归要求特征近似正态那就看标准化后的偏度和峰度二是看预处理对模型性能的影响比如做消融实验对比处理前后模型的准确率或AUC。我踩过的一个坑是过度预处理。有一次为了追求“干净”数据把大量所谓离群点删掉结果模型性能反而下降因为那些离群点里包含了少数类的重要信息。后来学乖了预处理要保守一点宁可保留可疑数据也不要误删有价值的信息。8. 第三章答案的自我检查清单做完第三章课后题后可以用下面这个清单快速自查。第一概念题是否给出了定义、例子和区别第二计算题是否写清了公式、代入过程和结果第三对比题是否列出了至少两个维度的差异第四设计题是否包含了诊断、方法、理由和风险第五所有涉及数值的答案是否检查了量纲和单位这个清单看起来简单但能帮你避免80%的常见失分点。我带学生的时候让他们做完题先对照清单自查一遍再交平均分能提高不少。第三章的内容是后面章节的基础分类、聚类、关联规则都会用到预处理的概念所以这一章花时间吃透后面会轻松很多。最后分享一个我自己的习惯每做完一道课后题我会用一句话总结这道题考的核心知识点写在题目旁边。比如“缺失值填充——均值 vs 中位数看分布是否偏斜”。这样复习的时候不用重新读题看一句话就能回忆起整个解题逻辑。第三章的题目做完你手里就有了一张浓缩的知识点清单比翻书快得多。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑