数据挖掘大题知识点

朴素贝叶斯分类预测

🧠 朴素贝叶斯分类预测 ------ 通用计算流程(4步法)

Step 1:计算先验概率 P(Y)

统计训练集中每个类别 Y 出现的频率:

Step 2:计算条件概率 P(A∣Y) 和 P(B∣Y)

给定类别 Y 的条件下,统计属性取特定值的比例:

关键假设:朴素贝叶斯要求属性相互独立,所以我们将 P(A∣Y)和 P(B∣Y) 直接相乘。

Step 3:计算后验概率(核心公式)

忽略归一化常数(证据因子 P(X)),计算类别 Y 的"得分":

(对于不同类别,分母 P(A=2,B=S)是一样的,所以直接比较分子即可)

Step 4:做出预测

比较各类别的得分,取得分最大的类别作为预测结果。


📊 手算演示(含示例数据集)

为了给你演示具体计算,我构建了一个满足题目要求的小型训练集(共 10 个样本):

序号 A(取值1/2/3) B(取值S/M/L) Y(类别)
1 1 S 正类(P)
2 2 M 正类(P)
3 2 S 正类(P)
4 3 L 正类(P)
5 1 S 负类(N)
6 1 S 负类(N)
7 2 S 负类(N)
8 3 M 负类(N)
9 3 L 负类(N)
10 1 L 负类(N)

待预测样本:X=(A=2,B=S)


① 计算先验概率 P(Y)
② 计算条件概率(基于类别分组)

注意 :如果题目要求输出具体的"后验概率值",需要将上述得分除以证据因子 P(A=2,B=S)。但在分类决策中,由于分母相同,通常只比较分子大小即可。


⚠️ 考试/面试必看:两个核心陷阱与特殊处理


逻辑斯蒂回归

1. 预测方程的标准形式(背下来!)

逻辑斯蒂回归的预测分两步走:

第一步:计算线性得分(跟线性回归一样)

(这里 z 可以是负无穷到正无穷的任意实数。)

第二步:套上 Sigmoid 函数,把 z 压缩成概率

通俗理解:模型先给样本"打分"(z),分数越高越可能是正类;然后用一个 S 形的函数(Sigmoid)把这个分数换算成"百分比概率"。


2. 从方程看"预测规则"(如何得出类别)

拿到概率后,我们通常以 0.5 为分界线(阈值)来决定类别:

由于 Sigmoid 函数是单调递增的,这个判断规则等价于

这里的 就是逻辑回归的决策边界(Decision Boundary)。在二维平面上它是一条直线,在三维空间里是一个平面。


关联规则支持度、置信度

1. 核心定义与公式(必背!)

假设我们有一条关联规则 X → Y (表示"购买了 X 的人也会购买 Y"),总事务数为 N

  • 支持度(Support) :衡量规则覆盖多少数据(频次)。

    • 公式

    • 其中 σ(X∪Y) 是同时包含 X 和 Y 的事务个数。

    • 含义:所有订单中,同时买 X 和 Y 的比例。如果支持度太低,说明这条规则只是"偶然事件",没有统计意义。

  • 置信度(Confidence) :衡量规则预测有多准(条件概率)。

    • 公式

    • 含义 :在已经买了 X 的订单中,同时买了 Y 的比例。即 P(Y∣X)。

重要区分 :σ(西格玛)指的是"支持度计数 "(绝对次数),而支持度 是"概率"(相对比例)。考试时千万看清题目问的是"计数"还是"百分比"!

2. 🧮 手算示例(经典购物篮)

假设超市有 5 笔交易数据,现在要计算规则 {牛奶} → {面包} 的支持度和置信度。

事务ID 购买的商品
T1 牛奶, 面包, 鸡蛋
T2 牛奶, 啤酒
T3 面包, 鸡蛋, 可乐
T4 牛奶, 面包, 啤酒
T5 牛奶, 面包

计算步骤

  1. 确定总事务数(N):N = 5

  2. 计算支持度计数

    • 同时包含"牛奶"和"面包"的事务有:T1, T4, T5 → 共 3 笔。

    • 所以 σ(牛奶∪面包)=3

  3. 计算前提(左侧 X)的计数

    • 包含"牛奶"的事务有:T1, T2, T4, T5 → 共 4 笔。
  4. 套用公式

    • 支持度 = 3/5=0.6(即 60%)

    • 置信度 = 3/4=0.75(即 75%)

解读:所有订单中有 60% 同时买了牛奶和面包;在买了牛奶的顾客中,有 75% 的人会买面包。


基尼系数(Gini Index)熵(Entropy)信息增益/基尼增益(Gain)

1. 三大不纯度度量(衡量节点"有多乱")

在分裂之前,决策树必须用数字来衡量当前节点(数据集)的混乱程度。常用的有三个指标,但前两个是绝对主力:

(1)基尼系数(Gini Index)------ CART算法默认,sklearn默认
  • 公式

  • 通俗理解 :从当前节点随机抽两个样本,它们属于不同类别的概率。

  • 取值范围:二分类中 0, 0.5

    • Gini = 0:完全纯净(全是同一类)。

    • Gini = 0.5:最混乱(两类各占 50%)。

  • 特点:计算速度极快(只有乘法和减法,没有对数运算)。

(2)熵(Entropy) / 信息增益(Information Gain)------ ID3/C4.5算法
  • 公式

  • 通俗理解:衡量数据的"不确定性"。越难猜,熵越大。

  • 取值范围:二分类中 0, 1

    • Entropy = 0:完全纯净。

    • Entropy = 1:最混乱(两类各占 50%)。

  • 特点 :对不纯度的变化比基尼系数更敏感(曲线更陡),但计算稍慢(涉及 log 运算)。

(3)分类误差(Classification Error)------ 仅用于剪枝,不用于分裂
  • 公式

  • 为什么不常用 :它对不纯度变化不敏感。比如节点 (4正, 1负) 和 (4正, 2负),误差都是 0.2,无法区分谁更纯,所以从不作为分裂准则。

序数型知道"谁大谁小",但不知道"大了多少";连续型不仅知道"谁大谁小",还知道"具体大了多少"。


2. 增益(Gain)------ 连接"度量"与"划分"的桥梁

有了度量指标,怎么决定用哪个特征来分裂?答案是计算增益(Gain)

  • 核心公式

    (这里的 I 可以是基尼系数,也可以是熵)

  • 通俗理解增益 = 分裂前的混乱程度 - 分裂后子节点的加权平均混乱程度。这个差值越大,说明这个特征让数据变得越"纯净"。

  • 决策树的分裂规则(贪心算法)

    1. 遍历所有特征。

    2. 对每个特征,尝试所有可能的分割点。

    3. 计算每个分割点的"增益"。

    4. 选择"增益最大"的特征和分割点进行分裂

命名细节 :如果你用基尼系数计算这个差值,就叫做**"基尼增益"** ;如果你用熵计算,就叫做**"信息增益"** 。虽然名字不同,但背后的逻辑完全一样------都是找降低不纯度最多的那个切法


3. 决策树划分的完整逻辑(三步走)

在算法层面,节点分裂是这样一步步执行的:

  • Step 1:计算父节点不纯度(比如当前节点有 10 个样本,6正4负,算出基尼或熵)。

  • Step 2:尝试划分并计算子节点不纯度

    • 如果是标称属性(如性别):按类别分叉(男/女),计算每个子节点的加权不纯度。

    • 如果是连续属性 (如年龄):先将数据排序,尝试所有相邻值的中点作为阈值(如 年龄 < 25年龄 ≥ 25),找到加权不纯度最小的那个切点。

  • Step 3:计算增益并选择

    算出所有特征(及其切点)的增益值,谁大选谁 。把数据切成两半(或几半),然后对子节点递归执行 Step 1~3,直到触发停止条件。


4. 🧮 手算对比(基尼 vs 熵,一眼看透)

假设父节点有 10 个样本:6 个"是"4 个"否"

假设用某个特征分裂后,两个子节点分别为 (3正, 0负) 和 (3正, 4负):

可以看到,无论用基尼还是熵,增益值最高的那个特征一定是同一个特征。所以在工程中,两者最终选出来的分裂点几乎一模一样。


ROC 曲线 + AUC 计算

📊 第一步:数据准备与排序

根据题目,正类为 +,负类为 -

  • 总正例数(P):实例 1, 2, 5, 6 → P=4

  • 总负例数(N):实例 3, 4, 7, 8 → N=4

将数据按照后验概率 P(+∣X,M1) 从高到低排序,并整理如下(这是计算 ROC 最关键的起始步骤):

排序后序号 原实例 真实标签 预测概率 累计 TP 累计 FP TPR (TP/4) FPR (FP/4) ROC 坐标点
起点 - - - 0 0 0 0 (0, 0)
1 3 - 0.78 0 1 0 0.25 (0.25, 0)
2 1 + 0.62 1 1 0.25 0.25 (0.25, 0.25)
3 5 + 0.48 2 1 0.50 0.25 (0.25, 0.50)
4 7 - 0.38 2 2 0.50 0.50 (0.50, 0.50)
5 4 - 0.31 2 3 0.50 0.75 (0.75, 0.50)
6 6 + 0.12 3 3 0.75 0.75 (0.75, 0.75)
7 8 - 0.05 3 4 0.75 1.00 (1.00, 0.75)
8 2 + 0.04 4 4 1.00 1.00 (1.00, 1.00)

计算逻辑详解 (以排序后第 5 步为例):

当阈值降到 0.31 时,预测为正类的样本是排在前 5 个的(原实例 3, 1, 5, 7, 4)。

其中真实为正类(+)的有 2 个(实例 1, 5),所以累计 TP=2;真实为负类(-)的有 3 个(实例 3, 7, 4),所以累计 FP=3。

因此 TPR=2/4=0.50,FPR=3/4=0.75。

📈 第二步:绘制 ROC 曲线(手画指引)

你可以在答题纸上按以下坐标点连线绘图:

  • 横轴(X):FPR

  • 纵轴(Y):TPR

  • 关键转折点

    (0,0) → (0.25, 0) → (0.25, 0.25) → (0.25, 0.5) → (0.5, 0.5) → (0.75, 0.5) → (0.75, 0.75) → (1.0, 0.75) → (1.0, 1.0)

(如果老师要求平滑曲线,用折线连接上述各点即可;二分类模型的 ROC 通常就是这种阶梯状折线。)

🧮 第三步:使用梯形法则计算 AUC

AUC 是 ROC 曲线下的面积,只计算横轴(FPR)发生变化的水平移动段。公式为:

结合上表,我们逐段计算(只取 ΔFPR>0 的区间):

区间(FPR 变化) ΔFPRΔFPR(底边宽) 平均 TPR 高度 本段面积
0 → 0.25 0.25 0+02=020+0​=0 0.25 × 0 = 0
0.25 → 0.50 0.25 0.50+0.502=0.5020.50+0.50​=0.50 0.25 × 0.50 = 0.125
0.50 → 0.75 0.25 0.50+0.502=0.5020.50+0.50​=0.50 0.25 × 0.50 = 0.125
0.75 → 1.00 0.25 0.75+0.752=0.7520.75+0.75​=0.75 0.25 × 0.75 = 0.1875

最终 AUC 值

AUC=0+0.125+0.125+0.1875=0.4375

  • 结论 :模型 M1 的 AUC = 0.4375

  • 意义 :AUC < 0.5,说明该分类模型 M1 的预测效果 "差于随机猜测"(随机猜测为 0.5)。


回归决策树

📊 原始数据

序号 x y
1 5 0.2
2 7 0.4
3 10 0.5
4 15 0.6

目标 :构建一个深度为 1 的回归树桩(即只分裂一次),找到最优的切分点。


第一步:确定所有候选切分点(阈值)回归树只会在 相邻两个 x 值的中间点 进行切分。


第二步:计算每个切分点下的总平方误差(SSE)


第三步:选出最优切分点(损失最小)。


第四步:构建回归树并预测新样本