Achieving low average tested error isn't good enough for a project.
昨天談到大部分機器學習專案在產品化前都必須達成三個里程碑,而即使在測試集取得了很好的表現,要達成商業指標這最後一個里程碑時可能還會遇到一些困難,今天就來看看這些程咬金是什麼吧。
現實情況中,不是每個樣本都一樣重要,如果 ML 系統在少數重要程度高到不成比例的樣本表現很差,即使它的平均測試誤差很低,作為產品也是沒有價值的。
以我們每天都在使用的搜尋引擎為例:
其中:
對於前兩類查詢只回傳最相關的搜尋結果是可以忍受的,而對於導航性查詢,因為使用者的意圖非常明確,所以沒有回傳正確的結果就會造成使用者對產品失去信心。
可以想像如果我搜尋 Navigational queries 的三個網站時,回傳的第一個連結都不是那些網站,我應該就不會再使用這個搜尋引擎了。
僅僅三次錯誤就讓使用者放棄使用,這就是它們不成比例的重要性!
有些特徵並不能作為判定的標準,否則會使 ML 系統帶有歧視性,這類特徵就稱為 Protected attributes,而帶有這些特徵的樣本就是 關鍵子集。
例如在文章 醫學院用AI面試,竟刷掉數百位優秀女性與少數族裔⋯⋯科技為什麼也會偏心? 提到倫敦的聖喬治醫學院(St. George’s Hospital Medical School)使用電腦程式初步篩選申請者時,偏頗地拒絕了數百名學業成績足以進入面試階段的女性和少數族群,此時"性別"這個特徵就屬於 Pretected attributes,而帶有"女性"這個特徵的樣本就屬於關鍵子集。
或以貸款審核為例,就算平均測試準確度很高,若系統會以種族來判定是否通過貸款,作為產品,是絕對不可以被接受的!!
總的來說,為了保障系統的公正性,必須確保它在某些關鍵子集表現良好。
在分佈高度不均勻的資料中,直接忽略罕見類別或對它們的準確度較低也是不能接受的,特別是在缺陷檢測或醫療的應用上更是如此。
另外要注意,當資料集的分佈極度不均勻時 (Skewed datasets) 準確度無法反映模型的真實表現,常見的解法如下:
改為檢視混淆矩陣,計算 Precision & Recall:
基本的想法是看看 class A 被分成了 class B 的總次數,矩陣的每一行代表 actual class,每一列則是 predicted class,最完美的矩陣就是只有對角線有值,false positive 跟 false negative 皆為 0。
計算 F1 score:
計算 Precision 跟 Recall 的調和平均數 (Harmonic mean),不像一般平均值把每個值都視為一樣重要,harmonic mean 會給小的值更高的權重,也就是說 F1 score 要高的話代表 Precision 和 Recall 同時都要很高。
所有指標的定義請見下圖:
*圖片來源:YC Chen — 如何辨別機器學習模型的好壞?秒懂Confusion Matrix
這兩個方法不僅限於二元分類,也適用於有多個類別的情況,例如瑕疵檢測時,全部的瑕疵加起來可能資料量還是很少。
以上就是今天的內容,知道一個良好的機器學習產品該達到甚麼標準之後,明天就讓我們來談談啟動 ML 產品專案的小訣竅以及最重要的第一步該怎麼踏出去吧。