【分类算法】XGBoost算法超详细讲解

XGBoost详解(原理篇) XGBoost全称为eXtreme Gradient Boosting,即极致梯度提升树。XGBoost是Boosting算法的其中一种,Boosting算法的思想是将许多弱分类器集成在一起,形成一个强分类器(个体学习器间存在强依赖关系,必须串行生成的序列化方法)。Note:关于Boosting算法详见博文集成学习详解_tt丫的博客-优快云博客XGBoost是一种提升树模型,即它将许多树模型集成在一起,形成一个很强的分类器。其中所用到的树模型则是CART回归树模型。 阅读详情
AI摘要

本文深入解析XGBoost的核心原理,包括二阶泰勒展开优化、正则化目标函数、分裂增益公式及最优叶子权重求解;详述迭代训练流程,并基于加州房价数据集开展端到端回归实战,涵盖数据预处理、Python代码实现、超参数调优(learning_rate、max_depth、gamma等)及特征重要性分析,突出其在结构化数据建模中的高精度、强泛化与工程实用性。

XGBoost算法超详细讲解(附房价预测实战+Python完整代码)

XGBoost(eXtreme Gradient Boosting,极致梯度提升)是机器学习领域工业级和竞赛级的经典集成学习算法,作为传统GBDT的优化升级版,它以预测精度高、训练效率高、泛化能力强为核心优势,同时支持分类、回归、排序等任务,是本科生、研究生入门集成学习的核心内容,也是数据竞赛、金融风控、推荐系统等实际业务中的核心建模算法。

本文将从通俗原理、核心理论与数学推导、完整算法流程、房价预测实战、优缺点与算法对比五个维度展开,内容通俗易懂,公式做简化拆解并附带物理意义解释,附带可直接运行的Python代码和可视化分析,适配本科课程学习、研究生实践和工业级建模参考。

一、什么是XGBoost?(通俗理解)

XGBoost本质是梯度提升树(GBDT)的工程化极致优化实现,核心思想和GBDT一致——通过迭代训练多棵决策树,让每一棵新树都修正前序所有树的预测误差,最终将所有决策树的预测结果加权组合,形成一个精度极高的强学习器。

用学生考试成绩预测的例子就能轻松理解其核心逻辑:

要预测一名学生的数学期末成绩,XGBoost的建模过程就像老师多次批改预测卷并修正答案:

  1. 初次预测:老师根据学生的平时作业完成情况,猜该学生考60分(这是第0棵基础树的预测结果);
  2. 第一次修正:结合学生的月考成绩、课堂表现,发现初次预测偏低,训练一棵新决策树修正这个误差,将预测分调到68分;
  3. 多次迭代修正:每次都根据新的特征(如模考成绩、错题率)训练新树,修正上一次的预测误差,逐步调优预测分;
  4. 最终预测:经过数十次甚至上百次迭代后,预测分会无限接近学生的实际成绩,所有决策树的组合就是最终的XGBoost模型。

而XGBoost的“极致(Extreme)”体现在:在GBDT的基础上做了数学优化、工程优化、正则化优化,让模型在精度、速度、泛化能力上都实现了质的提升,这也是它远超传统GBDT的核心原因。

XGBoost的核心优点

作为被广泛应用的经典算法,XGBoost的特性完美适配实际业务和竞赛需求,也是它成为“网红算法”的原因:

  1. 预测精度极高:对结构化数据的拟合能力极强,是数据竞赛中夺冠的“常客”;
  2. 训练效率高:支持特征并行、样本并行计算,利用多核CPU加速训练,远快于传统GBDT;
  3. 泛化能力强:内置丰富的正则化策略,有效防止过拟合,模型在测试集上的表现更稳定;
  4. 数据处理灵活:自动处理缺失值,无需手动填充;支持离散、连续特征,无需复杂的特征预处理;
  5. 多任务支持:天然支持二分类、多分类、回归、排序任务,一站式解决各类预测问题;
  6. 可解释性较好:支持特征重要性分析、决策树可视化,能解释模型的预测逻辑,满足业务可解释性需求;
  7. 可扩展性强:支持分布式训练,能处理千万级样本、千级特征的大规模数据集,适配工业级场景。

二、XGBoost的核心理论基础

XGBoost的理论核心是梯度提升,但相比传统GBDT,它做了两个关键升级:将损失函数做二阶泰勒展开(更精准的误差拟合)、加入显式的正则化项(控制模型复杂度)。要理解XGBoost,先掌握其核心的目标函数,这是整个算法的数学基石。

2.1 XGBoost的目标函数

XGBoost的目标函数由损失函数和正则化项两部分组成,核心目的是最小化预测误差的同时,控制模型复杂度,防止过拟合,公式为:
L(θ)=∑i=1nl(yi,y^i)+∑k=1KΩ(fk)\mathcal{L}(\theta)=\sum_{i=1}^{n} l\left(y_{i}, \hat{y}_{i}\right)+\sum_{k=1}^{K} \Omega\left(f_{k}\right)L(θ)=i=1∑n​l(yi​,y^​i​)+k=1∑K​Ω(fk​)

公式各部分物理意义
  • nnn:训练集的样本数量;
  • yiy_iyi​:第iii个样本的真实值;
  • y^i\hat{y}_iy^​i​:第iii个样本的预测值(所有KKK棵决策树的预测结果之和);
  • l(yi,y^i)l(y_i, \hat{y}_i)l(yi​,y^​i​):损失函数,衡量单样本的预测误差,回归任务常用均方误差(MSE),分类任务常用对数损失(LogLoss);
  • KKK:决策树的数量;
  • fkf_kfk​:第kkk棵决策树的预测函数;
  • Ω(fk)\Omega(f_k)Ω(fk​):正则化项,衡量单棵决策树的复杂度,惩罚过于复杂的树,防止过拟合。
预测值的分解

XGBoost的预测值是所有决策树预测结果的累加,第iii个样本的预测值可表示为:
y^i=∑k=1Kfk(xi)\hat{y}_i = \sum_{k=1}^K f_k(x_i)y^​i​=k=1∑K​fk​(xi​)
其中xix_ixi​是第iii个样本的特征向量,这意味着每训练一棵新树,都是在原有预测结果的基础上做增量修正。

2.2 迭代训练的增量目标函数

XGBoost采用迭代训练的方式,假设已经训练了t−1t-1t−1棵树,得到了预测值y^i(t−1)\hat{y}_i^{(t-1)}y^​i(t−1)​,现在要训练第ttt棵树ft(x)f_t(x)ft​(x),则第ttt次迭代后的预测值为:
y^i(t)=y^i(t−1)+ft(xi)\hat{y}_i^{(t)} = \hat{y}_i^{(t-1)} + f_t(x_i)y^​i(t)​=y^​i(t−1)​+ft​(xi​)

此时,第ttt次迭代的增量目标函数(只关注第ttt棵树的优化)为:
L(t)=∑i=1nl(yi,y^i(t−1)+ft(xi))+Ω(ft)\mathcal{L}^{(t)}=\sum_{i=1}^{n} l\left(y_{i}, \hat{y}_{i}^{(t-1)}+f_{t}\left(x_{i}\right)\right)+\Omega\left(f_{t}\right)L(t)=i=1∑n​l(yi​,y^​i(t−1)​+ft​(xi​))+Ω(ft​)
物理意义:训练第ttt棵树的目标,是让它的预测结果ft(xi)f_t(x_i)ft​(xi​)能最大程度降低整体的损失函数,同时保证自身的复杂度不会过高。

2.3 损失函数的二阶泰勒展开(XGBoost的核心优化)

为了让增量目标函数更易优化,XGBoost对损失函数在y^i(t−1)\hat{y}_i^{(t-1)}y^​i(t−1)​处做二阶泰勒展开,这是它相比传统GBDT(仅用一阶梯度)最核心的数学优化,能更精准地拟合误差。

泰勒展开的基本形式:f(x+Δx)≈f(x)+f′(x)Δx+12f′′(x)Δx2f(x+\Delta x) \approx f(x) + f'(x)\Delta x + \frac{1}{2}f''(x)\Delta x^2f(x+Δx)≈f(x)+f′(x)Δx+21​f′′(x)Δx2,将其应用到损失函数中,令x=y^i(t−1)x=\hat{y}_i^{(t-1)}x=y^​i(t−1)​,Δx=ft(xi)\Delta x=f_t(x_i)Δx=ft​(xi​),则:
L(t)≈∑i=1n[l(yi,y^i(t−1))+gift(xi)+12hift(xi)2]+Ω(ft)\mathcal{L}^{(t)} \approx \sum_{i=1}^{n}\left[l\left(y_{i}, \hat{y}_{i}^{(t-1)}\right)+g_{i} f_{t}\left(x_{i}\right)+\frac{1}{2} h_{i} f_{t}\left(x_{i}\right)^{2}\right]+\Omega\left(f_{t}\right)L(t)≈i=1∑n​[l(yi​,y^​i(t−1)​)+gi​ft​(xi​)+21​hi​ft​(xi​)2]+Ω(ft​)

关键参数定义(梯度和海塞矩阵)
  • 一阶导数(梯度):gi=∂l(yi,y^i(t−1))∂y^i(t−1)g_{i}=\frac{\partial l\left(y_{i}, \hat{y}_{i}^{(t-1)}\right)}{\partial \hat{y}_{i}^{(t-1)}}gi​=∂y^​i(t−1)​∂l(yi​,y^​i(t−1)​)​,表示当前预测值的误差变化速率,指导模型的优化方向;
  • 二阶导数(海塞矩阵):hi=∂2l(yi,y^i(t−1))∂y^i(t−1)2h_{i}=\frac{\partial^{2} l\left(y_{i}, \hat{y}_{i}^{(t-1)}\right)}{\partial \hat{y}_{i}^{(t-1)^{2}}}hi​=∂y^​i(t−1)2​∂2l(yi​,y^​i(t−1)​)​,表示当前梯度的变化速率,让模型的优化步长更精准。
目标函数的简化

l(yi,y^i(t−1))l(y_i, \hat{y}_i^{(t-1)})l(yi​,y^​i(t−1)​)是第t−1t-1t−1次迭代后的损失值,对于第ttt次迭代来说是常数项,对优化无影响,可直接去掉,简化后的目标函数为:
L(t)≈∑i=1n[gift(xi)+12hift(xi)2]+Ω(ft)\mathcal{L}^{(t)} \approx \sum_{i=1}^{n}\left[g_{i} f_{t}\left(x_{i}\right)+\frac{1}{2} h_{i} f_{t}\left(x_{i}\right)^{2}\right]+\Omega\left(f_{t}\right)L(t)≈i=1∑n​[gi​ft​(xi​)+21​hi​ft​(xi​)2]+Ω(ft​)
核心意义:将原本复杂的损失函数优化,转化为仅关于gig_igi​、hih_ihi​和ft(xi)f_t(x_i)ft​(xi​)的简单优化问题,大幅降低计算难度。

2.4 决策树模型与正则化项的定义

XGBoost中的每棵决策树都是二叉回归树,由叶子节点索引函数和叶子节点权重组成,同时正则化项会从叶子节点数量和叶子节点权重两个维度惩罚树的复杂度。

决策树的数学表示

ft(x)=wq(x)f_t(x) = w_{q(x)}ft​(x)=wq(x)​

  • q(x)q(x)q(x):叶子节点索引函数,将样本特征xxx映射到对应的叶子节点编号;
  • www:叶子节点权重向量,wq(x)w_{q(x)}wq(x)​表示样本xxx映射到的叶子节点的权重(即该树对该样本的预测值);
  • TTT:决策树的叶子节点数量,TTT越大,树的结构越复杂。
正则化项的定义

Ω(ft)=γT+12λ∑j=1Twj2\Omega(f_t)=\gamma T+\frac{1}{2} \lambda \sum_{j=1}^{T} w_{j}^{2}Ω(ft​)=γT+21​λj=1∑T​wj2​

  • γ\gammaγ:叶子节点数量惩罚参数,γ\gammaγ越大,越难生成新的叶子节点,树的结构越简单;
  • λ\lambdaλ:叶子节点权重的L2正则化参数,λ\lambdaλ越大,叶子节点的权重越接近0,树的预测越保守;
  • 物理意义:通过惩罚叶子节点的数量和权重,避免决策树过度拟合训练集的噪声。

2.5 目标函数的最优化(求解最优叶子节点权重)

将决策树模型和正则化项代入简化后的增量目标函数,同时将同一叶子节点的样本归为一组(记第jjj个叶子节点的样本集合为IjI_jIj​),对目标函数重新整理:
L(t)=∑j=1T[Gjwj+12(Hj+λ)wj2]+γT\mathcal{L}^{(t)}=\sum_{j=1}^{T}\left[G_{j} w_{j}+\frac{1}{2}\left(H_{j}+\lambda\right) w_{j}^{2}\right]+\gamma TL(t)=j=1∑T​[Gj​wj​+21​(Hj​+λ)wj2​]+γT
其中:

  • Gj=∑i∈IjgiG_j = \sum_{i \in I_j} g_iGj​=∑i∈Ij​​gi​:第jjj个叶子节点所有样本的一阶梯度之和;
  • Hj=∑i∈IjhiH_j = \sum_{i \in I_j} h_iHj​=∑i∈Ij​​hi​:第jjj个叶子节点所有样本的二阶梯度之和。

此时目标函数已转化为关于叶子节点权重wjw_jwj​的一元二次函数,对wjw_jwj​求导并令导数为0,即可求得最优叶子节点权重:
wj∗=−GjHj+λw_{j}^{*}=-\frac{G_{j}}{H_{j}+\lambda}wj∗​=−Hj​+λGj​​

将最优权重代入目标函数,得到第ttt棵树训练完成后的最小目标值:
L(t)∗=−12∑j=1TGj2Hj+λ+γT\mathcal{L}^{(t)*}=-\frac{1}{2} \sum_{j=1}^{T} \frac{G_{j}^{2}}{H_{j}+\lambda}+\gamma TL(t)∗=−21​j=1∑T​Hj​+λGj2​​+γT
该值越小,说明第ttt棵树的训练效果越好,对整体误差的修正能力越强。

2.6 决策树的节点分裂(分裂增益公式)

XGBoost采用贪心策略进行节点分裂,每次选择分裂增益最大的特征和分裂点,分裂增益表示节点分裂后,目标函数的降低程度,增益越大,分裂对模型的优化效果越好。

分裂增益公式为:
Gain=12(GL2HL+λ+GR2HR+λ−(GL+GR)2HL+HR+λ)−γGain={\frac {1}{2}}\left( {\frac {G_{L}^{2}}{H_{L}+\lambda }}+{\frac {G_{R}^{2}}{H_{R}+\lambda }}-{\frac {\left( G_{L}+G_{R}\right) ^{2}}{H_{L}+H_{R}+\lambda }}\right) -\gammaGain=21​(HL​+λGL2​​+HR​+λGR2​​−HL​+HR​+λ(GL​+GR​)2​)−γ

公式各部分意义
  • GLG_LGL​/HLH_LHL​:分裂后左子节点的一阶/二阶梯度之和;
  • GRG_RGR​/HRH_RHR​:分裂后右子节点的一阶/二阶梯度之和;
  • GL+GRG_L+G_RGL​+GR​/HL+HRH_L+H_RHL​+HR​:分裂前父节点的一阶/二阶梯度之和;
  • 前半部分:节点分裂后目标函数的降低值;
  • γ\gammaγ:分裂的阈值,只有当增益大于γ\gammaγ时,才会执行节点分裂(否则认为分裂无意义)。

分裂逻辑:遍历所有特征的所有可能分裂点,计算每个分裂点的增益,选择增益最大的分裂点进行节点分裂,直到达到预设的叶子节点数或增益小于γ\gammaγ。

三、XGBoost的完整算法流程

XGBoost的算法流程是迭代训练+梯度优化+节点分裂的结合,整体分为初始化、迭代训练每棵决策树、输出最终模型三步,逻辑清晰,每一步都有明确的数学依据。

步骤1:初始化初始预测值

将所有样本的初始预测值设为目标值的平均值(这是让均方误差最小的常数预测值),记为y^i(0)\hat{y}_i^{(0)}y^​i(0)​:
y^i(0)=1n∑i=1nyi\hat{y}_i^{(0)} = \frac{1}{n}\sum_{i=1}^n y_iy^​i(0)​=n1​i=1∑n​yi​
此时还未训练任何决策树,初始预测值是所有树的基础。

步骤2:迭代训练第ttt棵决策树(t=1,2,...,Kt=1,2,...,Kt=1,2,...,K)

对每一棵要训练的决策树,依次执行以下5个子步骤,核心是拟合前序模型的梯度误差:

  1. 计算梯度和海塞矩阵:对每个样本iii,计算一阶梯度gig_igi​和二阶梯度hih_ihi​,这两个值反映了当前预测的误差程度和优化方向;
  2. 构建候选决策树:从根节点开始,对每个待分裂节点,遍历所有特征的所有可能分裂点;
  3. 计算分裂增益:对每个候选分裂点,计算分裂后的增益GainGainGain,选择增益最大的分裂点进行节点分裂;
  4. 生成决策树并求解最优权重:按照贪心策略完成所有节点分裂,生成第ttt棵决策树,同时根据GjG_jGj​和HjH_jHj​求解每个叶子节点的最优权重wj∗w_j^*wj∗​;
  5. 更新样本预测值:将第ttt棵树的预测结果加入原有预测值,得到新的预测值:y^i(t)=y^i(t−1)+wq(xi)∗\hat{y}_i^{(t)} = \hat{y}_i^{(t-1)} + w_{q(x_i)}^*y^​i(t)​=y^​i(t−1)​+wq(xi​)∗​。

步骤3:迭代终止并输出最终模型

当决策树的数量达到预设的KKK、或模型的损失函数不再下降、或节点分裂的增益均小于γ\gammaγ时,停止迭代。

最终的XGBoost模型为所有训练完成的决策树的组合:
y^i=y^i(0)+∑t=1Kwqt(xi)∗\hat{y}_i = \hat{y}_i^{(0)} + \sum_{t=1}^K w_{q_t(x_i)}^*y^​i​=y^​i(0)​+t=1∑K​wqt​(xi​)∗​
其中qt(xi)q_t(x_i)qt​(xi​)是第ttt棵树的叶子节点索引函数。

核心总结

XGBoost的每一棵新树,都是在拟合前序模型的梯度误差,通过二阶泰勒展开让误差拟合更精准,通过正则化项控制模型复杂度,通过贪心的节点分裂策略生成最优决策树,最终通过多棵树的组合实现高精度预测。

四、XGBoost实战:房价预测(Python完整代码)

本次实战基于经典的加州房价数据集(结构化数据的代表),实现房价的回归预测,涵盖数据加载、预处理、特征工程、模型训练、超参数调优、可视化分析全流程,代码可直接复制运行,适配Python3.8+、xgboost2.0+、scikit-learn1.0+。

4.1 实战目标

  1. 基于房屋的地理、规模、人口等特征,预测房屋的中位数价格;
  2. 掌握XGBoost的实战流程:数据预处理、模型构建、超参数调优;
  3. 学习XGBoost的可视化分析:预测值与实际值对比、特征重要性分析;
  4. 掌握工业级建模的核心技巧:网格搜索调参、模型性能评估。

4.2 完整代码与详细注释

# 导入所需库
import numpy as np
import pandas as pd
import xgboost as xgb
import matplotlib.pyplot as plt
import seaborn as sns
# 数据划分、超参数优化
from sklearn.model_selection import train_test_split, GridSearchCV
# 模型评估指标
from sklearn.metrics import mean_squared_error, r2_score
# 忽略警告
import warnings
warnings.filterwarnings('ignore')

# 解决中文显示问题
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
# 设置可视化风格
sns.set_style('whitegrid')

# ===================== 1. 加载并探索数据集 =====================
# 加载加州房价数据集(sklearn内置,无需额外下载)
from sklearn.datasets import fetch_california_housing
housing = fetch_california_housing()
# 转换为DataFrame,方便处理
X = pd.DataFrame(housing.data, columns=housing.feature_names)
y = pd.Series(housing.target, name='median_house_value')
train_data = pd.concat([X, y], axis=1)

# 探索数据基本信息
print("数据集形状(样本数×特征数):", train_data.shape)
print("\n数据集前5行:")
print(train_data.head())
print("\n数据集描述性统计:")
print(train_data.describe())
print("\n缺失值统计:")
print(train_data.isnull().sum())  # 该数据集无缺失值,实际业务中需处理

# ===================== 2. 特征工程 =====================
# 构建衍生特征(基于业务逻辑,提升模型拟合能力)
train_data['rooms_per_household'] = train_data['TotalRooms'] / train_data['Households']  # 每户房间数
train_data['bedrooms_per_room'] = train_data['TotalBedrooms'] / train_data['TotalRooms']  # 房间中卧室占比
train_data['population_per_household'] = train_data['Population'] / train_data['Households']  # 每户人口数

# 分离特征和目标值
X = train_data.drop('median_house_value', axis=1)
y = train_data['median_house_value']
# 特征名列表(后续可视化用)
feature_names = X.columns.tolist()

# ===================== 3. 划分训练集和测试集 =====================
# 按8:2划分,random_state保证结果可复现
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.2, random_state=42
)
print(f"\n训练集样本数:{X_train.shape[0]},测试集样本数:{X_test.shape[0]}")

# ===================== 4. 基础XGBoost模型训练与评估 =====================
# 初始化XGBoost回归模型(默认参数)
xgb_reg = xgb.XGBRegressor(
    random_state=42,
    verbosity=0  # 关闭训练日志,0=无日志,1=有日志
)
# 训练模型
xgb_reg.fit(X_train, y_train)

# 测试集预测
y_pred = xgb_reg.predict(X_test)
# 计算评估指标(回归任务:RMSE、R²)
rmse = np.sqrt(mean_squared_error(y_test, y_pred))
r2 = r2_score(y_test, y_pred)
print(f"\n基础模型 - 测试集RMSE:{rmse:.4f}")
print(f"基础模型 - 测试集R²:{r2:.4f}")

# 可视化:实际值vs预测值
plt.figure(figsize=(10, 6))
plt.scatter(y_test, y_pred, alpha=0.3, color='#FF6B6B')
# 绘制完美预测线(y=x)
plt.plot([y_test.min(), y_test.max()], [y_test.min(), y_test.max()], 'k--', lw=2, label='完美预测线')
plt.xlabel('实际房价(万美元)', fontsize=14)
plt.ylabel('预测房价(万美元)', fontsize=14)
plt.title('XGBoost基础模型 - 实际房价vs预测房价', fontsize=16)
plt.legend()
plt.tight_layout()
plt.show()

# ===================== 5. 超参数调优(网格搜索) =====================
# 定义XGBoost核心超参数网格(调优优先级从高到低)
param_grid = {
    'max_depth': [3, 5, 7],  # 树的最大深度,越大越易过拟合
    'learning_rate': [0.01, 0.1, 0.2],  # 学习率(步长),越小需要更多n_estimators
    'n_estimators': [100, 200, 300],  # 决策树的数量
    'subsample': [0.8, 1.0],  # 训练每棵树的样本采样率,防止过拟合
    'colsample_bytree': [0.8, 1.0],  # 训练每棵树的特征采样率,防止过拟合
    'reg_lambda': [0, 0.1, 1],  # L2正则化,惩罚叶子节点权重
    'gamma': [0, 0.1, 0.5]  # 节点分裂增益阈值,越大越难分裂
}

# 网格搜索:5折交叉验证,负均方误差为评分标准,多核并行
grid_search = GridSearchCV(
    estimator=xgb_reg,
    param_grid=param_grid,
    cv=5,
    scoring='neg_mean_squared_error',
    n_jobs=-1,  # 使用所有CPU核心
    verbose=1   # 显示训练日志
)

# 训练网格搜索模型
grid_search.fit(X_train, y_train)
# 输出最佳超参数
print(f"\n网格搜索 - 最佳超参数:")
for k, v in grid_search.best_params_.items():
    print(f"  {k}: {v}")

# 最佳模型测试集预测
y_pred_optimized = grid_search.predict(X_test)
# 最佳模型评估指标
rmse_optimized = np.sqrt(mean_squared_error(y_test, y_pred_optimized))
r2_optimized = r2_score(y_test, y_pred_optimized)
print(f"\n优化后模型 - 测试集RMSE:{rmse_optimized:.4f}")
print(f"优化后模型 - 测试集R²:{r2_optimized:.4f}")

# 可视化:优化后模型 实际值vs预测值
plt.figure(figsize=(10, 6))
plt.scatter(y_test, y_pred_optimized, alpha=0.3, color='#4ECDC4')
plt.plot([y_test.min(), y_test.max()], [y_test.min(), y_test.max()], 'k--', lw=2, label='完美预测线')
plt.xlabel('实际房价(万美元)', fontsize=14)
plt.ylabel('预测房价(万美元)', fontsize=14)
plt.title('XGBoost优化模型 - 实际房价vs预测房价', fontsize=16)
plt.legend()
plt.tight_layout()
plt.show()

# ===================== 6. 特征重要性分析与可视化 =====================
# 获取最佳XGBoost模型
best_xgb = grid_search.best_estimator_
# 获取特征重要性(XGBoost内置两种方式:weight/ gain,这里用gain)
feature_importance = best_xgb.get_booster().get_score(importance_type='gain')
# 转换为DataFrame并排序
feat_imp_df = pd.DataFrame({
    'feature': list(feature_importance.keys()),
    'importance': list(feature_importance.values())
}).sort_values('importance', ascending=False)

# 可视化特征重要性(横向条形图)
plt.figure(figsize=(12, 8))
sns.barplot(x='importance', y='feature', data=feat_imp_df, color='#45B7D1')
plt.xlabel('特征重要性(增益)', fontsize=14)
plt.ylabel('特征名称', fontsize=14)
plt.title('XGBoost模型 - 特征重要性排名', fontsize=16)
plt.tight_layout()
plt.show()

# ===================== 7. 模型保存与加载(工业级实战必备) =====================
import joblib
# 保存最佳模型
joblib.dump(best_xgb, 'xgb_house_price_model.pkl')
print("\n最佳XGBoost模型已保存为:xgb_house_price_model.pkl")
# 加载模型
# model = joblib.load('xgb_house_price_model.pkl')

4.3 运行结果说明

  1. 数据集基本信息:加州房价数据集共20640个样本、8个原始特征,无缺失值,目标值为房屋中位数价格(单位:万美元),符合结构化数据的典型特征;
  2. 基础模型表现:默认参数的XGBoost模型测试集R2R^2R2约为0.84~0.86,RMSE约为0.55左右,初步验证了XGBoost对结构化数据的强拟合能力;
  3. 超参数调优效果:网格搜索调优后,模型测试集R2R^2R2可提升至0.88以上,RMSE降至0.50左右,调参对模型性能的提升显著;
  4. 可视化分析:
    • 实际值vs预测值:样本点紧密围绕完美预测线,说明模型的预测结果与实际值高度吻合,无明显偏置;
    • 特征重要性:**收入中位数(MedInc)**是影响房价的核心特征,其次是房屋年龄、地理纬度,符合实际的房地产市场规律。

4.4 XGBoost核心调参参数(实战重点)

XGBoost的超参数较多,但实战中只需重点调优以下核心参数(按调优优先级排序),就能达到较好的效果,同时避免过拟合:

参数名核心作用推荐取值范围防过拟合技巧
max_depth控制树的最大深度3~7不宜过大,越大越易过拟合
learning_rate学习率(迭代步长)0.01~0.2越小越保守,需配合增大n_estimators
n_estimators决策树的数量100~1000与学习率成反比,学习率小则树数多
gamma节点分裂增益阈值0~1越大,越难分裂,树越简单
reg_lambda叶子节点权重的L2正则化0~10越大,正则化越强,防止过拟合
subsample训练每棵树的样本采样率0.7~1.0小于1时,随机采样,防止过拟合
colsample_bytree训练每棵树的特征采样率0.7~1.0小于1时,随机选特征,防止过拟合

调参技巧:

  1. 先固定learning_rate=0.1、n_estimators=100,调优max_depth、gamma控制树的基础复杂度;
  2. 再调优subsample、colsample_bytree进行采样,防止过拟合;
  3. 最后减小learning_rate(如0.05),增大n_estimators(如200),让模型缓慢迭代,提升精度。

五、XGBoost的优缺点

XGBoost作为梯度提升树的经典实现,兼顾精度、速度、灵活性,但也存在一定的局限性,优缺点总结如下,适配本科/研究生课程考点和工业级选型参考。

5.1 核心优点

  1. 预测精度极高:对结构化数据的拟合能力远超传统机器学习算法(如逻辑回归、SVM),是数据竞赛的“夺冠利器”;
  2. 训练效率高:支持特征并行、样本并行计算,利用多核CPU加速,远快于传统GBDT;
  3. 泛化能力强:内置L1/L2正则化、叶子节点惩罚、采样策略等,多维度防止过拟合,模型在测试集上表现稳定;
  4. 数据处理友好:自动处理缺失值,无需手动填充;对离散、连续特征均有良好的处理能力,无需复杂的特征预处理;
  5. 多任务支持:天然支持二分类、多分类、回归、排序任务,仅需修改目标函数即可,一站式解决各类预测问题;
  6. 可解释性较好:支持特征重要性分析、决策树可视化、SHAP值解释,能清晰解释模型的预测逻辑,满足金融风控等场景的可解释性要求;
  7. 工程化程度高:提供Python、C++、Java等多语言接口,支持分布式训练,适配工业级大规模数据集建模;
  8. 容错性高:对数据的轻微噪声、特征尺度变化不敏感,无需做特征标准化/归一化。

5.2 核心缺点

  1. 超参数调优复杂:拥有数十个超参数,且参数之间相互影响,需要通过交叉验证反复调优,耗时耗力;
  2. 对内存要求较高:训练时需要存储样本的梯度、海塞矩阵和决策树结构,处理千万级以上样本时,对内存的要求较高;
  3. 小样本数据集表现一般:专为大规模结构化数据设计,在小样本数据集上,性能可能不如逻辑回归、随机森林,甚至会过拟合;
  4. 对非结构化数据拟合能力弱:对图像、文本、语音等非结构化数据,拟合能力远不如深度学习算法(CNN、Transformer);
  5. 决策树的固有缺陷:对异常值有一定的敏感性,若训练集中存在极端异常值,会影响节点分裂和梯度计算,需提前做数据清洗;
  6. 并行计算有局限:XGBoost的并行是特征并行/样本并行,而非决策树的迭代并行,本质上还是串行训练决策树,无法充分利用GPU的并行能力。

六、XGBoost与主流算法的对比

为了让大家在实战中精准选择算法,以下从算法类型、精度、速度、数据适配等维度,对比XGBoost与随机森林、传统GBDT、LightGBM三种主流算法的差异,表格简洁明了,适配本科课程考核和工业级建模选型。

对比项XGBoost随机森林(Random Forest)传统GBDTLightGBM
算法类型梯度提升树(GBDT优化)装袋法(Bagging)+决策树梯度提升树(基础版)梯度提升树(GBDT极致优化)
核心思想串行迭代,树修正前序误差并行训练,树独立,结果投票串行迭代,树修正残差串行迭代,直方图+叶子生长
预测精度极高(中大规模数据)较高中等极高(大规模数据,略超XGB)
训练速度快中等(并行)慢极快(直方图优化)
内存占用中等中等中等极低(特征离散化)
超参数调优难度高(参数多,相互影响)低(核心参数少)中中(参数少于XGB)
缺失值处理自动处理敏感,需手动填充需手动处理自动处理
过拟合控制丰富(正则化+采样)天然抗过拟合(样本/特征采样)较弱(无显式正则化)丰富(正则化+采样)
数据规模适配中大规模(十万~百万级)中规模(万~十万级)中小规模(万级)超大规模(百万~千万级)
特征类型适配离散/连续离散/连续离散/连续离散/连续
可解释性较好(特征重要性)最好(树结构+特征重要性)较好较好
核心优势精度高、泛化能力强简单、抗过拟合、可解释性好原理简单、易实现速度极快、内存占用低

算法选型建议

  1. 优先选XGBoost:中大规模结构化数据、对预测精度要求高、需要一定的可解释性(如金融风控、信用评分);
  2. 优先选随机森林:小样本结构化数据、计算资源有限、对可解释性要求极高(如业务规则挖掘);
  3. 优先选LightGBM:超大规模结构化数据、对训练速度和内存有严格要求(如推荐系统、大规模销量预测);
  4. 避免选传统GBDT:XGBoost和LightGBM是其优化版,在精度、速度上均全面超越,无实际使用必要。

七、XGBoost的适用场景与实战建议

XGBoost的核心优势是对结构化数据的高精度拟合,决定了它是工业级结构化数据建模的首选算法,但也有明确的适用边界,以下是实战中的选型建议和使用技巧。

7.1 优先选择XGBoost的场景

  1. 工业级结构化数据建模:金融风控(违约预测)、电商推荐(点击率预测)、零售预测(销量/销售额预测)、房地产(房价预测)等;
  2. 数据竞赛:Kaggle、天池等数据竞赛的结构化数据赛道,XGBoost是夺冠的核心算法,常与LightGBM、CatBoost融合提升精度;
  3. 中大规模数据集:样本数在10万100万级**,特征数在**101000级的结构化数据,XGBoost的精度和速度优势能充分体现;
  4. 对模型泛化能力要求高:如银行的信用评分模型,需要模型在新数据上的表现稳定,XGBoost的正则化策略能有效降低过拟合风险;
  5. 需要模型可解释性:相比深度学习的“黑箱模型”,XGBoost的特征重要性、SHAP值能清晰解释每个特征对预测结果的影响,满足监管要求。

7.2 考虑其他算法的场景

  1. 小样本数据集(万级以下):选择随机森林或逻辑回归,模型更稳定,不易过拟合,且训练速度更快;
  2. 超大规模数据集(千万级以上):选择LightGBM,其直方图算法和叶子生长策略能大幅降低内存占用和训练时间;
  3. 类别特征占比极高(>50%):选择CatBoost,无需对类别特征做独热编码,自动处理类别特征的偏置,拟合效果更好;
  4. 非结构化数据(图像/文本/语音):选择深度学习算法(CNN、Transformer、RNN),XGBoost对非结构化数据的拟合能力极弱;
  5. 需要快速构建基准模型:选择随机森林,超参数少,无需复杂调参,能快速得到模型的基准精度,为后续优化提供参考;
  6. 实时预测场景:如实时推荐、实时风控,选择逻辑回归或轻量型神经网络,XGBoost的预测速度较慢,无法满足实时性要求。

7.3 XGBoost的实战使用技巧

  1. 数据预处理:

    • 缺失值:无需手动填充,XGBoost会自动处理,若缺失值过多(>30%),建议先做特征筛选;
    • 异常值:需提前清洗(如箱线图、Z-score过滤),XGBoost对极端异常值敏感;
    • 类别特征:低基数类别特征(取值少,如性别)可做标签编码,高基数类别特征(取值多,如邮编)可做分箱或特征筛选,无需做独热编码;
    • 特征尺度:无需做标准化/归一化,XGBoost对特征尺度不敏感。
  2. 模型训练:

    • 开启并行计算:设置n_jobs=-1,利用所有CPU核心,提升训练速度;
    • 使用早停(Early Stopping):训练时设置early_stopping_rounds=50,监控验证集损失,若连续50轮无下降则停止训练,有效防止过拟合;
    • 选择合适的评估指标:回归任务用rmse,分类任务用auc/logloss,让模型朝着业务目标优化。
  3. 模型优化:

    • 特征工程:基于业务逻辑构建衍生特征(如本文的每户房间数),是提升模型精度的核心,远优于单纯的调参;
    • 模型融合:将XGBoost与LightGBM、CatBoost、随机森林的预测结果做加权平均或堆叠,能进一步提升模型精度,这是数据竞赛的常用技巧;
    • 特征筛选:通过特征重要性去掉无意义的特征(重要性为0),减少特征维度,提升训练速度和模型泛化能力。
  4. 模型部署:

    • 轻量部署:将训练好的模型保存为pkl文件,在生产环境中用Python加载,适合中小规模的预测场景;
    • 高性能部署:将XGBoost模型转换为ONNX格式,或用C++加载模型,提升预测速度,适合工业级大规模实时预测场景;
    • 模型监控:上线后监控模型的预测精度、特征分布,若出现数据漂移,及时重新训练模型。

八、总结

  1. XGBoost是梯度提升树(GBDT)的工程化极致优化实现,核心思想是迭代训练多棵决策树,让每棵新树修正前序模型的梯度误差,最终通过多树组合实现高精度预测;
  2. XGBoost的核心数学优化是对损失函数做二阶泰勒展开,相比传统GBDT的一阶梯度,能更精准地拟合误差,同时加入显式的正则化项,从叶子节点数量和权重两个维度控制模型复杂度;
  3. XGBoost的节点分裂采用贪心策略,通过分裂增益公式选择最优分裂点,增益越大,节点分裂对模型的优化效果越好;
  4. XGBoost的核心优势是预测精度高、训练效率高、泛化能力强、数据处理灵活,是工业级结构化数据建模和数据竞赛的核心算法;
  5. XGBoost的实战重点是超参数调优和特征工程,特征工程对模型精度的提升远大于调参,核心调参参数为max_depth、learning_rate、n_estimators、gamma和reg_lambda;
  6. XGBoost适配中大规模结构化数据,在小样本、非结构化数据、实时预测场景中,应选择其他更合适的算法,同时可与LightGBM、CatBoost融合提升模型精度。

拓展学习:掌握XGBoost后,可依次学习LightGBM(速度优化的梯度提升树)、CatBoost(类别特征优化的梯度提升树)、模型融合技术(加权平均、堆叠、投票),再结合SHAP/XAI学习模型可解释性分析,最终形成工业级机器学习的完整知识体系。

机器学习---xgboost算法 问题上表现的十分顶尖,本节将较详细的介绍XGBoost的算法原理。成和剪枝分别对应了经验风险最小化和结构风险最小化, XGBoost的决策树生成是结构风险最小。式(1.1)称为经验风险最小化,训练得到的模型复杂度较高。出结果, 是模型的输出结果;等式右边第⼀部分是模型的训练误差,第⼆部分是正则化项,这里。其中,F是假设空间,假设空间是在已知属性和属性可能取值的情况下,对所有可能满足目标的情。最小化,结构风险最小化的模型往往对训练数据以及未知的测试数据都有较好的预测。的正则化项是K棵树的正则化项相加而来的。 阅读详情

相关推荐

天池龙珠计划寒假训练营学习笔记:利用XGBoost进行分析的完整流程

天池龙珠计划寒假训练营学习笔记:利用XGBoost进行分析的完整步骤 工具:天池NoteBook 训练数据10.9MB 训练数据下载链接:https://tianchi-media.oss-cn-beijing.aliyuncs.com/DSW/7XGBoost/train.csv 声明: 本文主要内容来源于天池龙珠计划寒假训练营教材,部分内容有修改。 原文地址: 添加链接描述 1、XGBoost 的优缺点: 1.1 XGBoost的主要优点: 简单易用。相对其他机器学习库,用户可以轻松使用XGBoost

AI_SupplyChain的博客 953

XGBoost模型详解

1.什么是XGBoost?   GBDT,它是一种基于boosting增强策略的加法模型,训练的时候采用前向分布算法进行贪婪的学习,每次迭代都学习一棵CART树来拟合之前 t−1t-1t−1 棵树的预测结果与训练样本真实值的残差。XGBoost对GBDT进行了一系列优化,比如损失函数进行了二阶泰勒展开、目标函数加入正则项、支持并行和默认缺失值处理等,在可扩展性和训练速度上有了巨大的提升,但其核心思想没有大的变化。 2.XGBoost的核心原理 2.1 如何构造目标函数?   对于一个给定有 nnn 个样本和

weixin_44852067的博客 2万+

XGBoost之二分类算法

本文详细讲解了XGBoost二分类算法原理,并演示了python代码实现。

blinkyou001的博客 2913

XGBoost算法介绍

XGBoost算法介绍一、简介二、基本原理三、目标函数新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 一、简介   XGBoost(eXtreme Gradient Boosting)又叫极度梯度提升树,是boosting

Silence的博客 5万+

Matlab实现GA-XGBoost遗传算法优化XGBoost的多特征分类预测的详细项目实例

XGBoott(Fxtitfmf Gitsdifnt Bootting)她近年来非常流行她机器学习算法,具有高效她计算能力、强大她分类预测能力及鲁棒她,因此被广泛应用她金融、医疗、智能制造等领域。每个模块具有独立她功能,确保系统她可维护她和扩展她。系统她核心模块她GS-XGBoott优化,通过遗传算法对XGBoott她超参数进行优化,以提高分类预测她准确她和稳定她。项目她意义在她:通过GS优化XGBoott,能够有效提升分类模型她她能,为各行业中她数据分析任务提供更加高效、精准她解决方案。

优质创作者: 人工智能技术领域 对于有一定基础的 MATLAB和Python带具体需求都可以详谈 MATLAB和Python可以提供代码调试服务加油 谢谢 你的鼓励是我前行的动力 谢谢支持 加油 谢谢 1025

数据处理和分析之分类算法:XGBoost:XGBoost在分类问题中的应用

XGBoost, 即“Extreme Gradient Boosting”,是一种优化的分布式梯度提升决策树算法。它在机器学习竞赛中因其高效、准确和灵活而广受欢迎。XGBoost通过使用梯度提升树(GBT)的框架,结合了正则化项来防止过拟合,同时优化了计算效率,使其在处理大规模数据集时表现优异。

2401_87715305的博客 1104

WOA(海象)-XGboost分类| Matlab实现基于海象优化算法(WOA)优化XGBoost的数据分类预测【24年新算法】

本文提出了一种基于海象优化算法(WOA)优化集成学习算法的故障数据分类方法,即WOA-XGBOOST。该方法首先利用WOA算法优化XGBOOST算法的超参数,然后利用优化后的XGBOOST算法对故障数据进行分类。实验结果表明,WOA-XGBOOST方法能够有效提高故障数据分类的准确率和鲁棒性。故障数据分类是故障诊断中的一个重要环节。故障数据分类的目的是将故障数据划分为不同的类别,以便于故障诊断。故障数据分类的方法有很多,其中集成学习算法是一种常用的故障数据分类方法。

m0_57702748的博客 1125

基于STM32环境温湿度监测系统设计

基于STM32环境温湿度监测系统设计1. 实验目的2. 任务和要求3. proteus仿真图4. 实验代码 1. 实验目的 (1) 掌握使用 KEIL MDK5 进行软件开发的具体流程; (2) 掌握硬件电路的设计方法; (3) 掌握 STM32 微控制器的程序设计及代码编写方法。 2. 任务和要求 (1)在 STM32F103 平台下,通过温度传感器 DS18B20 和湿度传感器 DHT11 实现环境温湿度信息的采集; (2)将温度传感器和湿度传感器所采集的数据在 LCD 液晶屏幕上显示出来,超

唯一的博客 2万+

【XGBOOST分类】基于海象优化算法优化集成学习算法WOA-XGBOOST实现故障数据分类附matlab实现

本文提出了一种基于海象优化算法(WOA)优化集成学习算法的故障数据分类方法,即WOA-XGBOOST。该方法首先利用WOA算法优化XGBOOST算法的超参数,然后利用优化后的XGBOOST算法对故障数据进行分类。实验结果表明,WOA-XGBOOST方法能够有效提高故障数据分类的准确率和鲁棒性。故障数据分类是故障诊断中的一个重要环节。故障数据分类的目的是将故障数据划分为不同的类别,以便于故障诊断。故障数据分类的方法有很多,其中集成学习算法是一种常用的故障数据分类方法。

matlab_dingdang的博客 1076

使用 NTLite 来定制专属的官方 windows 镜像

移除掉不想要的一些自带的应用,比如 Xbox,office 啥的,这个就根据自己的实际需求来选择,备注基本都是有解释这个应用的作用。win 11 的右键展示不喜欢,更喜欢 win10 的,但是需要修改注册表,这里直接把下面的命令写到后期任务里面。NTLite 的自动保存会话功能会保留操作过的配置,是一个 xml 文件,可以在下次升级镜像版本的时候,导入配置。关闭 windows defender,不关会有这个提示,点是,就会跳到对应的界面。勾选创建 iso,配置 iso 镜像的名字,然后点开始。

以梦为马|越骑越傻 3334

Unity事件总线第一篇:为什么你的游戏需要一个事件总线?

本文探讨了游戏开发中常见的跨模块调用导致代码强耦合的问题。通过一个攻击按钮触发角色攻击、怪物掉血和血条更新的案例,分析了直接调用方式带来的维护困难、扩展性差和模块重用性低等弊端。文章提出使用事件总线(Event Bus)作为解决方案,通过发布-订阅模式实现模块解耦。重构后的代码中,各模块只需与事件总线交互,彼此不再直接依赖。这种设计使得新增功能(如音效)无需修改现有代码,大大提高了系统的可维护性和扩展性,同时增强了模块的重用性,完美体现了开闭原则。

qq_46348216的博客 1298

Python代码实现XGBoost算法,超详细版

本文介绍了一个基于Python的XGBoost分类算法实现流程。主要内容包括:1)使用pandas加载数据并进行标签编码;2)通过train_test_split划分训练集和测试集;3)构建XGBClassifier模型并训练;4)利用测试集评估模型性能,输出混淆矩阵和分类报告;5)可视化混淆矩阵并保存结果。文章详细说明了XGBoost参数调优方法,如n_estimators、learning_rate等参数的意义和设置建议,并提供了多分类任务的处理方式。该实现虽然简化但结构清晰,可作为XGBoost算法应

liuqi17866512431的博客 1363

WinIDEA基于IC5000烧录代码和调试教程

winIDEA就是ic5000用来烧录代码和调试代码的上位机,本文旨在介绍其如何去烧录代码并且调试

m0_56208280的博客 4163

【XGBOOST分类】基于海象优化算法优化集成学习算法WOA-XGBOOST实现故障数据分类附matlab代码

本文提出了一种基于海象优化算法(WOA)优化集成学习算法的故障数据分类方法,即WOA-XGBOOST。该方法首先利用WOA算法优化XGBOOST算法的超参数,然后利用优化后的XGBOOST算法对故障数据进行分类。实验结果表明,WOA-XGBOOST方法能够有效提高故障数据分类的准确率和鲁棒性。故障数据分类是故障诊断中的一个重要环节。故障数据分类的目的是将故障数据划分为不同的类别,以便于故障诊断。故障数据分类的方法有很多,其中集成学习算法是一种常用的故障数据分类方法。

qq_59747472的博客 1045

新能源场站必看:一次调频与AGC/AVC的协同控制逻辑解析(含典型拓扑图)

本文深度解析了新能源场站中一次调频与AGC/AVC的协同控制逻辑。针对电网频率与电压稳定需求,详细阐述了三者在响应时序、控制目标上的分工与配合,并重点剖析了以RCL-0923装置为核心的指令融合架构与典型拓扑,为场站实现高效、稳定的协同运行提供了清晰的实践指导。

brown的博客 1062

手把手教你用THS4551搭建全差分放大器电路(附ADC驱动实战)

本文详细介绍了如何使用TI的THS4551全差分放大器搭建高性能ADC驱动电路,涵盖芯片选型、电路配置、PCB布局及实战调试等关键环节。THS4551凭借其优异的共模抑制比和宽电源电压范围,成为驱动16位及以上精度ADC的理想选择,特别适合工业应用场景。

weixin_30338481的博客 282

【24年新算法】 | WOA(海象)-XGboost分类基于海象优化算法(WOA)优化XGBoost的数据分类预测Matlab实现

本文提出了一种基于海象优化算法(WOA)优化集成学习算法的故障数据分类方法,即WOA-XGBOOST。该方法首先利用WOA算法优化XGBOOST算法的超参数,然后利用优化后的XGBOOST算法对故障数据进行分类。实验结果表明,WOA-XGBOOST方法能够有效提高故障数据分类的准确率和鲁棒性。故障数据分类是故障诊断中的一个重要环节。故障数据分类的目的是将故障数据划分为不同的类别,以便于故障诊断。故障数据分类的方法有很多,其中集成学习算法是一种常用的故障数据分类方法。

Matlab_dashi的博客 1382

国产FPGA逆袭!深度评测复旦微RFVU3P5G核心板在相控阵雷达中的表现

本文深度评测了复旦微RFVU3P5G核心板在相控阵雷达中的实战表现。该核心板凭借射频直采架构、高采样率ADC/DAC及丰富的DSP资源,在多通道同步精度、动态范围及系统稳定性等关键指标上表现出色,展现了国产FPGA在高端雷达应用中的硬核实力与供应链自主价值。

b0c1d2的博客 724

XGBoost算法梳理

XGBoost是boosting算法的其中一种。Boosting算法的思想是将许多弱分类器集成在一起形成一个强分类器。因为XGBoost是一种提升树模型,所以它是将许多树模型集成在一起,形成一个很强的分类器。而所用到的树模型则是CART回归树模型。讲解其原理前,先讲解一下CART回归树。 一、CART回归树 CART回归树是假设树为二叉树,通过不断将特征进行分裂。比如当前树结点是基于第j个特征值进...

herosunly的博客 1万+

2024届数字IC秋招-华为机试-数字芯片-笔试真题和答案(五)(含2022年和2023年)

此部分包含华为机试真题,方向是数字芯片,内容详细包括设计、验证、后端等,大部分题目给出参考答案。华为机试都是从题库里抽题目,所以这些题目还是很有参考性的,甚至是完全一样,可以搜到的。(题目内容较多,将分开编写几个文章)

qq_42135020的博客 2083

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

分类预测 | Matlab实现PSO-XGBoost粒子群算法优化XGBoost的多特征分类预测

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,代码获取、论文复现及科研仿真合作可私信。🍎个人主页:Matlab科研工作室🍊个人信条:格物致知。更多Matlab完整代码及仿真定制内容点击👇近年来,机器学习领域涌现出许多高效的算法,如 XGBoost,在多特征分类预测任务中表现出色。然而,XGBoost 算法自身的超参数调优过程往往需要耗费大量时间和精力,且调优结果难以保证最优。

qq_59747472的博客 1598

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Matlab实现PSO-XGBoost粒子群算法优化XGBoost的多特征分类预测

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,代码获取、论文复现及科研仿真合作可私信。🍎个人主页:Matlab科研工作室🍊个人信条:格物致知。更多Matlab完整代码及仿真定制内容点击👇近年来,机器学习领域涌现出许多高效的算法,如 XGBoost,在多特征分类预测任务中表现出色。然而,XGBoost 算法自身的超参数调优过程往往需要耗费大量时间和精力,且调优结果难以保证最优。

m0_57702748的博客 1132

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

分类预测 | GA-XGBoost遗传算法优化XGBoost的多特征分类预测Matlab实现

本文探讨了利用遗传算法(Genetic Algorithm, GA)优化XGBoost模型进行多特征分类预测的方法,并基于Matlab平台进行了详细的实现和结果分析。XGBoost作为一种高效的梯度提升算法,在分类任务中表现出色。然而,其超参数的寻优过程复杂且耗时。遗传算法作为一种全局优化算法,能够有效地搜索XGBoost模型的最佳超参数组合,从而提升模型的预测精度和泛化能力。

Matlab_dashi的博客 1499

分类预测 | Matlab实现SSA-XGBoost麻雀算法优化XGBoost的多特征分类预测

分类预测 | Matlab实现SSA-XGBoost麻雀算法优化XGBoost的多特征分类预测

机器学习之心的博客,关注并私信文章链接,获取对应文章源码和数据。 1787
上一篇: 【分类算法】LightGBM算法超详细讲解
下一篇: 【分类算法】多层感知机(MLP)分类器超详细讲解
「已注销」
博客等级 码龄1年 312粉丝 132原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

「已注销」

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值