上手机器学习系列-第4篇-聊聊GBDT

本文介绍了GBDT的基本概念,它是基于决策树的Boosting方法,广泛应用于机器学习。通过sklearn库展示了如何实现GBDT,并探讨了n_estimators、learning_rate和max_depth等关键参数对模型性能的影响,强调了它们之间的平衡调整对于优化模型的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

本期我们来聊GBDT,这是一种被广泛使用的集成学习方法。当今在kaggle竞赛中被广泛使用的XGBoost、LightGBM正是以它为基础。因此掌握好该基础算法的原理与编码技巧还是有必要的。

我们知道,集成学习大致可分为Bagging、Boosting两种方法,其对于集成中每个单独学习器的训练过程如下简图所示:
在这里插入图片描述

GBDT顾名思义,也是一种Boosting方法。我们不妨再把它的名字拆开说一下,G表示Gradient(梯度,是一种最优化损失函数的思想),B就是Boosting了,DT表示Decison Tree,代表这种集成学习方法的基学习器是一个决策树。决策树本身可以用于分类以及回归,那么GBDT当然也适用于两个场景了。

接下来我们结合sklearn来实践一下GBDT。

Sklearn + GBDT

在sklearn的官方文档中,GBDT又名Gradient Tree Boosting,它分别有用于分类的类(GradientBoostingClassifier)、用于回归的类(GradientBoostingRegressor)。这里着重来聊分类。我们的方法会是结合代码的使用过程,把相关的理论知识点也带出来。

本节我们继续使用前面讲logistic回归时使用过的一个二分类数据集:
(img)

先把完整的代码贴出来:

from sklearn.datasets import load_breast_cancer
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.model_selection import train_test_split

#导入数据
X,y = load_breast_cancer(return_X_y=True)

#拆分训练集与测试集
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.2,random_state = 0) #test_ratio指定测试集数据量的占比,random_state是为了保证实验可复现,如果不指定数值,下一次运行随机拆分的数据未必就是本次的结果了

#创建一个分类器的实例, 注意用到了哪些参数
clf = GradientBoostingClassifier(n_estimators=50,learning_rate=1.0, max_depth=1, random_state=0)

#拟合数据
clf = clf.fit(X_train, y_train
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值