与非嵌套结果相比,如何评估嵌套交叉验证结果?

数据挖掘 机器学习 scikit-学习 回归 xgboost 交叉验证
2022-02-23 15:22:42

我有一个非线性回归模型,从 0 到 1 对基因进行评分,以确定它们是否可能导致疾病。训练数据是 53 个特征的约 700 个基因样本。

目前我使用 xgboost 得到的结果如下:

r2 Nested CV Average: 0.807
MSE Nested CV Average: -0.016

Non-nested Results:
XGBR Train r2: 0.949 Test r2: 0.805
XGBR Train MSE: 0.002 Test MSE: 0.018
r2: 0.895
Predicted r2: 0.871

我应该担心非嵌套训练结果与测试结果相比是否过拟合,还是应该只依靠我的 5 倍嵌套交叉验证来确定过拟合被最小化?

作为参考,我使用的 XGBoost 模型调整如下:

xgbr = xgboost.XGBRegressor(random_state=seed, objective='reg:squarederror') 
xgbr_params = {
    'max_depth': (1, 10),
    'learning_rate': (0.01, 0.5), 
    'n_estimators': (20, 50), 
    'reg_alpha': (1, 10),
    'reg_lambda': (1, 10),
    'gamma': (0, 0.5), 
    'min_child_weight': (1, 5),
    'subsample': (0.1, 1),
    'colsample_bytree': (0.1, 1)}

#Best parameter output:
xgbr = xgboost.XGBRegressor(random_state=seed, subsample=0.8258568992489053, min_child_weight=1, 
n_estimators=50, gamma=0.0, objective='reg:squarederror', colsample_bytree=1.0, 
learning_rate= 0.3987519903467713, max_depth=4, reg_alpha=1, reg_lambda=10) 

1个回答

这不是回归问题。因此,这些结果无法解释。

它应该被构建为概率二元分类。目标是二元的,因为有两种结果——疾病与否。概率,因为它的范围从 0(不可能)到 1(完全确定)。