【问题标题】:How to plot ROC curve and compute AUC on AutoEncoder model? [duplicate]如何在 AutoEncoder 模型上绘制 ROC 曲线并计算 AUC? [复制]
【发布时间】:2020-01-03 08:26:18
【问题描述】:

我创建了一个自动编码器模型并使用图像序列数据集对其进行训练。测试集的最终结果是重建图像。如何绘制 ROC 曲线并计算 AUC?

编辑: 这是我的代码:

    model = AutoEncoder()
    model.compile(loss='mse', optimizer='adam')
    model.fit(dm, dm, 
          batch_size=batchSize, 
          epochs=epochs, 
          shuffle=False,
          callbacks=callbacks_list, verbose=1
          )

    # load testset
    ....
    reconstructed_sequences = model.predict(sequences,batch_size=1)
    sequences_reconstruction_cost = np.array([np.linalg.norm(np.subtract(sequences[i],reconstructed_sequences[i])) for i in range(0,sz)])
    sa = (sequences_reconstruction_cost - np.min(sequences_reconstruction_cost)) / np.max(sequences_reconstruction_cost)
    sr = 1.0 - sa

其中 sr 是包含我的检测分数的最终结果。

【问题讨论】:

  • 你能分享一些关于你到目前为止所做的示例代码,以便它会有所帮助
  • 我已经编辑了我的帖子并添加了示例代码。
  • ROC 和 AUC 是为二进制分类定义的,那么它与你的自动编码器有什么关系呢?
  • @MatiasValdenegro 我的工作是异常检测,它检测帧中的异常或正常事件。 sr分数决定帧是异常还是正常。我审查的大部分工作都会计算 AUC 以与另一项工作进行比较。
  • 这个已经回答过了,看重复的回答,y_score是你的sr

标签: keras tensorflow2.0 autoencoder tf.keras


【解决方案1】:

您需要运行从 min(sr) 到 max(sr) 的阈值范围,并为每个值计数四倍(真阴性 (TN)、真阳性 (TP)、假阴性 (FN)、假阳性 ( FP)) 来获得许多列联表。然后计算每个阈值的灵敏度 = TP / (TP + FN) 和特异性 = TN / (FP + TN)。受试者工作特征 (ROC) 曲线是 1-特异性(X 轴)与灵敏度(Y 轴)的关系图。在 python 中编码应该不会太难。

【讨论】:

    猜你喜欢
    • 2019-04-11
    • 2014-04-20
    • 2015-11-24
    • 2012-07-29
    • 2016-09-11
    • 2020-05-05
    • 2021-03-01
    • 2018-10-08
    • 2012-11-30
    相关资源
    最近更新 更多