python_GBDT分析

python_GBDT分析


Gradient Boosted Regression Trees (Gradient Boosting Machines)
#### Gradient Boosted Regression Trees (Gradient Boosting Machines)
random_state
# Gradient Boosted Regression Trees (Gradient Boosting Machines)
# GBDT# 在乳腺癌数据集上应用 GradientBoostingClassifier 的示例。默认使用 100 棵树,
# 最大深度是 3,学习率为 0.1
from sklearn.ensemble import GradientBoostingClassifier
​
X_train, X_test, y_train, y_test = train_test_split(
    cancer.data, cancer.target, random_state=0)
​
gbrt = GradientBoostingClassifier(random_state=0)
gbrt.fit(X_train, y_train)print("Accuracy on training set: {:.3f}".format(gbrt.score(X_train, y_train)))
print("Accuracy on test set: {:.3f}".format(gbrt.score(X_test, y_test)))
Accuracy on training set: 1.000
Accuracy on test set: 0.965
# 由于训练集精度达到 100%,所以很可能存在过拟合。为了降低过拟合,我们可以限制最
# 大深度来加强预剪枝,也可以降低学习率:
​
gbrt = GradientBoostingClassifier(random_state=0, max_depth=1)
gbrt.fit(X_train, y_train)print("Accuracy on training set: {:.3f}".format(gbrt.score(X_train, y_train)))
print("Accuracy on test set: {:.3f}".format(gbrt.score(X_test, y_test)))
Accuracy on training set: 0.991
Accuracy on test set: 0.972
gbrt = GradientBoostingClassifier(random_state=0, learning_rate=0.01)
gbrt.fit(X_train, y_train)print("Accuracy on training set: {:.3f}".format(gbrt.score(X_train, y_train)))
print("Accuracy on test set: {:.3f}".format(gbrt.score(X_test, y_test)))
Accuracy on training set: 0.988
Accuracy on test set: 0.965
# 降低模型复杂度的两种方法都降低了训练集精度,这和预期相同。在这个例子中,减小树
# 的最大深度显著提升了模型性能,而降低学习率仅稍稍提高了泛化性能
# 对于其他基于决策树的模型,我们也可以将特征重要性可视化,以便更好地理解模型
# (图 2-35)。由于我们用到了 100 棵树,所以即使所有树的深度都是 1,查看所有树也是
# 不现实的:
​
gbrt = GradientBoostingClassifier(random_state=0, max_depth=1)
gbrt.fit(X_train, y_train)
​
plot_feature_importances_cancer(gbrt)

在这里插入图片描述

可以看到,梯度提升树的特征重要性与随机森林的特征重要性有些类似,不过梯度提升完
全忽略了某些特征。
由于梯度提升和随机森林两种方法在类似的数据上表现得都很好,因此一种常用的方法就
是先尝试随机森林,它的鲁棒性很好。如果随机森林效果很好,但预测时间太长,或者机
器学习模型精度小数点后第二位的提高也很重要,那么切换成梯度提升通常会有用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值