Python 确定深度学习模型的最佳分类阈值

Python 确定深度学习模型的最佳分类阈值,python,deep-learning,conv-neural-network,threshold,image-thresholding,Python,Deep Learning,Conv Neural Network,Threshold,Image Thresholding,如何确定深度学习模型的最佳阈值。我正在利用CNN预测癫痫发作。我想为我的深度学习模型确定最佳阈值,以获得最佳结果 我花了两个多星期的时间试图找到我能做到这一点的方法 任何帮助都将不胜感激 代码 history=model.fit_generator(generate_arrays_for_training(indexPat, filesPath, end=75), #end=75), validation_data=generate

如何确定深度学习模型的最佳阈值。我正在利用CNN预测癫痫发作。我想为我的深度学习模型确定最佳阈值,以获得最佳结果

我花了两个多星期的时间试图找到我能做到这一点的方法

任何帮助都将不胜感激

代码

history=model.fit_generator(generate_arrays_for_training(indexPat, filesPath, end=75), #end=75),
                                validation_data=generate_arrays_for_training(indexPat, filesPath, start=75),#start=75),
                                steps_per_epoch=int((len(filesPath)-int(len(filesPath)/100*25))),#*25), 
                                validation_steps=int((len(filesPath)-int(len(filesPath)/100*75))),#*75),
                                verbose=2,
                                epochs=50, max_queue_size=2, shuffle=True, callbacks=[callback,call])

通常,选择正确的分类阈值取决于用例。您应该记住,选择阈值不是超参数优化的一部分。分类阈值的值极大地影响了训练后模型的行为

如果你增加它,你希望你的模型对预测非常确定,这意味着你将过滤掉误报-你将瞄准精度。当您的模型是任务关键型管道的一部分时,可能会出现这种情况,在这种情况下,基于模型的正输出做出的决策成本很高(在资金、时间、人力资源、计算资源等方面)

如果你减少它,你的模型会说更多的例子是阳性的,这将允许你探索更多可能是阳性的例子(你的目标是回忆。当假阴性是灾难性的,例如在医疗案例中,这一点很重要(您宁愿检查低概率患者是否患有癌症,也不愿忽视他,然后发现他确实生病了)

有关更多示例,请参见


现在,在查全率和查准率之间进行选择是一种权衡,你必须根据自己的情况进行选择。有两种工具可以帮助你实现这一点:ROC和查全率曲线,它指示模型如何根据分类阈值处理误报和漏报

什么阈值?@Proko分类阈值或decision threshold例如,高于该阈值的值表示“垃圾邮件”;低于该阈值的值表示“非垃圾邮件”