常见的数据质量问题主要有以下几类:
-
缺失值(Missing Values)
-
数据中某些属性的值缺失或为空(如年龄未填、收入未知)。
-
影响:许多算法无法处理空值,直接忽略会导致信息损失或模型偏差。
-
应对:删除含缺失值的记录、用均值/中位数/众数填充,或用模型预测填补。
-
-
噪声(Noise)
-
数据中的随机误差或偏离真实值的波动(如传感器故障导致的错误读数)。
-
影响:干扰模型学习真实规律,降低预测精度。
-
应对:通过平滑技术(如分箱、聚类)、滤波或离群点检测进行去噪。
-
-
异常值(Outliers)
-
与大部分数据表现明显不一致的极端值(如年龄显示为200岁)。
-
影响:可能扭曲统计指标(如均值),影响模型稳定性;但在欺诈检测中,异常值本身可能是挖掘目标。
-
应对:根据业务规则判断,可选择删除、修正,或作为特殊类别单独分析。
-
-
数据不一致(Inconsistency)
-
同一数据在不同地方存在矛盾或格式不统一(如性别同时记录为"男"和"M";单位混用"公斤"和"磅")。
-
影响:导致分析结果混乱或错误。
-
应对:统一编码规范(如One-Hot编码)、标准化单位、核对数据源逻辑。
-
-
重复数据(Duplicates)
-
数据集中存在完全或部分重复的记录(如同一用户被录入多次)。
-
影响:人为放大某些样本的权重,导致统计偏倚和过拟合。
-
应对:通过主键或相似度匹配检测并去重。
-
-
数据过时(Outdated Data)
-
数据反映的是过去的情况,已不适用于当前分析任务(如过期的用户地址)。
-
影响:模型预测失效,无法反映真实业务现状。
-
应对:定期更新数据源,剔除时效性过强的失效数据。
-
数据挖掘任务通常被分为预测性任务(Predictive) 和描述性任务(Descriptive) 两大类,共涵盖以下 5 种经典任务:
1. 分类(Classification)------ 预测性任务
-
做什么 :根据已知数据的特征,预测新样本属于哪个离散的类别。
-
通俗理解:就像是"打标签"。给定一堆特征,判断它是"A类"还是"B类"。
-
经典案例:判断一封邮件是"垃圾邮件"还是"正常邮件";根据检查结果判断肿瘤是"良性"还是"恶性"。
2. 回归(Regression)------ 预测性任务
-
做什么 :根据已知数据的特征,预测新样本的连续数值。
-
通俗理解:不是判断"是哪一类",而是估算"值是多少"。
-
经典案例:根据房屋面积、地段预测"房价";根据历史数据预测"明天的气温"。
3. 聚类(Clustering)------ 描述性任务
-
做什么 :在没有预设标签的情况下,根据数据的相似性,自动将其划分为不同的组(簇)。
-
通俗理解:"物以类聚,人以群分"。算法不知道这些是什么,但发现它们长得像,就归为一堆。
-
经典案例:新闻网站自动将10万篇报道归为"体育"、"财经"、"娱乐"等主题;客户细分市场。
4. 关联分析(Association Rule Mining)------ 描述性任务
-
做什么 :发现数据中不同项目(Item)之间同时出现的频繁模式 或依赖关系。
-
通俗理解:找"购物篮"里的搭配规律。买了A的人大概率也会买B。
-
经典案例 :超市经典的 "啤酒与尿布" 现象;电商平台的"购买了这件商品的顾客还购买了..."推荐系统。
5. 异常检测(Anomaly Detection)------ 描述性任务(有时也用于预测)
-
做什么:识别数据中显著不同于绝大多数其他数据的"异常点"或"离群点"。
-
通俗理解:在一群羊里找"披着羊皮的狼",或者找出特别"格格不入"的那个数据。
-
经典案例 :信用卡欺诈交易检测(突然出现一笔大额海外消费);工业设备故障预警。
💡 快速区分小贴士:
-
预测性任务(分类/回归) :有明确的答案(标签),让机器照着答案学,然后去预测新数据。(有监督学习)
-
描述性任务(聚类/关联/异常) :没有标准答案,让机器自己去数据里找隐藏的结构和规律。(无监督学习)
相异性度量与相似性度量
一、相异性度量(Dissimilarity)------ 衡量"距离有多远"
核心逻辑 :值域为 [0, +∞) ,数值越大 表示样本越不同。也叫"距离(Distance)"。
| 度量名称 | 公式/核心定义 | 通俗理解 | 适用场景 |
|---|---|---|---|
| 1. 欧氏距离 (L₂) | ![]() |
两点之间的直线几何距离。 | 默认首选,适合连续数值特征(必须提前标准化!)。 |
| 2. 曼哈顿距离 (L₁) | ![]() |
只能走直角拐弯的城市街区距离。 | 高维数据,或对异常值(离群点)比较敏感的数据。 |
| 3. 切比雪夫距离 (L∞) | ![]() |
各个维度中差值最大的那个维度。 | 关注"最坏情况"的差距(如国际象棋国王走步)。 |
| 4. 汉明距离 | 统计对应位置不同的个数 | 数一数两个字符串/向量有几个位置不一样。 | 标称属性(如性别、血型)或二进制字符串比较。 |
二、相似性度量(Similarity)------ 衡量"有多像"
核心逻辑 :值域通常为 0, 1 ,数值越大 表示样本越相似(Pearson相关系数为-1,1)。
| 度量名称 | 公式/核心定义 | 通俗理解 | 适用场景 |
|---|---|---|---|
| 1. 余弦相似度 | ![]() |
只看方向 是否一致,不管长度(模长)。 | 文本分类 (TF-IDF向量)、推荐系统(用户评分偏好)。 |
| 2. Jaccard 系数 | ![]() |
两个集合的交集占并集的比例。 | 非对称二元属性(如购物篮:都买了什么,忽略都没买的),文档去重。 |
| 3. SMC(简单匹配系数) | 匹配的属性数 / 总属性数 | 粗暴地看所有属性(包括0-0匹配)有多少相同。 | 对称二元属性(如性别:男/女两个值地位平等)。 |
| 4. Pearson 相关系数 | 衡量线性相关强度 | 数值越接近 +1 越正相关,-1 越负相关。 | 连续型数据,判断两个变量是否同升同降。 |
| 5. 互信息 (Mutual Info) | 基于信息熵 | 捕捉任意关系 (包括非线性,如 )。 |
强大的特征选择工具,比Pearson更通用。 |
三、🔥 新手最常见的 3 个"避坑"指南
- 看名字定属性(PPT万能法则):
-
叫 "距离" (Distance)→ 铁定是相异性(越大越远)。
-
叫 "系数/相似度/相关" (Coefficient/Similarity/Correlation)→ 铁定是相似性(越大越像)。
- Jaccard 和 SMC 千万别搞混(面试必考!):
-
Jaccard :忽略"双0"(都没买的东西不算相似点)。适合"是否患病"、"是否购买"。
-
SMC :考虑"双0"(都没发生也算一致)。适合"性别"、"开关状态"。
- 余弦 vs 欧氏(推荐系统必知):
- 用户A评分
[2,4],用户B评分[4,8]。欧氏距离很远(数量不同),但余弦相似度 = 1 (偏好比例完全一致)。做喜好推荐时,用余弦;做物理距离时,用欧氏。
四、📊 算法选择决策矩阵(实战建议)
| 你的数据类型 | 推荐的度量方法 |
|---|---|
| 全是连续数值(身高、体重、房价) | 欧氏距离(标准化后)或 曼哈顿距离 |
| 文本数据(词频向量) | 余弦相似度(经典首选) |
| 集合/购物篮(买/没买) | Jaccard 系数 |
| 对称二元(男女、开关) | SMC |
| 需要捕捉非线性关系(如抛物线) | 互信息(Pearson在这里会失效得0分!) |
| 标称分类(颜色红黄蓝、血型ABO) | 汉明距离 |
💡 一句话总结 :"距离"选欧氏/曼哈顿,"方向"选余弦,"集合"选Jaccard,"非线性"选互信息。 理解这些,你就能轻松应对数据挖掘中大部分相似性的计算需求!
频繁项集与关联规则
设 X={a, b, c, d, e, f} 是频繁项集,则可由 X 产生( )个候选关联规则
计算过程 :
频繁项集 X 的大小 k=6。
关联规则是形如 Y→(X−Y) 的蕴涵式,其中前提 Y 必须是非空真子集(即不能是空集,也不能是全集 X本身)。
因此,候选规则的总数为:

下面为你详细拆解这道题背后涉及的所有核心知识点,让你彻底理解原理:
1. 关联规则的基本形式
-
关联规则是形如 Y→Z的表达式,其中 Y 和 Z 是不相交的项集(即 Y∩Z=∅),且 Y∪Z=X(这里的 X 是当前的频繁项集)。
-
在规则中,Y 称为前提(LHS,左部) ,Z 称为结论(RHS,右部)。

2. 为什么是
?(数学推导)
-
对于一个包含 k 个项的频繁项集 X,它总共有
个子集(包括空集 ∅ 和它本身 X)。 -
排除空集(∅):规则的前提不能为空(∅→X 没有业务意义,也不符合定义)。
-
排除全集(X):规则的结论不能为空(X→∅ 也是无意义的规则)。
-
因此,所有可能的二元划分 (即把项集分成左部和右部)数量 =
。
3. "候选" vs "强" 规则(这道题的陷阱点)
-
题目问的是"候选 关联规则",这意味着我们仅仅是在做数学排列组合,还没有进行置信度(Confidence)筛选。
-
在实际的 Apriori 算法(规则生成步骤)中,这些候选规则还需要经过**置信度阈值(minconf)**的检验。只有置信度 ≥ minconf 的规则,才会成为最终的"强关联规则"。
-
例如,对于 X={a,b,c}(k=3),候选规则有
条:-
{a}→{b,c}
-
{b}→{a,c}
-
{c}→{a,b}
-
{a,b}→{c}
-
{a,c}→{b}
-
{b,c}→{a}
-
4. 关于规则生成的"剪枝"原理(扩展知识点)
在 Apriori 算法生成规则时,有一个重要的反单调性定理:
如果规则 Y→(X−Y) 不满足置信度阈值,那么任何将前提 Y 缩小为 Y′(即 Y′⊂Y)的规则 Y′→(X−Y′) 也一定不满足置信度阈值。
基于这个定理,算法通常采用逐层递推的方式生成规则,而不是直接枚举全部 62 条,这就是 Apriori 对规则生成的剪枝优化。
5. 总结记忆口诀

簇评估 和轮廓系数
聚类(Clustering)是一种"无监督学习"方法,这意味着数据没有标准答案(标签)。簇评估 和轮廓系数就是用来回答"聚类效果好不好"这个问题的工具。
🎯 什么是簇评估?
簇评估 就是衡量聚类结果质量的各类方法的总称。一个好的聚类,通常希望达到 "簇内紧密,簇间分离" 。
簇评估主要分为两类:
-
外部评估指标 :适用于有真实标签的数据,通过对比聚类结果与真实标签来打分。常见的有调整兰德系数 和互信息等。
-
内部评估指标 :适用于没有真实标签的数据,仅凭数据自身的特征来评估。轮廓系数就是其中最常用的一种。
📏 轮廓系数:聚类的"综合评分卡"
轮廓系数 (Silhouette Coefficient) 是一个综合性的内部评估指标,它同时考虑了簇内的紧凑程度 和簇间的分离程度。
1. 核心思想:为每个点打分
轮廓系数会为每一个 数据点计算一个得分,最终取所有点得分的平均值作为整个聚类模型的最终得分。
2. 三步计算法
计算某个点 ( i ) 的轮廓系数,只需三步:
-
计算内聚度 a(i) :计算点 ( i ) 到其所在簇 内其他所有点的平均距离。这个值越小,说明点 ( i ) 与周围的点越近,所在簇越紧凑。
-
计算分离度 b(i) :计算点 ( i ) 到其他所有簇 的平均距离,然后取其中的最小值。这个值越大,说明点 ( i ) 与最近的邻居簇也离得足够远,分离得越好。
-
套用公式:用下面这个公式计算出点 ( i ) 的轮廓系数 s(i):

3. 如何看懂分数?
单个点的轮廓系数 s(i) 的范围在 -1 到 1 之间,可以直接告诉我们这个点被分得怎么样:
-
接近 1 (优秀):意味着 b(i)≫a(i),表示该点与所在簇非常紧密,且远离其他簇,分类正确。
-
接近 0 (边缘):意味着 a(i)≈b(i),表示该点正好处在两个簇的边界上。
-
接近 -1 (糟糕):意味着 a(i)≫b(i),表示该点到其他簇比到自己所在簇还近,很可能被分配错了。
总结规律 :轮廓系数越接近 1,聚类效果越好;接近 0 表示有重叠;接近 -1 则表示聚类失败。
👍 轮廓系数的优缺点
-
优点:
-
无需标签:这是它最核心的优势,非常实用。
-
直观易懂:计算和解释都很简单。
-
帮选 K 值:可以用来比较不同 K 值下的平均轮廓系数,选择最高的那个作为最佳聚类数。
-
-
缺点:
-
对形状敏感:对于非凸形状(如长条形、环形等)的簇,评估结果可能不准确。
-
计算开销:计算所有点对的距离,在大数据集上会比较耗时。
-
序列模式挖掘-子序列
在数据挖掘(特别是序列模式挖掘 ,Sequential Pattern Mining)中,子序列(Subsequence) 的判断是一个非常核心的基础概念。如果这个概念搞混,后续的"序列模式发现"和"Apriori算法"都将无法理解。
根据你之前学习的PPT内容(chap5_2_关联分析进阶.pptx),我将为你彻底拆解判断子序列的知识点,并指出新手最容易踩的 3 个坑。
1. 子序列的官方定义(数学逻辑)

2. 判断子序列的"三大铁律"(避开 90% 的坑)
新手判断子序列时,最容易犯以下三个错误,必须牢记:
① 铁律一:顺序必须严格一致(不能回退)

② 铁律二:不要求连续(可以跳跃)

③ 铁律三:项集内是"超集包含"(而非"相等")
-
这是最重要且最容易被忽视的一点!
-
序列中每个位置的花括号
{}里装的是一个项集(Itemset)。 -
判断时,只要主序列对应位置的项集包含了 候选序列该位置的项集即可(即 ⊆,子集关系),不需要两个集合完全一样 。

3. 手算演示(透彻理解)
假设主序列(某用户的实际浏览路径)为:
A=<{首页},{电子产品,手机},{电脑配件},{鼠标,键盘}>
我们来判断以下 3 个候选序列是否为 A 的子序列:
| 候选序列 B | 匹配过程(下标递增) | 是否为子序列? |
|---|---|---|
| <{首页},{电脑配件}> | 首页(下标1) → 电脑配件(下标3)。1 < 3 ✅ | 是(跳跃了第2个元素,允许) |
| <{电脑配件},{首页}> | 电脑配件(下标3) → 首页(下标1)。3 < 1 ❌ | 不是(顺序颠倒了,违反铁律一) |
| <{手机},{鼠标}> | 在"电子产品,手机"里找到手机✅ → 在"鼠标,键盘"里找到鼠标✅。且 2 < 4 | 是(虽然花括号里还有别的项,但包含即可) |
4. 为什么要学这个?(在算法中的应用)
在 Apriori 算法的**候选剪枝(Pruning)**步骤中,判断子序列极其重要。
规则 :在生成候选 k-序列时,如果某个候选序列的 (k-1)-子序列不是频繁的,那么它本身一定不是频繁的,直接删除(剪枝)。

5. 总结记忆口诀
"顺序不能乱,中间可以断,集合只需含(子集),少一个都不算。"
-
顺序不能乱:下标必须从小到大。
-
中间可以断:不要求连续。
-
集合只需含:主序列的项集只需"包含"候选序列的项集(超集关系),不必完全相等。
理解好这个判断标准,你就能轻松看懂序列模式挖掘的候选项集生成和剪枝过程了!
数据挖掘的五大任务全景式分类整理
1. 分类方法(有监督学习 · 预测离散类别)
核心目标:判断样本属于哪一个类别(如:是/否,猫/狗)。
-
经典算法:
-
决策树(ID3, C4.5, CART)
-
支持向量机(SVM)
-
逻辑回归(Logistic Regression)
-
K-近邻(KNN)(属于"懒惰学习",但做的是分类任务)
-
朴素贝叶斯(Naive Bayes)
-
神经网络 / 深度学习(如MLP、CNN用于图像分类)
-
2. 回归方法(有监督学习 · 预测连续数值)
核心目标:预测一个具体的数值(如:房价、温度、销售额)。
-
经典算法:
-
线性回归(Linear Regression)
-
回归树(Regression Tree)(CART算法用于回归的部分)
-
支持向量回归(SVR)
-
神经网络(输出层无激活函数,预测具体值)
-
3. 聚类方法(无监督学习 · 自动分组)
核心目标 :在没有标签 的情况下,根据数据的相似性自动将其划分成不同的组(簇)。"物以类聚,人以群分"。
-
经典算法:
-
K-Means(基于划分,最常用)
-
DBSCAN(基于密度,本题选项,能处理任意形状的簇和噪声点)
-
层次聚类(Hierarchical Clustering)(生成树状图)
-
4. 关联分析方法(无监督学习 · 找搭配规律)
核心目标 :发现数据中不同项目之间的频繁模式 或依赖关系(如:购物篮分析)。
-
经典算法:
-
Apriori 算法
-
FP-Growth 算法
-
5. 异常检测方法(无监督/有监督 · 找离群点)
核心目标:识别数据中显著不同于绝大多数数据的"异常点"(如:信用卡盗刷、设备故障预警)。
-
经典算法:
-
孤立森林(Isolation Forest)
-
局部异常因子(LOF)
-
时间复杂度
在下面的表格中,记:
-
n = 样本数量
-
d = 特征维度(属性个数)
-
T = 迭代次数(如梯度下降轮数、树的棵数)
-
K = 聚类数 / 类别数
-
n_sv = 支持向量个数
1. 分类与回归方法(有监督学习)
| 算法 | 阶段 | 正常情况(平均复杂度) | 最坏情况 | 核心瓶颈 |
|---|---|---|---|---|
| 线性回归(正规方程) | 训练 | O(n·d² + d³) | 同左 | 特征维度 d 很大时,矩阵求逆极慢(d³) |
| 线性回归(梯度下降) | 训练 | O(n·d·T) | 同左 | 样本量 n 和迭代次数 T 的乘积 |
| 逻辑回归 | 训练 | O(n·d·T) | 同左 | 依赖梯度下降的收敛速度 |
| 决策树 (CART/ID3) | 训练 | O(d·n·log n) | O(d·n²) | 对特征值排序耗时;最坏树极深(退化成链表) |
| 决策树 | 预测 | O(深度) ≈ O(log n) | O(n) | 树若不平衡,预测会遍历很深 |
| SVM(非线性/核) | 训练 | O(n²·d) ~ O(n³) | O(n³) | 核矩阵计算和存储是致命伤(n>1万极难) |
| SVM(线性) | 训练 | O(n·d) | O(n·d) | 线性SVM(如Liblinear)很快 |
| SVM | 预测 | O(n_sv · d) | O(n·d) | 若支持向量数接近 n(最坏情况),预测变慢 |
| KNN | 训练 | O(1)(懒加载) | O(1) | 没有训练过程,只存数据 |
| KNN(暴力搜索) | 预测 | O(n·d) | O(n·d) | 每次预测都要算全量距离(大数据集极慢) |
| 朴素贝叶斯 | 训练 | O(n·d) | O(n·d) | 只扫一遍数据算频率/均值 |
| 朴素贝叶斯 | 预测 | O(d·K) | O(d·K) | 极快,查表计算 |
| 神经网络 (MLP) | 训练 | O(n · 参数总量 · T) | 同左 | 参数量巨大(百万级),依赖GPU并行;最坏可能不收敛 |
2. 聚类方法(无监督学习)
| 算法 | 阶段 | 正常情况(平均复杂度) | 最坏情况 | 核心瓶颈 |
|---|---|---|---|---|
| K-Means | 训练 | O(n·K·d·T) | 指数级(理论) | T 通常很小(几十轮),在大数据下接近线性;但理论最坏可能指数级收敛 |
| DBSCAN | 训练 | O(n·log n)(带空间索引) | O(n²) | 若没有索引或高维数据(维度灾难),距离计算退化为 O(n²) |
| 层次聚类 | 训练 | O(n²·d)(平均) | O(n³) | 维护距离矩阵极其昂贵,只适合小数据(n<5000) |
3. 关联规则挖掘
| 算法 | 阶段 | 正常情况(平均复杂度) | 最坏情况 | 核心瓶颈 |
|---|---|---|---|---|
| Apriori | 候选生成 | O(2^d)(指数级) | O(2^d) | 复杂度随维度(项数)指数爆炸。即使中等d(如10000个商品)也直接卡死 |
| FP-Growth | 挖掘 | O(n·d)(近似线性) | O(n·d) | 只需扫描两次数据库,利用FP树压缩,比Apriori快几个数量级 |
4. 异常检测(补充)
| 算法 | 阶段 | 正常情况(平均复杂度) | 最坏情况 | 核心瓶颈 |
|---|---|---|---|---|
| 孤立森林 | 训练 | O(n·d·T) | 同左 | T 是树的数量(通常100棵),速度极快,线性扩展 |
💡 实战避坑指南(应对面试/考试)
-
看到"最坏情况"必选 KNN 或 Apriori:
-
KNN 没有训练时间,但预测时间 O(n·d) 是最致命的缺陷(大数据噩梦)。
-
Apriori 是指数级复杂度,只要问到"最慢的关联规则算法",毫不犹豫选它。
-
-
SVM 的隐形成本:
- 虽然理论复杂度是 O(n³),但在实际 sklearn 中使用了 SMO(序列最小优化) 算法,实际运行速度远好于理论最坏值。不过当 n > 10000 时,慎用 RBF 核。
-
决策树的"排序"代价:
- 很多人以为决策树很快,但每次分裂都要对 d 个特征的 n 个值排序。正常情况 O(d·n·log n),这在大数据下依然很耗 CPU。
-
神经网络为什么没标最坏值?
- 因为它的训练时间完全由 算力(GPU)、Batch Size 和收敛轮数决定。代码写得不好,训练 1 个月都不收敛,这就是它的"工程最坏情况"。
-
内存占用同样重要(隐藏考点):
-
KNN 存全量数据(内存大)。
-
SVM(核方法) 需要存核矩阵 (n×n),n=10万时内存直接爆掉。
-
Apriori 候选项集数量爆炸(内存爆)。
-
📝 速记口诀(应对选择/填空)
"训练线性看 nd,KNN 预测扫全量;Apriori 指数炸,SVM 三次方扛大旗。"
决策树算法-叶节点的熵
在决策树算法中,熵(Entropy) 是衡量节点"不纯度(混乱程度)"的核心指标,而叶节点 是树的末端(最终决策层)。两者的关系直接决定了决策树的分裂逻辑 和停止条件。
1. 叶节点的熵到底在算什么?
叶节点的熵,本质上是衡量该叶节点中样本类别的纯净度 。
公式:
(其中
是该节点中第 i 类样本所占的比例)
-
熵 = 0(最理想) :该叶节点里 100% 的样本都属于同一个类别(如全是"好苹果")。此时节点"纯净",不需要再分裂。
-
熵 = 1(二分类时最大) :该叶节点里正负样本 各占 50%(如 5个"好苹果",5个"坏苹果")。此时节点最"混乱",如果这是叶节点,说明这个分法毫无区分能力。
2. 构建树时,决策树如何利用"叶节点的熵"来分裂?
决策树的生长是一个自上而下、贪心递归 的过程,核心逻辑是降低叶节点的熵。
-
目标 :每次分裂时,都希望分裂后产生的子节点(未来的叶节点)的熵尽可能低。
-
衡量工具(信息增益):

算法会遍历所有特征,选择信息增益最大(即让子节点加权平均熵最小)的那个特征进行分裂。
通俗理解:父节点是一团乱麻,算法在不断寻找能把"这团乱麻"切分成几块"相对有序(低熵)"的切法。
3. 什么情况下停止分裂(形成叶节点)?
在实际建树时,我们不会一直分裂到每个叶节点熵为 0(这会过拟合)。通常通过预剪枝让节点提前成为叶节点:
-
完全纯净:当前节点的熵为 0(所有样本同类),直接标记为叶节点。
-
特征用完:没有更多特征可供分裂。
-
达到阈值(预剪枝):
-
节点中的样本数 <
min_samples_split,即使熵很高,也不再分裂,强行作为叶节点(并用多数类作为预测结果)。 -
分裂带来的信息增益小于某个阈值(比如
min_impurity_decrease),说明这次分裂降低熵的幅度太小,不值得继续。
-
4. 🧮 手算演示:叶节点熵值实战对比
假设某节点有 10 个样本,分属 A、B 两类:

5. 🔥 新手必看:熵 vs 基尼指数(Gini)
你可能会疑惑,CART 算法默认用基尼指数,到底选哪个?
-
熵(ID3/C4.5) :对数运算,计算稍慢。对纯度变化 更敏感(在 pp 接近 0 或 1 时,曲线最陡),适合对树的纯度要求极高的场景。
-
基尼指数(CART 默认) :平方运算,计算更快。在实际工程(如 sklearn 默认
criterion='gini')中,两者效果差异极小,但基尼指数因为没有 log 运算,训练速度更快。
一句话总结 :熵是衡量叶节点混乱程度的"温度计";信息增益是决定如何分裂的"指挥棒";叶节点熵=0是终极目标,但为了防止过拟合,我们往往接受熵稍高一点的叶节点(预剪枝)。
AdaBoost算法
关于 Adaboost 算法,下列说法不正确的为( )
(A) 模型的权重和为 1 (B) 增加错误分类样本的权重
(C) 是一种集成算法 (D) 样本权重的和为 1
1. AdaBoost 的核心思想(流程)
AdaBoost(Adaptive Boosting)是一种串行的集成学习方法。它的工作流程就像一个"师生辅导"过程:
-
初始:给所有样本分配相同的权重(如 1/N)。
-
迭代训练(共 T 轮):
-
在当前样本权重下,训练一个弱分类器 htht(通常是决策树桩,即 max_depth=1)。
-
计算该分类器的加权错误率 ϵtϵt。
-
根据 ϵtϵt 计算该分类器的模型权重 αtαt(错误率越低,权重越大)。
-
更新样本权重 :增大 被 htht 分错样本的权重,减小分对样本的权重(让下一轮模型更关注难样本)。
-
-
最终集成:将 T 个弱分类器加权求和,得到强分类器。
2. 新手最容易犯的 5 个认知误区(考点)
-
误区 1(本题考点) :模型权重
之和 ≠ 1。只有样本权重经过归一化后和为 1。 -
误区 2 :AdaBoost 的基学习器必须是"决策树桩"(深度为1的树)。实际上不是必须的,虽然默认是树桩,但理论上你可以用任何支持样本权重的弱学习器(如线性分类器)。
-
误区 3 :AdaBoost 对噪声很鲁棒。其实恰恰相反 ,AdaBoost 对异常值和噪声极其敏感。因为它会疯狂增加难分样本(包括噪声)的权重,如果噪声是离群点,模型会为了拟合它而牺牲泛化能力。
-
误区 4 :AdaBoost 和 GBDT 都是降低方差。错误 ,AdaBoost 和 GBDT 都是降低偏差(通过串行拟合残差/难样本),而随机森林(Bagging)才是降低方差。
-
误区 5 :样本权重更新后,错分样本的权重一定大于正确样本。不一定 ,它受
影响。如果上一轮分类器已经很好了(
很大),错分样本的权重会被急剧放大;但如果上一轮分类器表现一般(
较小),权重变化幅度有限。
总结记忆口诀
"串行集成降偏差,错分权重翻倍加;模型权重看误差,和不一定等于 1(一)。"
sklearn 标准接口
Scikit-learn 通用 API 三部曲(必背!)
| 方法 | 参数签名 | 功能本质 | 输入数据类型 | |
|---|---|---|---|---|
.fit() |
fit(X, y) |
"学习"或"训练"。根据训练集的特征和标签,计算模型内部的参数(如线性回归的系数、决策树的分裂点)。 | X_train (特征) 和 y_train (标签) |
|
.predict() |
predict(X) |
"推理"或"预测"。利用训练好的模型,仅根据新样本的特征来计算输出结果(类别或数值)。 | 仅需 X_test (特征) |
|
.score() |
score(X, y) |
"评估"。利用测试集的特征和真实标签,自动计算模型在该数据集上的平均性能(分类器返回准确率,回归器返回 R² 分数)。 | X_test (特征) 和 y_test (标签) |
决策树中不纯度度量
1. 基尼系数(Gini Index)------ CART 算法默认
-
公式 :

-
通俗理解 :从当前节点随机抽取两个样本,它们属于不同类别的概率。这个概率越大,说明节点越"混"。
-
取值范围:二分类问题中为 0, 0.5。
-
纯度最高(全是同一类):Gini = 0
-
纯度最低(各类别 50% : 50%):Gini = 0.5
-
2. 熵(Entropy) / 信息增益(Information Gain)------ ID3 / C4.5 算法
-
公式 :

-
通俗理解:衡量节点数据的"混乱程度"或"不确定性"。你对下一个样本的猜测越难,熵就越大。
-
取值范围:二分类问题中为 0, 1。
-
纯度最高(全是同一类):Entropy = 0
-
纯度最低(各类别 50% : 50%):Entropy = 1
-
3. 分类误差(Classification Error)------ 极少用于分裂
-
公式 :

-
通俗理解:如果把这个节点里占比最多的类别作为预测结果,出错的概率。
-
取值范围:二分类问题中为 0, 0.5。
🧮 手算小练习(加深印象)
假设当前节点有 10 个样本:6 个"是" ,4 个"否"。

💡 实战避坑指南 :
虽然熵在理论上更敏感,但在工程实践中(如 sklearn),基尼系数和熵的表现几乎没差别 。因为基尼不需要计算 log,在大数据下训练速度会稍快一点,所以 sklearn 默认选
gini。如果你的数据特别复杂,想追求极致的纯度,切到entropy也是完全可以的。
数据离散化方法
1. 三大主流离散化方法(必背)
| 方法名称 | 核心逻辑 | 优点 | 致命缺点(考点) |
|---|---|---|---|
| 等宽离散化 | 将属性的值域(最大值-最小值)均匀划分为 k 个等距区间。 | 实现最简单,计算极快。 | 对异常值极其敏感。若存在极大离群点,会导致大部分样本被挤在极窄的少数区间内,分布严重不均。 |
| 等频离散化(等深) | 将数据划分为 k 个区间,确保每个区间包含相同数量的样本。 | 不受异常值影响,样本分布非常均衡。 | 可能会把数值非常接近的样本(如 30岁和 33岁)强行分割到不同区间,丢失了数据的"邻近性"信息。 |
| 基于聚类离散化(如K-Means) | 使用 K-Means 等聚类算法,根据数据的自然分布特征进行分组。 | 分组结果最贴合数据的内在规律,科学性强。 | 计算复杂度相对较高;需要预先指定聚类的簇数 K。 |
2. 为什么没有"方差离散化"?(易混淆点)
-
方差 是统计学中用来衡量一组数据离散程度 (波动大小)的指标(公式
)。 -
在数据预处理中,方差 常用于特征选择(如方差过滤:剔除方差接近0的低信息量特征),而不是用来切分区间的。所以它不属于离散化方法。
总结:记住"等宽看极值,等频看数量,聚类看分布",同时排除掉"方差"这个统计量干扰项,这道题就能稳稳拿分了!
混淆矩阵
1. 混淆矩阵的 4 个基本元素(务必滚瓜烂熟)
假设我们有一个二分类问题(正例 Positive 和 负例 Negative),模型的预测结果与真实情况会形成以下 2×2 表格:
| 真实 \ 预测 | 预测为 正例 (Positive) | 预测为 负例 (Negative) |
|---|---|---|
| 真实为 正例 (Positive) | TP (真正例) (正确命中) | FN (假负例) (漏报:是正例却没揪出来) |
| 真实为 负例 (Negative) | FP (假正例) (误报:把负例错当正例) | TN (真负例) (正确放行:是负例且判为负例) |
助记技巧 :第二个字母(P/N)代表"真实情况" ,第一个字母(T/F)代表"预测对了/错了" 。
例如:FN 是 False + Negative → 预测为负(Negative)是错的(False)→ 说明它其实是正例,即"漏报"。
2. 由这四个数衍生出的核心评估指标(必考)
考试中不会只让你认字母,通常会结合场景让你计算或选择以下指标:
| 指标名称 | 计算公式 | 通俗解释 | 关注侧重点 |
|---|---|---|---|
| 准确率 (Accuracy) | (TP+TN) / (TP+TN+FP+FN) | 所有预测中,猜对了多少? | 整体表现(数据平衡时好用) |
| 精确率 (Precision) | TP / (TP+FP) | 模型说是正例的里面,有多少是真正例?(不冤枉好人) | 避免误报(FP),如垃圾邮件过滤 |
| 召回率 (Recall) (也叫灵敏度) | TP / (TP+FN) | 所有真实正例里,找回了多少?(不错杀好人) | 避免漏报(FN),如癌症筛查、欺诈检测 |
| F1 分数 | 2·Precision·Recall / (P+R) | 精确率和召回率的调和平均 | 两者兼顾,平衡指标 |
| 特异性 (Specificity) | TN / (TN+FP) | 所有真实负例里,正确识别出了多少? | 衡量负类的识别能力 |
总结记忆口诀
"阳(P)阴(N)真假(T/F)要分清,TN 就是负例判对刑(正确预测负样本)。"





)。