模式识别与机器学习(十):梯度提升树

1.原理

提升方法实际采用加法模型(即基函数的线性组合)与前向分步算法。以决策树为基函数的提升方法称为提升树(boosting tree)。对分类问题决策树是二叉分类树,对回归问题决策树是二叉回归树。提升树模型可以表示为决策树的加法模型:
f M ( x ) = ∑ m = 1 M T ( x ; θ m ) f_M(x)=\sum_{m=1}^MT(x;\theta_m) fM(x)=m=1∑MT(x;θm)

其中, T ( x ; θ m ) T(x;\theta_{m}) T(x;θm)表示决策树, θ m \theta_{m} θm为决策树参数,M为树的个数。

而梯度提升树的具体步骤如下:

1.初始化 f 0 ( x ) = 0 f_{0}(x)=0 f0(x)=0,并选取损失函数 L ( y , f ( x ) ) \mathrm{~L(y,f(x))} L(y,f(x));

2.对于 m = 0 , 1 , ⋯   , M \mathrm{m}=0,1,\cdots,\mathrm{M} m=0,1,⋯,M

(1).计算负梯度:
− g m ( x i ) = − ∂ ( L ( y , f ( x i ) ) ) ∂ f ( x i ) f ( x ) = f m − 1 ( x ) -\mathrm{g_m(x_i)=-\frac{\partial\left(L\bigl(y,f(x_i)\bigr)\right)}{\partial f(x_i)}{f(x)=f{m-1}(x)}} −gm(xi)=−∂f(xi)∂(L(y,f(xi)))f(x)=fm−1(x)

(2).以负梯度 − g m ( x i ) -\mathrm{g_{m}(x_{i})} −gm(xi)为预测值,训练一个回归树 T ( x ; θ m ) T(x;\theta_{m}) T(x;θm);

(3).更新 f m ( x ) = f m − 1 ( x ) + ρ T ( x ; θ m ) f_{m}(x)=f_{m-1}(x)+\rho T(x;\theta_{m}) fm(x)=fm−1(x)+ρT(x;θm);

3.经过M次迭代后取得的模型即为
f M ( x ) = ∑ m = 1 M ρ T ( x ; θ m ) f_M(x)=\sum_{m=1}^M\rho T(x;\theta_m) fM(x)=m=1∑MρT(x;θm)

这里的 ρ \rho ρ为学习率,可用来防止过拟合。

此次实验用梯度提升树来实现多分类任务,在这种情况下输出模型经过softmax函数转化为每个类别的置信概率,从而实现分类目标。

2.代码

python 复制代码
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import GradientBoostingClassifier

# 加载鸢尾花数据集
iris = load_iris()
X = iris.data
y = iris.target

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 创建梯度提升树分类器
clf = GradientBoostingClassifier(n_estimators=100, learning_rate=1.0, max_depth=1, random_state=42)

# 训练模型
clf.fit(X_train, y_train)

# 预测测试集
y_pred = clf.predict(X_test)

# 打印预测结果
print(y_pred)

我们使用了鸢尾花数据集,这是一个常用的多类别分类数据集。我们首先加载数据,然后划分为训练集和测试集。然后,我们创建一个梯度提升树分类器,并使用训练集对其进行训练。最后,我们使用训练好的模型对测试集进行预测,并打印出预测结果。

GradientBoostingClassifier的参数n_estimators表示弱学习器的最大数量,learning_rate表示学习率,max_depth表示每个弱学习器(决策树)的最大深度,这些参数都可以根据需要进行调整。

相关推荐
算家计算9 分钟前
字节跳动开源Seed-OSS-36B:512K上下文,代理与长上下文基准新SOTA
人工智能·开源·资讯
THMAIL11 分钟前
大模型“知识”的外挂:RAG检索增强生成详解
人工智能
汀丶人工智能13 分钟前
AI Compass前沿速览:DINOv3-Meta视觉基础模型、DeepSeek-V3.1、Qwen-Image、Seed-OSS、CombatVLA-3D动
人工智能
范男16 分钟前
基于Pytochvideo训练自己的的视频分类模型
人工智能·pytorch·python·深度学习·计算机视觉·3d·视频
二向箔reverse24 分钟前
机器学习算法核心总结
人工智能·算法·机器学习
dundunmm1 小时前
【论文阅读】SIMBA: single-cell embedding along with features(2)
论文阅读·人工智能·embedding·生物信息·单细胞·多组学·细胞类型识别
金井PRATHAMA1 小时前
意象框架:连接感知与认知的统一信息结构分析——基于上古汉语同源词意义系统的词源学与认知语言学探索
人工智能·自然语言处理
聚客AI1 小时前
🧠深度解析模型压缩革命:减枝、量化、知识蒸馏
人工智能·深度学习·llm
SHIPKING3931 小时前
【机器学习&深度学习】Ollama、vLLM、LMDeploy对比:选择适合你的 LLM 推理框架
人工智能·深度学习·机器学习
zzywxc7872 小时前
AI 行业应用:金融、医疗、教育、制造业领域的落地案例与技术实现
android·前端·人工智能·chrome·金融·rxjava