原文鏈接:https://developers.google.com/machine-learning/crash-course/classification/
1- 指定閾值
為了將邏輯回歸值映射到二元類別,必須指定分類閾值(也稱為判定閾值)。
如果值高於該閾值,則表示“1”;如果值低於該閾值,則表示“0”。
人們往往會認為分類閾值應始終為 0.5,但閾值取決於具體問題,因此必須對其進行調整。
2- 真與假、正類別與負類別
- 真正例是指模型將正類別樣本正確地預測為正類別。
- 假正例是指模型將負類別樣本錯誤地預測為正類別。
- 真負例是指模型將負類別樣本正確地預測為負類別。
- 假負例是指模型將正類別樣本錯誤地預測為負類別。
3- 准確率
准確率是一個用於評估分類模型的指標。
通俗來說,准確率是指我們的模型預測正確的結果所占的比例。
對於二元分類,也可以根據正類別和負類別按如下方式計算准確率(TP=真正例,TN=真負例,FP=假正例,FN=假負例):
$\text{Accuracy} = \frac{TP+TN}{TP+TN+FP+FN}$
當使用分類不平衡的數據集(比如正類別標簽和負類別標簽的數量之間存在明顯差異)時,單單准確率一項並不能反映全面情況。
4- 精確率和召回率
精確率
在被識別為正類別的樣本中,確實為正類別的比例是多少?
定義:$\text{Precision} = \frac{TP}{TP+FP}$
注意:如果模型的預測結果中沒有假正例,則模型的精確率為 1.0。
召回率
在所有正類別樣本中,被正確識別為正類別的比例是多少?
定義:$\text{召回率} = \frac{TP}{TP+FN}$
注意:如果模型的預測結果中沒有假負例,則模型的召回率為 1.0。
精確率和召回率:一場拔河比賽
要全面評估模型的有效性,必須同時檢查精確率和召回率。
遺憾的是,精確率和召回率往往是此消彼長的情況。也就是說,提高精確率通常會降低召回率值,反之亦然。
一般來說,在邏輯回歸模型中
- 提高分類閾值。假正例數量會減少,但假負例數量會相應地增加。精確率有所提高,而召回率則有所降低
- 降低分類閾值。假正例數量會增加,而假負例數量會減少。精確率有所降低,而召回率則有所提高
5- ROC和曲線下面積
ROC曲線
ROC曲線(接收者操作特征曲線)是一種顯示分類模型在所有分類閾值下的效果的圖表。
該曲線繪制了以下兩個參數:真正例率、假正例率。
- 真正例率 (TPR) 是召回率的同義詞,定義:$TPR = \frac{TP} {TP + FN}$
- 假正例率 (FPR) 的定義:$FPR = \frac{FP} {FP + TN}$
ROC 曲線用於繪制采用不同分類閾值時的 TPR 與 FPR。降低分類閾值會導致將更多樣本歸為正類別,從而增加假正例和真正例的個數。
曲線下面積:ROC 曲線下面積
曲線下面積表示“ROC 曲線下面積”。也就是說,曲線下面積測量的是從 (0,0) 到 (1,1) 之間整個 ROC 曲線以下的整個二維面積。
曲線下面積對所有可能的分類閾值的效果進行綜合衡量。
曲線下面積的一種解讀方式是看作模型將某個隨機正類別樣本排列在某個隨機負類別樣本之上的概率。
曲線下面積的取值范圍為 0-1。預測結果 100% 錯誤的模型的曲線下面積為 0.0;而預測結果 100% 正確的模型的曲線下面積為 1.0。
曲線下面積比較實用的原因:
- 曲線下面積的尺度不變。它測量預測的排名情況,而不是測量其絕對值。
- 曲線下面積的分類閾值不變。它測量模型預測的質量,而不考慮所選的分類閾值。
不過,這兩個原因都有各自的局限性,這可能會導致曲線下面積在某些用例中不太實用:
並非總是希望尺度不變。
例如,有時我們非常需要被良好校准的概率輸出,而曲線下面積無法告訴我們這一結果。
並非總是希望分類閾值不變。
在假負例與假正例的代價存在較大差異的情況下,盡量減少一種類型的分類錯誤可能至關重要。
例如,在進行垃圾郵件檢測時,您可能希望優先考慮盡量減少假正例(即使這會導致假負例大幅增加)。
對於此類優化,曲線下面積並非一個實用的指標。
6- 預測偏差
邏輯回歸預測應當無偏差。即:“預測平均值”應當約等於“觀察平均值”
預測偏差指的是這兩個平均值之間的差值,即:$\text{預測偏差} = \text{預測平均值} - \text{數據集中相應標簽的平均值}$
如果出現非常高的非零預測偏差,則說明模型某處存在錯誤,因為這表明模型對正類別標簽的出現頻率預測有誤。
造成預測偏差的可能原因包括:
- 特征集不完整
- 數據集混亂
- 模型實現流水線中有錯誤?
- 訓練樣本有偏差
- 正則化過強
可能會通過對學習模型進行后期處理來糾正預測偏差,即通過添加校准層來調整模型的輸出,從而減小預測偏差。
但是,添加校准層並非良策,具體原因如下:
- 修復的是症狀,而不是原因。
- 建立了一個更脆弱的系統,並且必須持續更新。
如果可能的話,請避免添加校准層。
使用校准層的項目往往會對其產生依賴 - 使用校准層來修復模型的所有錯誤。
最終,維護校准層可能會令人苦不堪言。
注意:
出色模型的偏差通常接近於零。即便如此,預測偏差低並不能證明模型比較出色。
特別糟糕的模型的預測偏差也有可能為零。例如,只能預測所有樣本平均值的模型是糟糕的模型,盡管其預測偏差為零。
分桶偏差和預測偏差
必須在“一大桶”樣本中檢查預測偏差。
也就是說,只有將足夠的樣本組合在一起以便能夠比較預測值與觀察值,邏輯回歸的預測偏差才有意義。
可以通過以下方式構建桶:
- 以線性方式分解目標預測。
- 構建分位數。
為什么只有模型的某些部分所做的預測如此糟糕?以下是幾種可能性:
- 訓練集不能充分表示數據空間的某些子集。
- 數據集的某些子集比其他子集更混亂。
- 該模型過於正則化。(不妨減小 lambda 的值。)
7- 理解
問題
1- 讓我們以一種將電子郵件分為“垃圾郵件”或“非垃圾郵件”這兩種類別的分類模型為例。如果提高分類閾值,精確率會怎樣?
- 一定會提高。
- 可能會提高。
- 一定會降低。
- 可能會降低。
2- 讓我們以一種將電子郵件分為“垃圾郵件”或“非垃圾郵件”這兩種類別的分類模型為例。如果提高分類閾值,召回率會怎樣?
- 始終下降或保持不變。
- 始終保持不變。
- 一定會提高。
3- 以兩個模型(A 和 B)為例,這兩個模型分別對同一數據集進行評估。 以下哪一項陳述屬實?
- 如果模型 A 的召回率優於模型 B,則模型 A 更好。
- 如果模型 A 的精確率和召回率均優於模型 B,則模型 A 可能更好。
- 如果模型 A 的精確率優於模型 B,則模型 A 更好。
4- 將給定模型的所有預測結果都乘以 2.0(例如,如果模型預測的結果為 0.4,我們將其乘以 2.0 得到 0.8),會使按 AUC 衡量的模型效果產生何種變化?
- 這會使 AUC 變得更好,因為預測值之間相差都很大。
- 這會使 AUC 變得很糟糕,因為預測值現在相差太大。
- 沒有變化。AUC 只關注相對預測分數。
答案
1- 可能會提高。一般來說,提高分類閾值會減少假正例,從而提高精確率。
2- 始終下降或保持不變。提高分類閾值會導致真正例的數量減少或保持不變,而且會導致假負例的數量增加或保持不變。因此,召回率會保持不變或下降。
3- 如果模型 A 的精確率和召回率均優於模型 B,則模型 A 可能更好。
一般來說,如果某個模型在精確率和召回率方面均優於另一模型,則該模型可能更好。很顯然,我們需要確保在精確率/召回率點處進行比較,這在實踐中非常有用,因為這樣做才有實際意義。例如,假設我們的垃圾郵件檢測模型需要達到至少 90% 的精確率才算有用,並可以避免不必要的虛假警報。在這種情況下,將 {20% 精確率,99% 召回率} 模型與另一個 {15% 精確率,98% 召回率} 模型進行比較不是特別有意義,因為這兩個模型都不符合 90% 的精確率要求。但考慮到這一點,在通過精確率和召回率比較模型時,這是一種很好的方式。
4- 沒有變化。AUC 只關注相對預測分數。
沒錯,AUC 以相對預測為依據,因此保持相對排名的任何預測變化都不會對 AUC 產生影響。而對其他指標而言顯然並非如此,例如平方誤差、對數損失函數或預測偏差(稍后討論)。
8- 練習
xxx
9- 關鍵詞
二元分類 (binary classification)
一種分類任務,可輸出兩種互斥類別之一。
例如,對電子郵件進行評估並輸出“垃圾郵件”或“非垃圾郵件”的機器學習模型就是一個二元分類器。
分類閾值 (classification threshold)
一種標量值條件,應用於模型預測的得分,旨在將正類別與負類別區分開。
將邏輯回歸結果映射到二元分類時使用。
以某個邏輯回歸模型為例,該模型用於確定指定電子郵件是垃圾郵件的概率。
如果分類閾值為 0.9,那么邏輯回歸值高於 0.9 的電子郵件將被歸類為“垃圾郵件”,低於 0.9 的則被歸類為“非垃圾郵件”。
混淆矩陣 (confusion matrix)
一種 NxN 表格,用於總結分類模型的預測效果;即標簽和模型預測的分類之間的關聯。
在混淆矩陣中,一個軸表示模型預測的標簽,另一個軸表示實際標簽。N 表示類別個數。在二元分類問題中,N=2。
例如,下面顯示了一個二元分類問題的混淆矩陣示例:
上面的混淆矩陣顯示,在 19 個實際有腫瘤的樣本中,該模型正確地將 18 個歸類為有腫瘤(18 個正例),錯誤地將 1 個歸類為沒有腫瘤(1 個假負例)。
同樣,在 458 個實際沒有腫瘤的樣本中,模型歸類正確的有 452 個(452 個負例),歸類錯誤的有 6 個(6 個假正例)。
多類別分類問題的混淆矩陣有助於確定出錯模式。
例如,某個混淆矩陣可以揭示,某個經過訓練以識別手寫數字的模型往往會將 4 錯誤地預測為 9,將 7 錯誤地預測為 1。
混淆矩陣包含計算各種效果指標(包括精確率和召回率)所需的充足信息。
正類別 (positive class)
在二元分類中,兩種可能的類別分別被標記為正類別和負類別。
正類別結果是我們要測試的對象。(不可否認的是,我們會同時測試這兩種結果,但只關注正類別結果。)例如,在醫學檢查中,正類別可以是“腫瘤”。
在電子郵件分類器中,正類別可以是“垃圾郵件”。
與負類別相對。
負類別 (negative class)
在二元分類中,一種類別稱為正類別,另一種類別稱為負類別。
正類別是我們要尋找的類別,負類別則是另一種可能性。例如,在醫學檢查中,負類別可以是“非腫瘤”。
在電子郵件分類器中,負類別可以是“非垃圾郵件”。
另請參閱正類別。
正例 (TP, true positive)
被模型正確地預測為正類別的樣本。
例如,模型推斷出某封電子郵件是垃圾郵件,而該電子郵件確實是垃圾郵件。
負例 (TN, true negative)
被模型正確地預測為負類別的樣本。
例如,模型推斷出某封電子郵件不是垃圾郵件,而該電子郵件確實不是垃圾郵件。
假正例 (FP, false positive)
被模型錯誤地預測為正類別的樣本。
例如,模型推斷出某封電子郵件是垃圾郵件(正類別),但該電子郵件其實不是垃圾郵件。
假負例 (FN, false negative)
被模型錯誤地預測為負類別的樣本。
例如,模型推斷出某封電子郵件不是垃圾郵件(負類別),但該電子郵件其實是垃圾郵件。
准確率 (accuracy)
分類模型的正確預測所占的比例。
在多類別分類中,准確率的定義:$\text{准確率} = \frac{\text{正確的預測數}} {\text{樣本總數}}$
在二元分類中,准確率的定義:$\text{准確率} = \frac{\text{正例數} + \text{負例數}} {\text{樣本總數}}$
分類不平衡的數據集 (class-imbalanced data set)
一種二元分類問題,在此類問題中,兩種類別的標簽在出現頻率方面具有很大的差距。
例如,在某個疾病數據集中,0.0001 的樣本具有正類別標簽,0.9999 的樣本具有負類別標簽,這就屬於分類不平衡問題;但在某個足球比賽預測器中,0.51 的樣本的標簽為其中一個球隊贏,0.49 的樣本的標簽為另一個球隊贏,這就不屬於分類不平衡問題。
精確率 (precision)
一種分類模型指標。精確率指模型正確預測正類別的頻率,即:
$\text{精確率} = \frac{\text{正例數}} {\text{正例數} + \text{假正例數}}$
召回率 (recall)
一種分類模型指標,用於回答以下問題:在所有可能的正類別標簽中,模型正確地識別出了多少個?即:
$\text{召回率} = \frac{\text{正例數}} {\text{正例數} + \text{假負例數}}$
ROC 曲線下面積 (AUC, Area under the ROC Curve)
一種會考慮所有可能分類閾值的評估指標。
ROC 曲線下面積是,對於隨機選擇的正類別樣本確實為正類別,以及隨機選擇的負類別樣本為正類別,分類器更確信前者的概率。
受試者工作特征曲線(receiver operating characteristic,簡稱 ROC 曲線)
不同分類閾值下的正例率和假正例率構成的曲線。另請參閱曲線下面積。
分桶 (bucketing)
將一個特征(通常是連續特征)轉換成多個二元特征(稱為桶或箱),通常根據值區間進行轉換。
例如,您可以將溫度區間分割為離散分箱,而不是將溫度表示成單個連續的浮點特征。
假設溫度數據可精確到小數點后一位,則可以將介於 0.0 到 15.0 度之間的所有溫度都歸入一個分箱,將介於 15.1 到 30.0 度之間的所有溫度歸入第二個分箱,並將介於 30.1 到 50.0 度之間的所有溫度歸入第三個分箱。
校准層 (calibration layer)
一種預測后調整,通常是為了降低預測偏差的影響。
調整后的預測和概率應與觀察到的標簽集的分布一致。
預測偏差 (prediction bias)
一種值,用於表明預測平均值與數據集中標簽的平均值相差有多大。
