混淆矩陣 Confusion Matrix
每次考完每次忘,讀你千變也不厭
最近用在machine learning上似乎又有點不同的感覺
幫自己做個小整理,以後比較好回想
混淆矩陣表示方式分成四大塊 :
- True Positive 真陽性 : 實際上是正樣本且被預測為正樣本
- True Negative 真陰性 : 實際上是負樣本且被預測為負樣本
- False Positive 假陽性 : 實際上是負樣本但被錯誤預測為正樣本
- False Negative 假陰性 : 實際上是正樣本但被錯誤預測為負樣本
利用上述四個又可以產生新的幾個數值:
- Accuracy = (TP+TN) / Total => 準確度
- 最常用的判斷值,可以衡量整體而言的正確分類率是多少
- 但如果True Positive發生率太小時,accurarcy不適用,會幾乎等於TN/Total,如下圖
- source: Edward Tung
- 這也是為甚麼我們說不要透過準確率來判斷模型好壞的原因,上面的結果準確率達到驚人的 47700 / (47700+398) = 99.2% ,乍看之下似乎不錯,然而如上圖所示,正樣本的正確分類率是 0%,意味著模型根本沒辦法辨別出正樣本的存在
- Precision = TP / ( TP + FP) => 精確度
- 在預測True的情形下,實際的「精確度」是多少
- Recall = TP / ( TP + FN ) => 召回率
- 在實際True的狀況下,預測「能召回多少」實際正向的答案
- 當我們用sklearn.metrics時,通常會有兩列,如下圖
- 第一二列的的index : 0通常代表沒發生,1代表發生
- 所以如果以1為發生時,這邊的recall 為0.57時,這個0.57為sensitivity, 而上面的0.82為specificity
- 所以如果以0為發生時,這邊的recall 為0.82時表示為sensitivity, 而下面的0.57為specificity
- 這個例子只看accuracy似乎很好,但是sensitivity和sepcificity差太多,所以最好要從新調整
- F1 score = 2 / {(1/Precision) + (1/Recall)}
- 如果今天我覺得Precision和Recall都同等重要(權重一樣),我想要用一個指標來統合標誌它,這就是F1 Score或稱F1 Measure,它是F Measure的一個特例,當belta=1時就是F1 Measure,代表Precision和Recall都同等重要
- 那如果我希望多看中一點Precision,那belta就可以選擇小一點,當belta=0時,F Measure就是Precision
- 如果我希望多看中一點Recall,那belta就可以選擇大一點,當belta無限大時,F Measure就是Recall
Reference:
留言
張貼留言