最近用一批資料訓練模型

遇到訓練出來預測都是同一個標籤
但是ROC roc curve 還是很高的假象
參考一下網路上的說法:

### keras predict always output same value in multi-classification
https://stackoverflow.com/questions/41881220/keras-predict-always-output-same-value-in-multi-classification

 

### Getting all the same values in keras model.predict
https://stackoverflow.com/questions/51506957/getting-all-the-same-values-in-keras-model-predict

 

### Keras model always predicts same output class
https://github.com/keras-team/keras/issues/2975

 


發現我忘記資料前處理的重點
資料平衡
也就是標籤必須平衡
然後模型深度與參數量不能太高

然後 如果是分類模型 (注意多分類 與 雙分類)
在最後的激活層要有正確的激活函數
否則預測也容易失準

然後 train loss 是肯定要下降的
在 val loss 下降之前
要先注意 train loss 有沒有下降

資料也別忘記要正規化
資料也可以增加雜訊強化泛化能力


所以如果發現每一次預測訓練最後的結果都會偏向讓模型去猜同一個數值
通常都代表訓練的資料是有問題的
或者是根本沒有收斂
例如資料量太少

比較極端的例子是90%以上都是同標籤
最後模型都會認為只要猜同一個標籤就會命中率較高這種奇妙的情況

因此在資料平衡上要盡量做到標籤平衡
才不會造成模型預測的偏誤

給大家參考囉