数据挖掘6-AI总结
0. 章节导览
- 本章覆盖:决策树、贝叶斯/朴素贝叶斯、惰性学习(kNN/CBR/局部回归)、线性/逻辑回归、模型评估与选择、提升精度(集成/不平衡学习)。
- Lazy vs. Eager:惰性学习几乎不训练、预测时计算量大;急切学习先拟合一个全局假设、预测快。
- 下面按“概念 → 公式/伪码 → 何时使用 → 计算示例”展开;所有数值算例均为自造数据,用于练手。
1. 决策树(ID3 / C4.5 / CART)
1.1 核心思想
-
递归选择“最能提升纯度”的属性切分数据,直至叶子几乎纯净或满足停止条件(深度/最小样本/最小增益等)。
-
常用指标:
- 熵:H(Y)=−∑ipilog2piH(Y)=-\sum_i p_i\log_2 p_iH(Y)=−∑ipilog2pi
- 信息增益:Gain(X)=H(Y)−∑v∣Sv∣∣S∣H(Y∣X=v)\mathrm{Gain}(X)=H(Y)-\sum_v \frac{|S_v|}{|S|}H(Y\mid X=v)Gain(X)=H(Y)−∑v∣S∣∣Sv∣H(Y∣X=v)
- 基尼:Gini(Y)=1−∑ipi2\mathrm{Gini}(Y)=1-\sum_i p_i^2Gini(Y)=1−∑ipi2
连续特征:枚举候选阈值 ttt(通常在相邻有序值中点),选最优切分。
防过拟合:预剪枝(深度/叶子样本)或后剪枝(代价复杂度剪枝)。
1.2 何时使用
- 表格型/混合型特征,需要可解释性;对尺度/缺失较稳健。
- 若单树不稳或总体泛化差:优先随机森林/梯度提升树。
1.3 计算示例:信息增益(自造)
- 总体 10 样本:正6、负4
H(Y)=−0.6log20.6−0.4log20.4=0.97095H(Y)=-0.6\log_2 0.6-0.4\log_2 0.4=0.97095H(Y)=−0.6log20.6−0.4log20.4=0.97095 - 候选属性 BBB 两组各5:
组1(4正1负) H1=0.72193H_1=0.72193H1=0.72193;组2(2正3负) H2=0.97095H_2=0.97095H2=0.97095
加权条件熵:0.5×0.72193+0.5×0.97095=0.846440.5\times0.72193+0.5\times0.97095=0.846440.5×0.72193+0.5×0.97095=0.84644
信息增益:0.97095−0.84644=0.124510.97095-0.84644=0.124510.97095−0.84644=0.12451(若属性 AAA 的增益只有 0.046440.046440.04644,则选 BBB)。
2. 贝叶斯 & 朴素贝叶斯(Naïve Bayes, NB)
2.1 核心公式
- 贝叶斯:P(y∣x)∝P(y)P(x∣y)P(y\mid x)\propto P(y)P(x\mid y)P(y∣x)∝P(y)P(x∣y)
- 朴素假设(条件独立):P(x∣y)=∏jP(xj∣y)P(x\mid y)=\prod_j P(x_j\mid y)P(x∣y)=∏jP(xj∣y)
- 拉普拉斯平滑(避免零概率):P(v)=count(v)+1N+KP(v)=\dfrac{\text{count}(v)+1}{N+K}P(v)=N+Kcount(v)+1(KKK 为类别/取值数)
2.2 何时使用
- 训练/预测极快、可在线增量;文本分类强基线。
- 特征强相关时独立假设偏差增大,可做特征选择或用更复杂的贝叶斯网络。
2.3 计算示例
示例A:后验对比(自造)
先验:P(正)=0.6, P(负)=0.4P(\text{正})=0.6,\ P(\text{负})=0.4P(正)=0.6, P(负)=0.4
条件:P(晴∣正)=0.5, P(高∣正)=0.6P(\text{晴}\mid\text{正})=0.5,\ P(\text{高}\mid\text{正})=0.6P(晴∣正)=0.5, P(高∣正)=0.6;
P(晴∣负)=0.2, P(高∣负)=0.3P(\text{晴}\mid\text{负})=0.2,\ P(\text{高}\mid\text{负})=0.3P(晴∣负)=0.2, P(高∣负)=0.3
样本 x=(晴,高)x=(\text{晴},\text{高})x=(晴,高):
正分=0.6⋅0.5⋅0.6=0.18\text{正分}=0.6\cdot0.5\cdot0.6=0.18正分=0.6⋅0.5⋅0.6=0.18;负分=0.4⋅0.2⋅0.3=0.024\text{负分}=0.4\cdot0.2\cdot0.3=0.024负分=0.4⋅0.2⋅0.3=0.024 → 判“正”。
示例B:拉普拉斯平滑(自造)
1000 条记录:low(0)、medium(990)、high(10)。
P(low)=(0+1)/(1000+3)=1/1003≈0.0010P(\text{low})=(0+1)/(1000+3)=1/1003\approx0.0010P(low)=(0+1)/(1000+3)=1/1003≈0.0010
P(medium)=(990+1)/1003≈0.9880P(\text{medium})=(990+1)/1003\approx0.9880P(medium)=(990+1)/1003≈0.9880
P(high)=(10+1)/1003≈0.0110P(\text{high})=(10+1)/1003\approx0.0110P(high)=(10+1)/1003≈0.0110
3. 惰性学习:kNN / 局部加权回归 / CBR
3.1 kNN 要点
- 度量:欧氏/余弦/马氏;可距离加权(如 wi=1/(di+ε)w_i=1/(d_i+\varepsilon)wi=1/(di+ε))减小远邻影响。
- kkk 的偏差-方差权衡:小 kkk → 低偏差高方差;大 kkk → 高偏差低方差。
- 高维问题:距离集中/维度灾难,需标准化、特征选择/降维、度量学习或ANN索引。
“小范围可靠,大范围不可靠”:kNN依赖局部平滑假设。邻域扩得过大时会跨越不同簇/机制,混入异质样本导致偏差飙升。
3.2 何时使用
- 非平稳/强局部结构;小样本;或作为召回/冷启动模块。
- 大规模低延迟线上服务通常更偏向 Eager 模型(树/逻辑回归/GBDT)。
3.3 计算示例(自造)
训练点:(1,1)+(1,1)+(1,1)+, (2,2)+(2,2)+(2,2)+, (3,3)−(3,3)-(3,3)−, (6,6)−(6,6)-(6,6)−, (7,7)−(7,7)-(7,7)−
查询 q=(2.5,2.5)q=(2.5,2.5)q=(2.5,2.5)
- 与 (2,2)(2,2)(2,2)、(3,3)(3,3)(3,3) 距离均 ≈0.7071\approx0.7071≈0.7071;与 (1,1)(1,1)(1,1) 距离 ≈2.1213\approx2.1213≈2.1213
- k=3k=3k=3 多数投票:邻居标签 +,−,++,-,++,−,+ → 判 +++
- 距离加权(w=1/(d+ε)w=1/(d+\varepsilon)w=1/(d+ε))同样判 +++
3.4 CBR(案例推理)
- 用符号/结构化案例库,强调检索与适配;关键在相似度与索引设计(知识密集领域常见,如客服/法律)。
4. 线性/逻辑回归
4.1 模型与目标
- 逻辑回归:
p^(y=1∣x)=σ(z),z=w⊤x+b,σ(t)=11+e−t \hat{p}(y=1\mid x)=\sigma(z),\quad z=w^\top x+b,\quad \sigma(t)=\frac1{1+e^{-t}} p^(y=1∣x)=σ(z),z=w⊤x+b,σ(t)=1+e−t1 - 目标:最大化对数似然(等价最小化交叉熵);用(批/小批/随机)梯度下降及其变体优化;配合 L1/L2L_1/L_2L1/L2 正则抑制过拟合。
4.2 何时使用
- 需概率输出、可解释、适配大规模稀疏特征(配合正则与特征工程)。
- 非线性强时可加特征交叉、核方法或改用树/GBDT/深度模型。
4.3 计算示例:一次更新(自造)
单样本 (x=2,y=1)(x=2, y=1)(x=2,y=1),初始 w=0,b=0w=0, b=0w=0,b=0,学习率 η=0.1\eta=0.1η=0.1。
p^=σ(0)=0.5\hat{p}=\sigma(0)=0.5p^=σ(0)=0.5;
∂ℓ∂w=(p^−y)x=(0.5−1)⋅2=−1\frac{\partial \ell}{\partial w}=(\hat{p}-y)x=(0.5-1)\cdot2=-1∂w∂ℓ=(p^−y)x=(0.5−1)⋅2=−1;
∂ℓ∂b=p^−y=−0.5\frac{\partial \ell}{\partial b}=\hat{p}-y=-0.5∂b∂ℓ=p^−y=−0.5;
更新:w←0−0.1(−1)=0.1,b←0−0.1(−0.5)=0.05w\leftarrow0-0.1(-1)=0.1,\quad b\leftarrow0-0.1(-0.5)=0.05w←0−0.1(−1)=0.1,b←0−0.1(−0.5)=0.05。
5. 模型评估与选择
5.1 指标与工具
- 混淆矩阵(二分类):
| 预测 + | 预测 − | |
|---|---|---|
| 真实 + | TP | FN |
| 真实 − | FP | TN |
- Accuracy、Precision、Recall、F1、Specificity(特异度)、ROC-AUC/PR-AUC。
- 数据切分:Holdout、分层 k 折交叉验证、Bootstrap。
5.2 计算示例:由混淆矩阵到指标(自造)
设 TP=45、FP=5、FN=15、TN=35(总计 100):
- Accuracy = (45+35)/100=0.80(45+35)/100=0.80(45+35)/100=0.80
- Precision = 45/(45+5)=0.9045/(45+5)=0.9045/(45+5)=0.90
- Recall = 45/(45+15)=0.7545/(45+15)=0.7545/(45+15)=0.75
- F1 = 2⋅0.90⋅0.75/(0.90+0.75)=0.8182\cdot0.90\cdot0.75/(0.90+0.75)=0.8182⋅0.90⋅0.75/(0.90+0.75)=0.818
- Specificity = 35/(35+5)=0.87535/(35+5)=0.87535/(35+5)=0.875
6. 提升精度:集成学习 & 不平衡学习
6.1 随机森林(RF)
- Bagging(自助采样) + 特征子采样(结点随机子集);全树生长、投票决策。
- 主要降方差、抗噪稳健、默认强基线(表格数据)。
6.2 梯度提升树(GBDT / XGBoost)
- 加性模型,逐步拟合残差/梯度;带正则、可并行、对稀疏/缺失友好。
- 重要超参:树深、叶子最小样本、学习率、树数、列/行采样。
6.3 不平衡学习
- 采样:上采样少数类、下采样多数类、合成少数类(如 SMOTE 思想)。
- 算法层:类别权重/代价敏感、阈值平移、与集成结合。
- 评估:更关注 PR-AUC/Recall/F1/ROC-AUC,不要盲信 Accuracy。
6.4 代价敏感的最优阈值(自造)
若误报成本 cFPc_{FP}cFP、漏报成本 cFNc_{FN}cFN,当
p^(y=1∣x)>cFPcFP+cFN
\hat{p}(y=1\mid x)>\frac{c_{FP}}{c_{FP}+c_{FN}}
p^(y=1∣x)>cFP+cFNcFP
时判为正可最小化期望代价。
例:cFN=5, cFP=1⇒t∗=1/6≈0.167c_{FN}=5,\ c_{FP}=1\Rightarrow t^*=1/6\approx0.167cFN=5, cFP=1⇒t∗=1/6≈0.167(显著降低阈值以提升召回)。
7. Lazy vs. Eager 的工程抉择
- Lazy(kNN/CBR/局部回归):训练几乎零成本、预测慢;以大量局部模型形成隐式全局近似,假设空间更丰富。
- Eager(树/NB/逻辑回归/集成):先学习一个全局假设,预测快、易部署。
- 常见流水线:召回用 Lazy(近邻/相似检索),重排用 Eager(GBDT/LogReg/NN)。
8. 复习清单(按题型速记)
概念题
- 解释树的分裂准则(熵/信息增益/基尼)与剪枝必要性。
- 说明朴素贝叶斯的独立性假设利弊与平滑的作用。
- 比较 Lazy/Eager 在训练/预测开销与假设空间上的差异。
计算题
- 手算熵/信息增益(见 §1.3)。
- 手算 NB 后验与判别(见 §2.3A)。
- 给定点集与查询点,算 kNN 距离/投票(见 §3.3)。
- 由混淆矩阵算 Precision/Recall/F1/Specificity(见 §5.2)。
- 代价敏感最优阈值 t∗=cFP/(cFP+cFN)t^*=c_{FP}/(c_{FP}+c_{FN})t∗=cFP/(cFP+cFN)(见 §6.4)。
9. 常见坑 & 实战建议
- kNN:特征标准化是硬性要求;高维做特征选择/降维/度量学习;用距离加权和自适应邻域减少远邻污染。
- NB:极度不平衡时先验/平滑/阈值影响大;文本任务常很强。
- 树/森林/提升:优先调树深、叶子最小样本、列/行采样、学习率和树数;用 OOB/交叉验证防过拟合。
- 评估:不平衡任务更看 PR/Recall/F1/ROC-AUC;必要时阈值调优或类别权重。
附:练习题(自造,含答案)
1)信息增益(12 样本,正7负5;属性 X 二分:组1(5:4正1负),组2(7:3正4负))
- ① H(Y)H(Y)H(Y);② Gain(X)\mathrm{Gain}(X)Gain(X)
答案:H(Y)=0.9799H(Y)=0.9799H(Y)=0.9799;H(Y∣X)=0.9183H(Y\mid X)=0.9183H(Y∣X)=0.9183;Gain(X)=0.0616\mathrm{Gain}(X)=0.0616Gain(X)=0.0616
2)朴素贝叶斯(先验 P(正)=0.4P(\text{正})=0.4P(正)=0.4;P(A=1∣正)=0.7, P(B=1∣正)=0.6P(A{=}1\mid\text{正})=0.7,\ P(B{=}1\mid\text{正})=0.6P(A=1∣正)=0.7, P(B=1∣正)=0.6;P(A=1∣负)=0.2, P(B=1∣负)=0.3P(A{=}1\mid\text{负})=0.2,\ P(B{=}1\mid\text{负})=0.3P(A=1∣负)=0.2, P(B=1∣负)=0.3;样本 A=1,B=1A{=}1,B{=}1A=1,B=1)
答案:正分 =0.4⋅0.7⋅0.6=0.168=0.4\cdot0.7\cdot0.6=0.168=0.4⋅0.7⋅0.6=0.168;负分 =0.6⋅0.2⋅0.3=0.036=0.6\cdot0.2\cdot0.3=0.036=0.6⋅0.2⋅0.3=0.036 → 判正。
3)kNN(点集:(0,0)+,(1,0)+,(0,1)+,(3,3)−,(4,3)−,(3,4)−(0,0)+,(1,0)+,(0,1)+,(3,3)-,(4,3)-,(3,4)-(0,0)+,(1,0)+,(0,1)+,(3,3)−,(4,3)−,(3,4)−;查询 q=(1.2,0.9)q=(1.2,0.9)q=(1.2,0.9);k=3k=3k=3)
答案:最近三个近似为 (1,0)(1,0)(1,0)、(0,1)(0,1)(0,1)、(0,0)(0,0)(0,0)(全为 +)→ 判 +++。
4)混淆矩阵指标(TP=50, FP=10, FN=20, TN=20)
答案:Accuracy=0.70;Precision=0.833;Recall=0.714;F1=0.769;Specificity=0.667。
5)代价敏感阈值(cFN=8, cFP=1c_{FN}=8,\ c_{FP}=1cFN=8, cFP=1)
答案:t∗=1/(1+8)=1/9≈0.111t^*=1/(1+8)=1/9\approx0.111t∗=1/(1+8)=1/9≈0.111;更低阈值→召回↑、精度↓,适合漏报代价高场景。
、
