如何获得更好的 AUC 分数?

数据挖掘 机器学习 深度学习 数据挖掘 预测建模 网格搜索
2022-02-21 15:59:26

我有一个数据集,其中包含 5K 条记录和 60 个专注于二进制分类的特征。班级比例为33:67

目前,我正在尝试提高我的模型的性能,该模型的 F1 分数为 89%(多数)和 75%(少数),AUC 为 80%。

我尝试了 Gridsearchcv 和特征工程。虽然我没有明确指出下面 Gridsearch 的最佳参数,但我想当我适合时,它只采用最佳参数。但似乎没有任何帮助。

这是否意味着我的数据有问题?当我的意思是问题时,我不是在谈论缺失值。我的意思是提取数据的方式。会不会是数据输入问题?

这就是我为 gridsearchcv 尝试的。我做对了吗?

import xgboost as xgb
parameters_xgb = {
    'learning_rate': (0.1,0.01,0.05,0.5,0.3,1),
    'n_estimators': (100,200,500,1000),
    'max_depth':(5,10,20),}
xg_clf = xgb.XGBClassifier()
xgb_clf_gv = GridSearchCV(xg_clf,parameters_xgb,cv=5)  # using cross validation with best hyperparameters
xgb_clf_op = xgb_clf_gv.fit(X_train_std,y_train)
y_pred = xgb_clf_op.predict(X_test_std)
cm = confusion_matrix(y_test, y_pred)
print(cm)
print("Accuracy is ", accuracy_score(y_test, y_pred))
print(classification_report(y_test, y_pred))

我也试过catboostgb在整个测试数据中,AUC 仅为 80-82% 左右。

2个回答

通过超参数优化提高性能

我不一定会称之为数据问题。总有一些阈值是你无法超越的,当然这取决于数据集。一般来说,特征工程和理解数据将产生比 hyp.par 更大的增长。优化,正如您从图片中看到的那样,通常会产生边际增加(在某些情况下,它比默认参数最差)

为什么80%是坏的?是否有优先级建议您期望更高?我有 60% 的想法可以回报数百万美元。也许不是一个完美的模型,但不能总是期望完美的分离。