我正在使用 XGBoost 训练 BDT 对 22 个特征进行二元分类。我有 1800 万个样本。(60%用于训练,40%用于测试)
我在训练期间得到的 ROC AUC 与我得到的最终结果不符,我不明白这是怎么回事。此外,ROC AUC 显示出比任何其他指标更多的过度训练,并且它似乎在测试数据上有最大值。
有没有人以前遇到过类似的问题,或者知道我的模型出了什么问题,或者我如何找出问题所在?
我的代码的本质:
params = {
"model_params": {
"n_estimators": 2000,
"max_depth": 4,
"learning_rate": 0.1,
"scale_pos_weight": 11.986832275943744,
"objective": "binary:logistic",
"tree_method": "hist"
},
"train_params": {
"eval_metric": [
"logloss",
"error",
"auc",
"aucpr",
"map"
]
}
}
model = xgb.XGBClassifier(**params["model_params"], use_label_encoder=False)
model.fit(X_train, y_train,
eval_set=[(X_train, y_train), (X_test, y_test)],
**params["train_params"])
train_history = model.evals_result()
...
plt.plot(iterations, train_history["validation_0"]["auc"], label="training data")
plt.plot(iterations, train_history["validation_1"]["auc"], label="test data")
...
y_pred_proba_train = model.predict_proba(X_train)
y_pred_proba_test = model.predict_proba(X_test)
fpr_test, tpr_test, _ …Run Code Online (Sandbox Code Playgroud) 假设我想删除一个数字的最后一位数字n。为此,我使用代码int(n/10)。
遗憾的是,这对于大量数据给出了错误的结果。例如n = 4474630975855204960除以10给出447463097585520512。
这种行为的原因是什么?我该如何修复它?