Python 为什么在相同数据和相同算法上评估时会产生两个不同的AUC分数

Python 为什么在相同数据和相同算法上评估时会产生两个不同的AUC分数,python,xgboost,auc,Python,Xgboost,Auc,我正在研究一个分类问题,其评估指标为ROC AUC。到目前为止,我已经尝试使用不同参数的xgb。这是我用来采样数据的函数。你可以找到相关的笔记本 下面是我在运行洗牌和非洗牌数据后得到的两个输出 AUC with shuffling: 0.9021756235738453 AUC without shuffling: 0.8025162142685565 你能找出这里的问题吗?问题是,在你的洗牌实现中-np.random.randint生成随机数,但它们可以重复,因此你的训练和测试+有效集中

我正在研究一个分类问题,其评估指标为ROC AUC。到目前为止,我已经尝试使用不同参数的xgb。这是我用来采样数据的函数。你可以找到相关的笔记本

下面是我在运行洗牌和非洗牌数据后得到的两个输出

AUC with shuffling:  0.9021756235738453
AUC without shuffling:  0.8025162142685565

你能找出这里的问题吗?

问题是,在你的洗牌实现中-
np.random.randint
生成随机数,但它们可以重复,因此你的训练和测试+有效集中出现了相同的事件。您应该使用<代码> NP.No.Que> < /C> >(并考虑使用<代码> NP.No.Cys<代码>以确保结果的可重复性。

另一个注意事项-在训练集和验证/测试集之间的性能有很大的差异(训练显示出几乎完美的ROC AUC)。我猜,这是由于树的最大深度(14)太高,而您手头的数据集(约60K)的大小又太大


另外,感谢分享协作链接-我不知道,但它非常有用。

可能不太合适吧?因此,准确度取决于随机因素(如训练程序中的评估顺序)而不是预测参数。似乎这可能是原因,我需要对此进行研究。在使用排列方式创建随机数据后,我添加了一些检查,但两种AUC仍有很大差异。虽然你的回答被接受了。如果您有其他信息,请在笔记本中更新。
AUC with shuffling:  0.9021756235738453
AUC without shuffling:  0.8025162142685565