跳转至

15 - 其他监督学习算法

其他监督学习算法图

🎯 本章概述

本章介绍一些重要的监督学习算法,它们在特定场景下有很好的表现。


🌲 决策树进阶

CART算法

已在 02-监督学习.md 中介绍,这里补充更多细节。

剪枝策略

Text Only
预剪枝 (Pre-pruning):
- 在树生长过程中提前停止
- 条件:深度限制、节点样本数、纯度提升阈值
- 优点:计算效率高
- 缺点:可能过早停止

后剪枝 (Post-pruning):
- 先完全生长,再剪枝
- 方法:代价复杂度剪枝、错误率降低剪枝
- 优点:通常效果更好
- 缺点:计算开销大

📊 支持向量机 (SVM) 进阶

核技巧详解

Text Only
核函数本质:隐式地将数据映射到高维空间

常用核函数:
1. 线性核: K(x,y) = x·y
2. 多项式核: K(x,y) = (γx·y + r)^d
3. RBF核: K(x,y) = exp(-γ||x-y||²)
4. Sigmoid核: K(x,y) = tanh(γx·y + r)

多分类SVM

Python
from sklearn import svm
from sklearn.multiclass import OneVsRestClassifier, OneVsOneClassifier

# One-vs-Rest: N个二分类器
ovr_clf = OneVsRestClassifier(svm.SVC(kernel='rbf'))
ovr_clf.fit(X_train, y_train)

# One-vs-One: N(N-1)/2个二分类器
ovo_clf = OneVsOneClassifier(svm.SVC(kernel='rbf'))
ovo_clf.fit(X_train, y_train)

SVM回归 (SVR)

Python
from sklearn.svm import SVR

# 支持向量回归
svr = SVR(kernel='rbf', C=1.0, epsilon=0.1)
svr.fit(X_train, y_train)

# epsilon: 不敏感区域的宽度
# 在epsilon管道内的误差不计入损失

🎲 概率分类器

朴素贝叶斯

已在 02-监督学习.md 中介绍。

高斯判别分析 (GDA)

Text Only
假设:
- 类别条件分布服从高斯分布
- P(x|y=k) ~ N(μ_k, Σ_k)

分类决策:
选择使 P(y=k|x) 最大的类别

与LDA的关系:
- LDA假设各类共享协方差矩阵
- GDA允许各类有不同的协方差矩阵
Python
from sklearn.discriminant_analysis import QuadraticDiscriminantAnalysis

# GDA (二次判别分析)
qda = QuadraticDiscriminantAnalysis()
qda.fit(X_train, y_train)

🌳 规则学习

关联规则

Text Only
Apriori算法:
- 找出频繁项集
- 生成关联规则
- 支持度和置信度筛选

应用:
- 购物篮分析
- 推荐系统
Python
from mlxtend.frequent_patterns import apriori, association_rules

# 挖掘频繁项集
frequent_itemsets = apriori(df, min_support=0.1, use_colnames=True)

# 生成关联规则
rules = association_rules(frequent_itemsets, metric="confidence", min_threshold=0.7)

🎯 实例选择算法

k近邻 (KNN) 优化

Text Only
KD-Tree:
- 对低维数据高效
- 空间划分树

Ball-Tree:
- 对高维数据更好
- 超球体划分

LSH (局部敏感哈希):
- 近似最近邻
- 适合大规模数据
Python
from sklearn.neighbors import KNeighborsClassifier

# 使用不同算法
knn_kd = KNeighborsClassifier(n_neighbors=5, algorithm='kd_tree')
knn_ball = KNeighborsClassifier(n_neighbors=5, algorithm='ball_tree')
knn_brute = KNeighborsClassifier(n_neighbors=5, algorithm='brute')

📈 序贯学习

AdaBoost

已在 12-集成学习进阶.md 中详细介绍。

Gradient Boosting

已在 12-集成学习进阶.md 中详细介绍。


💡 算法选择指南

Text Only
小数据集 (<1000):
→ 朴素贝叶斯、SVM、KNN

中等数据集 (1K-100K):
→ 随机森林、Gradient Boosting、SVM

大数据集 (>100K):
→ 线性模型、SGD、在线学习算法

高维稀疏数据:
→ 线性SVM、逻辑回归、朴素贝叶斯

非线性关系:
→ 核SVM、随机森林、神经网络

需要解释性:
→ 决策树、线性模型、规则学习

需要概率输出:
→ 逻辑回归、朴素贝叶斯、高斯过程

🎯 总结

Text Only
算法选择原则:
1. 没有免费午餐定理 - 没有 universally best 算法
2. 根据数据特点选择
3. 交叉验证评估
4. 集成多种方法

实践建议:
- 从简单模型开始
- 逐步尝试复杂模型
- 注意过拟合问题
- 考虑计算效率

下一步:学习 16-聚类算法进阶.md,探索更多无监督学习方法!