閱讀時間約 2 分鐘

892 字

PTT DataScience 版看到有人發文:ROC worse than random。我也在版上回覆了我的回答。不過還是在這邊重新整理一下。

他的問題是,訓練了一個直腸癌 MRI 影像辨識的模型,一萬筆資料做 5-fold cross validation,每一組的 validation AUC 都小於 0.5,成效比亂猜還要差。

查了網路文章,有人說這代表我的classifier依然建立了correlation
只是data preparation出問題
簡單解法就把label flip即可
請問真的是這樣嗎?總覺得不大對勁

私以為對於一個表現比隨機差的模型直接把預測值反過來是一件很危險的事情,那麼該怎麼做呢?

第一步,應該要先確認程式碼是沒有任何錯誤的。可能正好預測值因為某個 bug 反過來了,就會看到這個現象。確認程式碼無誤以後,可以分兩種情況來討論:

狀況一:train AUC ≤ 0.5 且 test AUC < 0.5

如果 train AUC < 0.5 表示模型沒有學好,最好檢查一下模型架構或是參數或是圖片本身還是數值範圍有沒有什麼問題。

狀況二:train AUC > 0.5 且 test AUC < 0.5

train AUC > 0.5 表示模型有學到一些東西,在模型訓練上一切正常,沒有太大的問題。在這種情況下 test AUC 小於 0.5,表示在現在的 feature space 下,train 跟 test 的分佈顯然是不同的,直接把預測值反過來是很危險的一件事情。

這邊不太精確地打個比方,想像一個情況:

如果今天是做貓狗分類器,在訓練的時候發現有吐舌頭的都是狗,沒吐舌頭的都是貓。模型分得很好,所以 train ROC > 0.5。test 的時候卻發現貓都有吐舌頭,所以全部分錯了,導致 test ROC < 0.5。那麼直接把預測值反過來很顯然是不合理的解法,他只對這個 test set 有用,並不是對所有的貓狗有用。在這個情況應該是去檢查為什麼模型會只把吐舌頭當作決定性的特徵然後針對它做修正。

直腸癌的 MRI 影像分類

不過回到原本問題敘述的情境,他先用 DCGAN 做 data augmentation,我認為應該先檢查一下 DCGAN 生出來的影像是否符合預期,因為那邊出狀況的機率比較大。確認正確後可以再檢查一下是因為圖片的哪個區塊被分錯類別。

如果我來做的話,在資料不足的情況下,我會先用旋轉縮放之類的方式先做 data augmentation (前提是如果直腸癌 MRI 旋轉縮放後不會讓影像變成另一個類別),接著想辦法找人標更多資料。要寫論文的時候才會考慮用 generative model。

comments powered by Disqus

最新文章

分類

標籤