期刊复现:通过交叉验证减少数据偏差XGBoost模型残差可视化

大模型机器学习算法

picture.image

✨ 欢迎关注Python机器学习AI ✨

本节介绍: 通过交叉验证减少数据偏差XGBoost模型残差可视化 。数据采用模拟数据,作者根据个人对机器学习的理解进行代码实现与图表输出,细节并不保证与原文一定相同,仅供参考。 详细数据和代码、文献将在稍后上传至交流群,付费成员可在交流群中获取下载。需要的朋友可关注公众文末提供的购买方式。 购买前请咨询,避免不必要的问题。

✨ 文献信息 ✨

picture.image

picture.image

文献中通过交叉验证方法对XGBoost模型进行了训练与测试,为了确保评估的可靠性,数据集被划分为四个子集,其中一个子集被用作测试集,其他三个用于训练集,并通过四轮交叉验证减少数据划分带来的偏差

在可视化部分,文献中的图表展示了基于不同训练集(图中的a-d部分)构建的XGBoost模型的残差图。每个子图显示了模型在预测值与残差之间的关系,其中:

  • 蓝色点表示训练数据的残差,红色圆圈表示测试数据的残差
  • 每个子图的标题标明了训练集和测试集的R²值,这反映了模型在不同数据集上的拟合效果

这些残差图有助于分析模型的表现,并验证模型在不同数据划分下的稳定性与泛化能力

实际上,图中的训练集和测试集只是交叉验证过程中划分出的不同数据子集。每次交叉验证时,整个数据集会被分为四个子集,每个子集都会轮流作为一次测试集(也叫k折交叉验证里面的验证集),而剩下的三个子集则作为训练集。因此,训练集和测试集的划分并不是一次性固定的,而是在每轮交叉验证中动态调整的。这种方式可以有效减少数据划分的偏差,确保模型能够在不同数据子集上进行训练和测试,从而提高评估结果的可靠性和泛化能力

✨ 模拟实现 ✨

picture.image

✨ 部分代码 ✨

  
import pandas as pd  
import numpy as np  
import matplotlib.pyplot as plt  
plt.rcParams['font.family'] = 'Times New Roman'  
plt.rcParams['axes.unicode_minus'] = False  
import warnings  
# 忽略所有警告  
warnings.filterwarnings("ignore")  
  
path = r"2025-5-14公众号Python机器学习AI.xlsx"  
df = pd.read_excel(path, index_col=0)  
from sklearn.model_selection import train_test_split  
# 划分特征和目标变量  
X = df.drop(['log_price', 'UTM_X', 'UTM_Y'], axis=1)    
y = df['log_price']    
  
# 划分训练集和测试集  
X_train, X_test, y_train, y_test = train_test_split(X,  y,  test_size=0.3,  random_state=42)  
import xgboost as xgb  
from sklearn.model_selection import GridSearchCV, KFold  
from sklearn.metrics import mean_squared_error, r2_score  
  
# 定义模型  
model = xgb.XGBRegressor(n_estimators=500,       # 设置迭代次数  
                         max_depth=6,            # 树的深度  
                         learning_rate=0.1,     # 学习率  
                         eval_metric='rmse',    # 使用RMSE作为评估指标  
                         verbose=False,         # 禁用输出  
                         random_state=1314      # 设置随机种子  
                        )  
  
# 定义参数网格  
param_grid = {  
    'learning_rate': [0.05, 0.1, 0.2],  
    'max_depth': [4, 6, 8],  
    'n_estimators': [100, 500, 1000]  
}  
  
# 设置4折交叉验证  
kf = KFold(n_splits=4, shuffle=True, random_state=1314)  
  
# 网格搜索与交叉验证  
grid_search = GridSearchCV(estimator=model,  
                           param_grid=param_grid,  
                           cv=kf,  
                           scoring='r2',  # 将评分标准修改为R^2  
                           verbose=1,  
                           n_jobs=-1)  
  
# 执行网格搜索  
grid_search.fit(X_train, y_train)  
  
# 输出最佳参数和得分  
print("Best parameters found: ", grid_search.best_params_)  
print("Best score (R^2) found: ", grid_search.best_score_)  
  
# 使用最佳参数训练最终模型  
best_model = grid_search.best_estimator_

picture.image

使用XGBoost回归模型,通过网格搜索和4折交叉验证来优化模型的超参数(学习率、树的深度和迭代次数),并选择最佳参数训练最终模型,优化目标是最大化R²评分

这里的K折交叉验证是通过KFold函数自动完成的,数据划分过程是由GridSearchCV内部处理的,因此无法直接看到具体的数据分割情况;若想提取每个折的数据划分,可以通过kf.split(X_train)来查看每次训练和测试集的具体分割,然后进行相关的结果输出即可,最后对各个数据集进行相应可视化

picture.image

从图中的残差图可以看到,四个K折交叉验证(kf1、kf2、kf3、kf4)在训练集和测试集上的表现。每个子图显示了对应折的训练集(蓝色点)和测试集(灰色点)的残差与预测值之间的关系,且每个子图的右上角标明了训练集和测试集的R²值

在这里,K折交叉验证结合网格搜索使用时,最后返回的最优参数是通过每一折的平均R²值来决定的,而不是单独在某一个数据分割上获得的最优参数。这个方法的目的在于评估模型的稳定性,而不是仅仅依赖于单一数据划分。通过在每一折上训练和测试,模型的性能可以在多个不同的数据子集上得到验证,从而确保模型具有更好的泛化能力。上面的可视化,也就是 各个测试集 R²的均值,等于直接采用 KFold函数返回的Best score (R^2) found值

最终的Best score (R²) found结果反映了所有折的平均成绩,而不仅仅是某一折的最优值,这有助于避免过拟合或偏倚,提升模型在不同数据集上的稳定性和可靠性。因此,K折交叉验证的应用旨在提高模型评估的准确性,使其能够在实际应用中表现得更加稳健

✨ 该文章案例 ✨

picture.image

在上传至交流群的文件中,像往期文章一样,将对案例进行逐步分析,确保读者能够达到最佳的学习效果。内容都经过详细解读,帮助读者深入理解模型的实现过程和数据分析步骤,从而最大化学习成果。

同时,结合提供的免费AI聚合网站进行学习,能够让读者在理论与实践之间实现融会贯通,更加全面地掌握核心概念。

✨ 购买介绍 ✨

本节介绍到此结束,有需要学习数据分析和Python机器学习相关的朋友欢迎到淘宝店铺:Python机器学习AI,或添加作者微信deep_ML联系,购买作者的公众号合集。截至目前为止,合集已包含近300多篇文章,购买合集的同时,还将提供免费稳定的AI大模型使用,包括但不限于ChatGPT、Deepseek、Claude等。

更新的内容包含数据、代码、注释和参考资料。 作者仅分享案例项目,不提供额外的答疑服务。项目中将提供详细的代码注释和丰富的解读,帮助您理解每个步骤 。 购买前请咨询,避免不必要的问题。

✨ 群友反馈 ✨

picture.image

✨ 淘宝店铺 ✨

picture.image

请大家打开淘宝扫描上方的二维码,进入店铺,获取更多Python机器学习和AI相关的内容,或者添加作者微信deep_ML联系 避免淘宝客服漏掉信息 ,希望能为您的学习之路提供帮助!

往期推荐

机器学习在临床数据分析中的应用:从数据预处理到Web应用实现的完整流程教学

期刊配图:基于SHAP算法的驱动因子相互作用贡献矩阵图

因果推断:利用EconML实现双重机器学习估计条件平均处理效应 (CATE)

期刊复现:基于部分线性模型的双重机器学习方法

期刊复现:基于XGBoost模型的网页工具SHAP力图解释单样本预测结果

期刊配图:nature cities通过ALE(累积局部效应)解析特征对模型影响

期刊复现:结合因果推断与SHAP可解释性的机器学习实现应用流程

期刊配图:一区SCI常用数据缺失率展示图可视化

因果推断:注册行为对后续消费影响的因果推断分析案例

nature communications:基于Light GBM与随机森林结合的多模型特征选择方法

因果推断与机器学习结合:探索酒店预订取消的影响因素

picture.image

如果你对类似于这样的文章感兴趣。

欢迎关注、点赞、转发~

个人观点,仅供参考

0
0
0
0
关于作者

文章

0

获赞

0

收藏

0

相关资源
CV 技术在视频创作中的应用
本次演讲将介绍在拍摄、编辑等场景,我们如何利用 AI 技术赋能创作者;以及基于这些场景,字节跳动积累的领先技术能力。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论