Xgboost

Xgboost

思想:怎么样在当前模型再加入一个基础模型,使得组合后的效果更好。

问题:是否会玩电脑游戏?

目标函数:

 

如何得到最优解:

 

集成算法的表示:

 

基础模型:决策树模型

集成方法:

并行构造多棵树?没那么简单,一个一个的加!

 

?问题:每一轮加入一个什么样的基础模型呢?

✒️解决方案:加了它能优化我的目标函数

 

树模型结构

  • 叶子子数限制

  • 权重正则化

 

简化目标函数

  • 要保证预测值和真实值之间的差异值最小(ml基本思想)

  • 要让树模型更精简(存在树的惩罚项)

 

1.使用泰勒展开式近似代替

2.将样本遍历改为节点遍历

3.化简目标函数

4.求导求最值:

案例

正则化的惩罚力度树的复杂度的控制因子结构分数越小就代表树的结构越好

类似于决策树中的信息增益,我们使用结构分数增益来确定划分:

 

对于每次扩展,我们还是要枚举所有可能的分割方案,如何高效的枚举所有的分割:

要枚举所有x<a 这样的条件,对于某个的分割a我们要计算左边和右边的导数和。

from xgboost import XGBRegressor
import numpy as np
from sklearn.datasets import load_breast_cancer
can = load_breast_cancer()
X = can.data
Y = can.target
model = XGBRegressor()
model.fit(X, Y)
print(model.score(X,Y))
#0.9896016265482058

 

 

转载于:https://www.cnblogs.com/TimVerion/p/11326332.html

12-09
XGBoost是一种强大的机器学习算法,在多个领域有着广泛应用。 ### 原理 XGBoost(eXtreme Gradient Boosting)是梯度提升算法的一种高效实现。它通过迭代地训练一系列弱学习器(通常是决策树),并将它们组合成一个强学习器。在每一轮迭代中,XGBoost会拟合前一轮模型的残差,通过不断减少残差来提高模型的预测能力。其目标函数包含了损失函数和正则化项,正则化项有助于防止模型过拟合,提高模型的泛化能力。 ### 使用方法 - **API文档**:有中文版的API文档可供参考,方便用户了解各个函数和类的使用方法[^2]。 - **核心数据结构**:主要使用`DMatrix`类来存储数据,其构造函数为`class xgboost.DMatrix(data, label=None, missing=None, weight=None, silent=False, feature_names=None, feature_types=None)`,可以将数据转换为适合XGBoost处理的格式[^2]。 - **常用方法**:包含`dump_model`方法等,还有如`train`、`cv`、`XGBClassifier`、`XGBRegressor`、`fit`等方法用于模型的训练、交叉验证、分类、回归以及拟合等操作,同时还有绘图API用于可视化模型结果[^2]。 ### 应用场景 - **竞赛**:可以用于解决各种机器学习竞赛中的问题,如在kaggle的初级赛题Titanic: Machine Learning from Disaster中,可使用XGBoost进行预测,帮助选手加深对XGBoost库的使用和理解[^1]。 - **医学图像预测**:在医学图像领域,可基于XGBoost模型对图像的病理信息进行预测,并将预测概率和标签信息可视化成ROC曲线,用于评估模型性能[^3]。 以下是一个简单的使用XGBoost进行分类的Python代码示例: ```python import xgboost as xgb from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split # 加载数据集 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) # 创建DMatrix对象 dtrain = xgb.DMatrix(X_train, label=y_train) dtest = xgb.DMatrix(X_test) # 设置参数 params = { 'objective': 'multi:softmax', 'num_class': 3, 'eval_metric': 'merror' } # 训练模型 num_rounds = 100 model = xgb.train(params, dtrain, num_rounds) # 进行预测 predictions = model.predict(dtest) print(predictions) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值