簡體   English   中英

確定深度學習的最佳分類閾值 model

[英]Determine the best classification threshold value for deep learning model

如何確定深度學習的最佳閾值 model。 我正在使用 CNN 預測癲癇發作。 我想確定我的深度學習 model 的最佳閾值,以獲得最佳結果。

我正在嘗試超過 2 周的時間來尋找如何做到這一點。

任何幫助,將不勝感激。

代碼

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])

通常,選擇正確的分類閾值取決於用例。 您應該記住,選擇閾值不是超參數調整的一部分。 分類閾值的值會極大地影響 model 訓練的行為。

如果你增加它,你希望你的 model 對預測非常有把握,這意味着你將過濾掉誤報 - 你將瞄准精度 當您的 model 是關鍵任務管道的一部分時,可能會出現這種情況,其中基於 model 的正 output 做出的決策是昂貴的(在人力、時間、計算資源等方面),

如果你減少它,你的 model 會說更多的例子是積極的,這將允許你探索更多可能是積極的例子(你的目標是召回。當假陰性是災難性的,例如在醫療案例中,這很重要(你寧願檢查是否低概率患者得了癌症,而不是忽視他,后來發現他確實病了)

有關更多示例,請參閱精度何時比召回更重要?

現在,在召回率和精度之間進行選擇是一種權衡,您必須根據自己的情況進行選擇。 有兩個工具可以幫助您實現這一目標

許多 ML 算法能夠預測 class 成員資格的分數,在將其繪制到 class label 之前需要對其進行解釋。 您可以通過使用閾值(例如 0.5)來實現此目的,其中大於閾值的值將映射到一個 class,而 rest 映射到另一個 class。

Class 1 =預測 < 0.5 Class 0 =預測 => 0.5

為您遇到的問題找到最佳閾值至關重要,而不僅僅是假設分類閾值,例如 0.5;

為什么? 對於具有嚴重 class 不平衡的分類問題,默認閾值通常會導致性能非常差。

請參閱, ML 閾值是針對特定問題的,必須進行微調 在此處閱讀有關它的簡短文章

為了獲得最佳結果,確定深度學習 model 的最佳閾值的最佳方法之一是將用於 map 概率的閾值調整為 class。

CNN 的最佳閾值可以直接使用 ROC Curves 和 Precision-Recall Curves 計算。 在某些情況下,您可以使用網格搜索來微調閾值並找到最佳值。

下面的代碼將幫助您檢查將提供最佳結果的選項。 GitHub 鏈接

from deepchecks.checks.performance import PerformanceReport
check = PerformanceReport()
check.run(ds, clf)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM