XGBoost算法
XGBoost算法类型:
XGBoost算法:属于集成学习算法 ,与随机森林类似,也由多颗决策树组成
XGBoost算法既可以解决分类问题,也可以解决回归问题。
后一棵树是在前一个树的基础上生成的
后一棵树只需要拟合前K棵树和真实结果之间的误差
误差可以用负梯度表示;因此可叫 梯度提升树
XGboost是计算一阶导数和二阶导数,因此又称为 极端梯度提升树
集成学习算法 集成学习算法是通过训练多个学习器,然后把这些学习器组合起来,以达到更好的预测性能的目的。
集成学习算法的分类:
Bagging:弱学习器的生成没有先后顺序,可以进行并行训练,如果是分类任务,则预测结果为多个弱学习器的预测结果取众数,如果是回归任务,则预测结果会取多个学习器的平均值。
Boosting:弱学习器的生成有先后顺序,后一个弱学习器是之前学习器的基础上训练的,预测结果为多个弱学习器预测结果之和。
极端梯度提升树
文章图片
XGBoost原理
如何构建每个棵树,从目标函数推导开始找到分裂标准
文章图片
文章图片
XGBoost算法特点
- 算法的性能好
- 算法的时间慢
【Python机器学习基础与进阶|Python机器学习--集成学习算法--XGBoost算法】以时间和空间 换 效果
# 安装 pip install xgboost
from xgboost import XGBClassifier# 分类
from xgboost import XGBRegressor# 回归
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from xgboost import plot_tree
from xgboost import to_graphviz# 导出dot文件from sklearn.datasets import load_irisplt.rcParams["font.sans-serif"] = "SimHei"# 设置支持中文字体
# matplotlib本身支持负号显示的。增加了支持中文显示,负号不能正常显示
plt.rcParams['axes.unicode_minus'] = Falsex, y = load_iris(return_X_y=True)
out = load_iris()
f_name = out.feature_names
print("特征名称\n", f_name)X_train, X_test, y_train, y_test = train_test_split(x,
y,
test_size=0.2,
stratify=y,
random_state=1
)# 实例化
xgb = XGBClassifier(use_label_encoder=False,eval_metric='mlogloss')xgb.fit(X_train, y_train)acc = xgb.score(X_test, y_test)print("准确率", acc)
print("训练集准确率", xgb.score(X_train, y_train))# xgboost的自带的显示树不支持中文
# plot_tree(xgb, num_trees=0, fmap='iris2.fmap')# 第1棵树
# plt.show()# plt.scatter(x[:,-2], x[:,-1], c=y)
# plt.show()# 如果要显示中文,先输出为dot文件
out = to_graphviz(xgb, fmap='iris2.fmap', num_trees=0)
out.render("iris.dot")
推荐阅读
- paddle|动手从头实现LSTM
- 人工智能|干货!人体姿态估计与运动预测
- 推荐系统论文进阶|CTR预估 论文精读(十一)--Deep Interest Evolution Network(DIEN)
- Python专栏|数据分析的常规流程
- 分析COMP122 The Caesar Cipher
- 读书笔记|《白话大数据和机器学习》学习笔记1
- Pytorch学习|sklearn-SVM 模型保存、交叉验证与网格搜索
- 技术|为参加2021年蓝桥杯Java软件开发大学B组细心整理常见基础知识、搜索和常用算法解析例题(持续更新...)
- C语言学习(bit)|16.C语言进阶——深度剖析数据在内存中的存储