数据挖掘选择题知识点

常见的数据质量问题主要有以下几类:

  1. 缺失值(Missing Values)

    • 数据中某些属性的值缺失或为空(如年龄未填、收入未知)。

    • 影响:许多算法无法处理空值,直接忽略会导致信息损失或模型偏差。

    • 应对:删除含缺失值的记录、用均值/中位数/众数填充,或用模型预测填补。

  2. 噪声(Noise)

    • 数据中的随机误差或偏离真实值的波动(如传感器故障导致的错误读数)。

    • 影响:干扰模型学习真实规律,降低预测精度。

    • 应对:通过平滑技术(如分箱、聚类)、滤波或离群点检测进行去噪。

  3. 异常值(Outliers)

    • 与大部分数据表现明显不一致的极端值(如年龄显示为200岁)。

    • 影响:可能扭曲统计指标(如均值),影响模型稳定性;但在欺诈检测中,异常值本身可能是挖掘目标。

    • 应对:根据业务规则判断,可选择删除、修正,或作为特殊类别单独分析。

  4. 数据不一致(Inconsistency)

    • 同一数据在不同地方存在矛盾或格式不统一(如性别同时记录为"男"和"M";单位混用"公斤"和"磅")。

    • 影响:导致分析结果混乱或错误。

    • 应对:统一编码规范(如One-Hot编码)、标准化单位、核对数据源逻辑。

  5. 重复数据(Duplicates)

    • 数据集中存在完全或部分重复的记录(如同一用户被录入多次)。

    • 影响:人为放大某些样本的权重,导致统计偏倚和过拟合。

    • 应对:通过主键或相似度匹配检测并去重。

  6. 数据过时(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 个"避坑"指南

  1. 看名字定属性(PPT万能法则)
  • "距离" (Distance)→ 铁定是相异性(越大越远)。

  • "系数/相似度/相关" (Coefficient/Similarity/Correlation)→ 铁定是相似性(越大越像)。

  1. Jaccard 和 SMC 千万别搞混(面试必考!)
  • Jaccard忽略"双0"(都没买的东西不算相似点)。适合"是否患病"、"是否购买"。

  • SMC考虑"双0"(都没发生也算一致)。适合"性别"、"开关状态"。

  1. 余弦 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),候选规则有 条:

    1. {a}→{b,c}

    2. {b}→{a,c}

    3. {c}→{a,b}

    4. {a,b}→{c}

    5. {a,c}→{b}

    6. {b,c}→{a}

4. 关于规则生成的"剪枝"原理(扩展知识点)

在 Apriori 算法生成规则时,有一个重要的反单调性定理

如果规则 Y→(X−Y) 不满足置信度阈值,那么任何将前提 Y 缩小为 Y′(即 Y′⊂Y)的规则 Y′→(X−Y′) 也一定不满足置信度阈值。

基于这个定理,算法通常采用逐层递推的方式生成规则,而不是直接枚举全部 62 条,这就是 Apriori 对规则生成的剪枝优化。

5. 总结记忆口诀


簇评估轮廓系数

聚类(Clustering)是一种"无监督学习"方法,这意味着数据没有标准答案(标签)。簇评估轮廓系数就是用来回答"聚类效果好不好"这个问题的工具。

🎯 什么是簇评估?

簇评估 就是衡量聚类结果质量的各类方法的总称。一个好的聚类,通常希望达到 "簇内紧密,簇间分离"

簇评估主要分为两类:

  • 外部评估指标 :适用于有真实标签的数据,通过对比聚类结果与真实标签来打分。常见的有调整兰德系数互信息等。

  • 内部评估指标 :适用于没有真实标签的数据,仅凭数据自身的特征来评估。轮廓系数就是其中最常用的一种。

📏 轮廓系数:聚类的"综合评分卡"

轮廓系数 (Silhouette Coefficient) 是一个综合性的内部评估指标,它同时考虑了簇内的紧凑程度簇间的分离程度

1. 核心思想:为每个点打分

轮廓系数会为每一个 数据点计算一个得分,最终取所有点得分的平均值作为整个聚类模型的最终得分。

2. 三步计算法

计算某个点 ( i ) 的轮廓系数,只需三步:

  1. 计算内聚度 a(i) :计算点 ( i ) 到其所在簇 内其他所有点的平均距离。这个值越小,说明点 ( i ) 与周围的点越近,所在簇越紧凑。

  2. 计算分离度 b(i) :计算点 ( i ) 到其他所有簇 的平均距离,然后取其中的最小值。这个值越大,说明点 ( i ) 与最近的邻居簇也离得足够远,分离得越好。

  3. 套用公式:用下面这个公式计算出点 ( 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棵),速度极快,线性扩展

💡 实战避坑指南(应对面试/考试)

  1. 看到"最坏情况"必选 KNN 或 Apriori

    • KNN 没有训练时间,但预测时间 O(n·d) 是最致命的缺陷(大数据噩梦)。

    • Apriori 是指数级复杂度,只要问到"最慢的关联规则算法",毫不犹豫选它。

  2. SVM 的隐形成本

    • 虽然理论复杂度是 O(n³),但在实际 sklearn 中使用了 SMO(序列最小优化) 算法,实际运行速度远好于理论最坏值。不过当 n > 10000 时,慎用 RBF 核
  3. 决策树的"排序"代价

    • 很多人以为决策树很快,但每次分裂都要对 d 个特征的 n 个值排序。正常情况 O(d·n·log n),这在大数据下依然很耗 CPU。
  4. 神经网络为什么没标最坏值?

    • 因为它的训练时间完全由 算力(GPU)、Batch Size 和收敛轮数决定。代码写得不好,训练 1 个月都不收敛,这就是它的"工程最坏情况"。
  5. 内存占用同样重要(隐藏考点)

    • KNN 存全量数据(内存大)。

    • SVM(核方法) 需要存核矩阵 (n×n),n=10万时内存直接爆掉。

    • Apriori 候选项集数量爆炸(内存爆)。


📝 速记口诀(应对选择/填空)

"训练线性看 nd,KNN 预测扫全量;Apriori 指数炸,SVM 三次方扛大旗。"


决策树算法-叶节点的熵

在决策树算法中,熵(Entropy) 是衡量节点"不纯度(混乱程度)"的核心指标,而叶节点 是树的末端(最终决策层)。两者的关系直接决定了决策树的分裂逻辑停止条件

1. 叶节点的熵到底在算什么?

叶节点的熵,本质上是衡量该叶节点中样本类别的纯净度

公式:(其中 是该节点中第 i 类样本所占的比例)

  • 熵 = 0(最理想) :该叶节点里 100% 的样本都属于同一个类别(如全是"好苹果")。此时节点"纯净",不需要再分裂。

  • 熵 = 1(二分类时最大) :该叶节点里正负样本 各占 50%(如 5个"好苹果",5个"坏苹果")。此时节点最"混乱",如果这是叶节点,说明这个分法毫无区分能力。


2. 构建树时,决策树如何利用"叶节点的熵"来分裂?

决策树的生长是一个自上而下、贪心递归 的过程,核心逻辑是降低叶节点的熵

  • 目标 :每次分裂时,都希望分裂后产生的子节点(未来的叶节点)的熵尽可能低

  • 衡量工具(信息增益)

    算法会遍历所有特征,选择信息增益最大(即让子节点加权平均熵最小)的那个特征进行分裂。

通俗理解:父节点是一团乱麻,算法在不断寻找能把"这团乱麻"切分成几块"相对有序(低熵)"的切法。


3. 什么情况下停止分裂(形成叶节点)?

在实际建树时,我们不会一直分裂到每个叶节点熵为 0(这会过拟合)。通常通过预剪枝让节点提前成为叶节点:

  1. 完全纯净:当前节点的熵为 0(所有样本同类),直接标记为叶节点。

  2. 特征用完:没有更多特征可供分裂。

  3. 达到阈值(预剪枝)

    • 节点中的样本数 < 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. 初始:给所有样本分配相同的权重(如 1/N)。

  2. 迭代训练(共 T 轮):

    • 在当前样本权重下,训练一个弱分类器 htht​(通常是决策树桩,即 max_depth=1)。

    • 计算该分类器的加权错误率 ϵtϵt​。

    • 根据 ϵtϵt​ 计算该分类器的模型权重 αtαt​(错误率越低,权重越大)。

    • 更新样本权重增大 被 htht​ 分错样本的权重,减小分对样本的权重(让下一轮模型更关注难样本)。

  3. 最终集成:将 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 就是负例判对刑(正确预测负样本)。"