首页 > 解决方案 > Precision-Recall 曲线与 ROC 曲线:我是否仍应通过 SMOTE 将 PR 曲线应用于已经平衡的信息?

问题描述

我在随机森林中为不平衡的二元分类问题构建了 3 个不同的模型。(0 - 369, 1- 1750)

第一个是随机森林(基线),它在 trainX 和 trainY 上使用 rf1 拟合

第二个是随机森林(平衡),它使用 rf2 配置在 trainX 和 trainY 上的 class_weight = 'balanced' 拟合。

第三个是随机森林 (SMOTE),它在 trainX_smote 和 trainY_smote 上使用 rf1 拟合。

我知道在正常实践中,PR 曲线下的面积应该用于不平衡的数据集。但是,我不太确定是否需要在第 2 和第 3 种情况下再次使用 PR 曲线或 ROC 曲线下的面积。

即使我使用参数或 SMOTE 过程对“平衡”数据集进行排序,我是否仍应将 PR 曲线下的面积应用于第 2 和第 3 种情况?我知道 ROC AUC 无法与 PR AUC 相提并论,但我的理解是您仅将 PR AUC 用于不平衡数据,所以我进退两难。

我的目标是显示过采样 SMOTE 或在 class_weight = 'balanced' 中配置参数是否会提高预测能力。

请让我知道我应该将哪一个用于已经平衡的数据集以及为什么。谢谢!

trainX, testX, trainY, testY = train_test_split(x,y,test_size=0.20, random_state=2019)

# First 2 models

# baseline model using imbalanced data
rf1 = RandomForestClassifier(n_estimators=2500, max_depth=4)

# balanced model using class_weight = 'balanced'
rf2 = RandomForestClassifier(n_estimators=2500, class_weight = 'balanced', max_depth=4)

# SMOTE
smote = SMOTE(random_state=42)
trainX_smote, trainY_smote = smote.fit_sample(trainX, trainY)

trainX_smote = pd.DataFrame(data = trainX_smote, columns=trainX.columns)

# 3rd model will use rf1 on SMOTEd trainX and trainY and then .fit and will test on original testX.

标签: pythonmachine-learningstatisticsrandom-forestprecision-recall

解决方案


推荐阅读