模型構建<1>:模型評估-分類問題

<font size='+0.5'>對模型的評估是指對模型泛化能力的評估,主要經過具體的性能度量指標來完成。在對比不一樣模型的能力時,使用不一樣的性能度量指標可能會致使不一樣的評判結果,所以也就意味着,模型的好壞只是相對的,什麼樣的模型是較好的,不只取決於數據和算法,還取決於任務需求。本文主要對分類模型的性能度量指標(方法)進行總結。</font>html

本文以二分類爲例進行介紹。 ##1.混淆矩陣 ###1.1 混淆矩陣 對於二分類問題,將模型預測的結果(正例、反例)與實際類別(正例、反例)進行比較,就會產生四種狀況: 真正例(true positive, TP):將實際正例預測爲正例 假正例(false positive, FP):將實際反例預測爲正例 真反例(true negative, TN):將實例反例預測爲反例 假反例(false negative, FN):將實際正例預測爲反例 TP+FP+TN+FN 爲所有樣例數,並獲得以下矩陣: 稱這個矩陣爲混淆矩陣(confusion matrix)。 ###1.2 錯誤率 錯誤率(errorRate)是指預測錯誤的樣例佔比,即: $$ errorRate = \frac{FP+FN}{TP+FP+TN+FN} $$ 引用周志華老師書中的例子,錯誤率就是預測出的結果中,將好瓜預測成了壞瓜、將壞瓜預測成了好瓜的比例。 ###1.3 正確率(精度) 正確率(acuracy),又稱爲精度,就是與錯誤率相對的指標,即1-錯誤率, $$ accuracy = \frac{TP+TN}{TP+FP+TN+FN}=1-errorRate $$ 仍然是西瓜這個例子,正確率是預測出的結果中,將好瓜預測成了好瓜、將壞瓜預測成了壞瓜的比例。 錯誤率和正確率是一對從總體上去度量模型預測能力的指標,它沒法評估模型對正例(或者反例)的預測能力強弱。這時候就須要使用查準率和查全率。 ###1.4 查準率(命中率) 查準率(precision),又稱爲命中率,是指模型預測的正例(或反例)中正確的比例。 $$ precision = \frac{TP}{TP+FP} $$ 查準率就是預測出的好瓜中,實際是好瓜的比例。 ###1.5 查全率(召回率、覆蓋率) 查全率(recall),又稱爲召回率、覆蓋率,是指模型預測正確的正例(或反例)佔所有實際正例(或反例)的比例。 $$ recall = \frac{TP}{TP+FN} $$ 查全率就是預測出的好瓜中,實際爲好瓜的數量佔所有好瓜的比例。 ###1.6 F1值 查全率和查準率是一對相矛盾的指標。以西瓜分類爲例,爲了將更多的好瓜識別出來(即提升查全率),那麼就須要去識別更多的西瓜,可是這樣就會影響命中率(即查準率)可能使查準率下降;反過來若是但願選出的瓜中真實的好瓜比例儘量高(即提升查準率),那麼就須要儘可能選擇最優把握的瓜,那麼就可能會漏掉很多好瓜,即影響了查全率。 所以,嘗試定義查準率(precision)、查全率(recall)的複合指標。 這裏介紹經常使用的複合指標它們的加權調和平均數**$F_1$以及它的通常形式$F_{\beta}$: $$ F_1=\frac{2precisionrecall}{precision+recall} $$$$ F_{\beta}=\frac{(1+{\beta}^2)precisionrecall}{{\beta}^2*precision+recall} $$ $F_1$認爲查全率和查準率重要程度相同,而$F_{\beta}$則使用一個參數$\beta>0$度量兩者之間的相對重要程度,$\beta=1$時,$F_{\beta}$即爲$F_1$,表明兩者重要程度相同;$\beta>1$時,表明查全率更重要;$\beta<1$時,表明查準率更重要。 當一個模型進行了屢次訓練和預測,就會獲得多個混淆矩陣,那又將如何計算這些指標? 有兩種思路: 1)先計算各個混淆矩陣的指標,而後計算其平均值; 2)先計算混淆矩陣的平均值,再計算各個指標; <br/> ##2.PR曲線 模型對測試樣本的預測通常會產生一個實值或者機率,同時設定一個閾值(threshold)做爲正例的判別標準,將預測值與這個閾值進行比較,大於這個閾值的認爲是正例,小於這個閾值的認爲是反例。對於同一個模型來講,設定不一樣的閾值,就會產生不一樣的預測結果。以查準率(precision)做爲縱軸,查全率(recall)做爲橫軸**,調整這個閾值,就會獲得一條變化曲線,稱這條曲線爲PR曲線。 經過PR曲線不只能夠直觀地反映模型在不一樣閾值下的查全率和查準率,並且也能夠用來比較兩個不一樣模型的學習性能。 以下是幾種PR曲線示例: PR曲線有如下幾點特徵: 1)查準率(precision)、查全率(recall)都是0-1之間的指標,所以,橫縱軸區間爲[0,1]; 2)曲線必經原點(0,0),由於當查全率爲0時,查準率必然爲0; 3)隨着查全率的增長,查準率可能降低,也可能上升; 4)曲線不可能通過(1,0),由於當查全率爲1時,查準率必然不爲0; 5)當一個模型的PR曲線徹底包住另外一個模型的PR曲線,說明前一個模型的性能優於後一個模型。好比,當查全率相同時,後者的查準率必然大於前者;當查準率相同時,後者的查全率必然大於前者。 6)當一個模型的PR曲線與另外一個模型的PR曲線發生交叉時,很難比較兩者的性能優劣。有一種簡單的比較方式,即作出P=R直線與兩條PR曲線相交,交點即爲查全率與查準率相等的點,這個點稱爲平衡點(Break-Event Point,即BEP),比較這個平衡點的高低便可,認爲BEP大的曲線,模型性能更好。 還有一種比較準確的方式,即經過計算PR曲線下方的面積來比較兩個模型的性能優劣,稱這個面積爲AUC-PR(Area Under ROC Curve)。 <br/> ##3.ROC曲線 ROC曲線(Receiver Operating Characteristic),受試者工做特徵曲線,與PR曲線相似,經過調整正例的判別閾值繪製出來的。不一樣的是,ROC曲線以「真正例率(True Positive Rate,TPR)」做爲縱軸,以「假正例率(False Positive Rate,TPR)」做爲橫軸。TPR和FPR的定義以下: $$ TPR=\frac{TP}{TP+FN} $$$$ FPR=\frac{FP}{TN+FP} $$ 以下是幾種ROC曲線示例: ROC曲線的定義來源於醫學診斷,若是從「真正例率(True Positive Rate,TPR)」、「假正例率(False Positive Rate,TPR)」上來解釋可能不太直觀,咱們直接回到醫學領域理解可能要更容易。 在醫學診斷中,咱們要識別病人是否有病,以陰陽爲例,判斷有病,即爲找到陽例,判斷無病,即爲找到陰例。咱們的任務是要儘量地有病的人找出來,也儘可能不要把沒有病的人診斷爲有病,因此要關注兩個指標,即真陽性的樣例中識別爲陽性的比例、真陰性的樣例中識別爲陽性的比例,也就是上文中提到的TPR和FPR,第一個指標要儘量大,第二個指標要儘量小。可是,這兩個指標相似於查全率和查準率,是相互制約的,要想識別出更多有病的人,就須要去診斷更多的人,那麼就有可能誤傷更多沒有病的人。以這兩個指標爲橫縱軸,不斷調整陽例的識別標準,就繪製出了ROC曲線。 ROC曲線有如下幾點特徵: 1)正對角線,表明隨機猜測預測,一半預測正確,一半預測錯誤。 2)點(0,1)是理想狀態,表明所有正例都被預測爲正例,同時沒有反例被預測爲正例。所以,越接近(0,1)點,預測能力越好。 3)若是一個模型的ROC曲線徹底包住另外一個模型的ROC曲線,說明第一條曲線更接近於(0,1)點,其模型性能更好。 4)若是兩個模型的ROC曲線出現相交的狀況,一樣能夠經過曲線下方與座標軸圍成的面積大小來比較兩者的性能優劣,面積大的說明性能更好。這個面積指標被稱做ROC-AUC(Area Under ROC Curve)。 假設ROC曲線是由點$(x_1,y_1),(x_2,y_2)……(x_m,y_m)$連成折線圍成了,那麼ROC-AUC的取值爲下方各個小梯形面積之和: 通常來講,咱們說的AUC都是指ROC-AUC。 <br/> ##4.參考與感謝 [1] 統計學習方法 [2] 機器學習 [3] ROC曲線與AUC值 <br/> <br/>算法

相關文章
相關標籤/搜索