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)
🌳 规则学习¶
关联规则¶
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) 优化¶
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,探索更多无监督学习方法!