问题:
tf.keras.metrics.AUC和sklearn.metrics.auc计算结果差别较大,如果用这样一个不准确的auc设置earlystop,可能会影响模型效果
经过一天的调研,差别原因如下:
sklearn.metrics.auc只会计算label=1的auc,而tf.keras.metrics.AUC在多分类情况下,会将每一类的输出flattened,视作一列计算(每个样本对于每一类的数据均会被视为一个点),在样本不均衡的情况下,会得到较高的AUC
解决方法:
auc = tf.keras.metrics.AUC(name='auc',num_thresholds=498
,multi_label=True,label_weights=[0,1])
num_thresholds:切分阈值的数量,sklearn中默认为498,Keras中默认为200
multi_label:默认False,True为对每一类输出结果计算AUC,并求平均
label_weights:在multi_label=True的情况下,在AUC平均时给每一类结果设置权重