混淆矩陣 與 真陽TP、真陰TN、偽陽FP、偽陰FN
光看到這個標題似乎就有點令人混淆
究竟這個混淆矩陣(Confusion Matrix)想要表達的是什麼呢?
這其實就可用在人工智慧領域中的分類預測(Classification)
來看預測的準確度
咦?可是要預測不就是準跟不準嗎?
但其實還是可以細分──
舉例來說:
想看氣象預測說「整週天氣會不會下雨」
可能有個預測系統告訴你週一到週日是「會、不會、不會、會、不會、會、不會」
而實際上下雨情況是「下、沒下、下、下、下、沒下、沒下」
所以會有幾種情況:
‧預測會下,實際上也真的下了 → 準
‧預測不會下,實際上也真的沒下 → 準
‧預測會下,實際上卻沒下 → 不準
‧預測不會下,實際上卻下了 → 不準
那這一週七天的預測就可整理如下:
預測 | 實際 | 準確 | 預測結果分類 | ||||
一 | 會 | Positive | 下 | Positive | 準 | True | True Positive |
二 | 不會 | Negative | 沒下 | Negative | 準 | True | True Negative |
三 | 不會 | Negative | 下 | Positive | 不準 | False | False Negative |
四 | 會 | Positive | 下 | Positive | 準 | True | True Positive |
五 | 不會 | Negative | 下 | Positive | 不準 | False | False Negative |
六 | 會 | Positive | 沒下 | Negative | 不準 | False | False Positive |
日 | 不會 | Negative | 沒下 | Negative | 準 | True | True Negative |
預測結果就是看系統預測是陽(有下)還是陰(沒下)、以及預測結果是不是真的(真True/偽False)
來看是哪一種情形
所以會有:
‧真陽(True Positive, TP):預測為Positive且預測準確True,例如預測有下雨且真的下了
‧真陰(True Negative, TN):預測為Negative且預測準確True,例如預測不會下雨且真的沒下
‧偽陽(Flase Positive, FP):預測為Positive但預測錯False,例如預測有下雨不過實際上沒下
‧偽陰(Flase Negative, FN):預測為Negative但預測錯False,例如預測不會下雨不過實際下雨了
那這個預測系統的成效如何
我們來把他放進混淆矩陣看看
預測 | |||
會下Positive | 不會下Negative | ||
實際 | 有下Positive | TP=2次 (28.57%) | FN=2次 (28.57%) |
沒下Negative | FP=1次 (14.29%) | TN=2次 (28.57%) |
雖然說預測錯的比例近30%
但是重點就在於是哪種錯「比較不希望發生」
(這邊有沒有感覺很像統計裡面的 型I 誤差 和 型II 誤差)
以預測下雨的例子來說
如果天氣預測說會下雨
我們可能就會準備一下雨傘
就算沒下雨也頂多只是多帶了傘無傷大雅
但是如果天氣預報說不會下雨
沒想到竟然下了
那沒帶傘的話就準備淋雨很不方便
所以我們不希望發生的就是這種「預測不會下、實際卻下雨」的情況
也就是FN
在這個預測系統中這週的FN高達近30%
其實好像蠻不準的 (雖說才預測七天是會看起來比較誇張)
問題:那有沒有反過來
FP是比較不希望發生、而FN比較無關痛癢的呢?
舉個例子:
「要不要針對用戶進行促銷活動」
今天公司手上有一堆過去客戶的資料
然後公司的部門就引進某一套Data Mining系統
把一些客戶的年齡、居住地、過去消費、性別等全部丟進這套系統裡跑
然後推測出要寄DM跟樣品進行促銷活動、與不用促銷的兩群客戶
公司就針對要促銷的客戶投入了促銷的成本
不用促銷的就先不進行動作
最後結果是這樣:
預測 | |||
要促銷 Positive | 不用促銷 Negative | ||
實際 | 有來消費 Positive | TP=210 | FN=57 |
沒來消費 Negative | FP=42 | TN=141 |
有促銷活動,後來也有來消費的是210人
這些人可以看看是否真的都因促銷活動而來
(比方讓門市小姐問說是不是因為促銷活動)
至於沒有促銷,但也有來店消費的有57人
或許可能有些是老客戶定期都會來
那可能不用寄促銷樣品的方式
(不過當然對老客戶要有別套方法來留住他們,不過就不在此情境下多說了)
沒有促銷、也沒有來消費的
這塊算是未定數
可能還有別的方法來吸引他們
但最不希望發生的仍然是FP那塊
今天已經花錢寄DM、寄樣品過去了
結果也還是沒來消費
那這可能就是沒有達到宣傳效果
這些宣傳成本是浪費掉的 (甚至可能扣分)
而且那42個人就佔了宣傳成本中的16.7%以上!(42/252)
所以才希望避免
再講其他例子:
這次是跟學習分析有關
「在學生期中考之前就先預測誰成績有危機」
通常在做一些像線上學習系統時
學生參與討論區程度、每週看課程影片的時間、每週習題答題情況
這些資料系統上多會儲存起來
老師就可以利用這些資訊來做Data Mining
假設今天老師用人工智慧來跑出一組預測的規則
告訴老師說學生有哪些情況就要注意
比方:若一個學生討論區留言低於5篇、影片看完率低於80%、作業答題分數低於平均,則要注意其學習情況
這樣的規則預測出有13+10=23名學生可能有危機
後來期中考成績出來
果然還是有一些學生考爆了
預測 | |||
學習情況要注意 Positive | 學習情況ok Negative | ||
實際 | 期中考爆掉 Positive | TP=18 | FN=7 |
期中考ok Negative | FP=10 | TN=45 |
那這個系統我們希望怎麼應用?
先看看它預測的準度如何
TP那18個是準確抓出來的
只要學生留言低於5篇、影片看完率低於80%、作業答題分數低於平均
那就真的要去注意
因為裡面有64.29%是真的期中會爆掉 (18/28)
至於FP那10個雖然系統預測說有危機
不過考出來沒有爆掉
那倒也沒關係
老師當然還是可以去關心一下
鼓勵學生多參與
所以FP雖然預測是錯的不過倒也還是可以幫助老師多注意特定學生
而系統預測學習情況OK、期中考也真的OK的
那就還好不用太擔心
最需要注意的在於FN那7個同學
他們並沒有被預測出來說期中會爆掉
那究竟是什麼原因沒被抓出來
有什麼其他判斷變項可以幫助這個預測系統呢?
以及有什麼其他原因老師可以多去關心呢?
這都是學習分析之後
實際上相當重要的下一步
舉最後一個例子:
這是之前恩師吳智鴻老師教我們寫的論文
投稿CIEF研討會
「預測延遲性診斷系統」
什麼是延遲性診斷(delayed diagnosis)?
就是醫生判定說病患沒問題、可以出院
沒想到出院後才發病的情況
像是內出血在急診室中沒有被判斷出來
或是腦震盪等等
通常在地方遇到重大事故時
急診室是忙到翻的情況
許多檢傷必須在第一時間做好蒐集動作
比方脈搏、血壓、意識、檢傷級數等等
如果有個預測系統能先用這些資訊
偵測病人是否有可能發生延遲診斷
相信可以幫助急診室在因應大量傷患時能夠注意
不讓那些「看似可以先出院的病患」在離開之後忽然情況惡化
而要想辦法讓他們先留院待觀察
預測 | |||
延遲性診斷 Positive | 無延遲性診斷 ok Negative | ||
實際 | 延遲性診斷 Positive | TP=25 | FN=5 |
無延遲性診斷 Negative | FP=40 | TN=110 |
當然就像剛剛學習診斷的類似
TP與TN是準確預測的
重點就在於FN是我們最不希望發生的
除了病人的性命受到威脅
就醫院的職責來考量的話
其責任歸屬也會比較麻煩
所以在這種系統上
都會盡量讓系統的FN壓得越低越好
但FP仍然也不希望太高
雖然說預測出可能有延遲診斷而需要留院
只是如同這情境中設定是重大事故發生
例如說地震、火災等等
往往急診室是沒有辦法容納那麼多人
對於那些在現場等候的病患與家屬也可能會火氣大而衝突
因此雖然FP的嚴重性不比FN
但也還是不希望太高
以上大概是Confusion Matrix的簡單介紹那大家可能會問說
除了2x2之外
有沒有3x3?
當然也可以
它的解讀也就會更複雜一些
端看你想要知道它預測的效率著重在哪一塊
再看怎麼設定會比較合理