作者:chen_h
微訊號 & QQ:862251340
微信公眾號:coderpai
我的部落格:請點選這裡
什麼是分類模型?
分類是將每個資料集合中的元素分配給一個已知的資料類別。
那麼分類都有哪些任務呢?
-
根據醫生的病歷記錄,將檢查者區分為健康或者生病的人;
-
例如使用一些人口統計學和歷史財務資料,在申請信用卡的時候,我們就可以對客戶進行可信度評分,評為“可信”或者“不可信”;
-
可以根據使用者使用軟體的行為資料進行分析,來分類這個使用者是不是還會繼續使用這個軟體,比如可以分為“繼續使用的使用者”和“不繼續使用的使用者”;
如何構建一個分類模型?
1. 資料預處理(匯入資料,清洗資料,驗證資料)
這個階段將資料分為兩個或三個部分:
-
訓練資料 —— 將被用來進行資料建模;
-
驗證資料 —— 將被用來做模型評估(這個在複雜環境下會被用到);
-
測試資料 —— 將被用來評估模型的最終質量;
2. 模型構建(使用訓練資料和驗證資料)
3. 模型質量評估(使用測試資料來測試模型)
4. 模型應用和後續監控(定期檢查模型是否執行正常,效能是否下降)
可以使用哪些指標來確定分類模型的質量呢?
這裡有兩種指標可以來評估一個分類模型的質量:
-
定量指標 —— 用具體數值來表示分類質量。
-
圖形指標 —— 分類質量用一張圖來表示。圖形化表示方法簡化了質量的評估,並且也增強了視覺化效果。這些指標包括:
-
混淆矩陣(confusion matrix)
-
ROC 曲線
-
LIFT 圖表
-
用於評估分類模型的一些基本概念
二分類和多分類
二分類:
一個類別被定義為正樣本,一個類別被定義為負樣本。
多分類
一個類別被定義為正類,其他類別的組合都是被定義為負類。
正樣本應該是在建模過程中被識別出來的物件:例如在信用評分模型中,正樣本包括拖欠債務的顧客,負樣本就是剩下所有類別的顧客。
TP, TN, FP, FN
-
TP —— 模型預測樣本是正樣本,這個樣本的真實結果也是正樣本;
比如:模型預測該客戶是一個流失客戶,然後實際情況是這個客戶確實是一個流失掉的客戶。 -
TN —— 模型預測樣本是負樣本,這個樣本的真實結果也是一個負樣本;
比如:模型預測該客戶不是一個流失客戶,然後實際情況是這個客戶確實不是一個流失掉的客戶。 -
FP —— 模型預測樣本是正樣本,這個樣本的真實結果卻是負樣本;
比如:模型預測該客戶是一個流失客戶,然後實際情況是這個客戶不是一個流失掉的客戶。 -
FN —— 模型預測樣本是負樣本,這個樣本的真實結果是正樣本;
比如:模型預測該客戶不是一個流失客戶,然後實際情況是這個客戶確是一個流失掉的客戶。
對於一個完美分類器來說,我們希望得到如下引數:
FP = 0
FN = 0
TP = 所有正樣本的個數
TN = 所有負樣本的個數
一些派生的質量指標
上面我們已經介紹了一些基本的質量指標,現在我們來介紹一些派生出來的質量指標。
-
TPR(True Positive Rate) —— 反映了分類器檢測正樣本的能力。
TPR = TP / (TP + FN) = TP / P,P 表示全部的正樣本 -
TNR(True Negative Rate) —— 反映了分類器檢測負樣本的能力。
TNR = TN / (TN + FP) = TN / N,N 表示全部的負樣本 -
FPR(False Positive Rate) —— 反映了分類器檢測假正性的能力。
FPR = FP / (FP + TN) -
FNR(False Negative Rate)—— 反映了分類器檢測假負性的能力。
FNR = FN / (FN + TP)
-
SE(敏感度)—— 反映了分類器檢測正樣本的能力。
SE = TP / (TP + FN) -
SP (特異性)—— 反映了分類器檢驗負樣本的能力
SP = TN / (TN + FP)
所以我們可以得到如下等式:
SE = TPR
SP = TNR
1 – SE = FNR
1 – SP = FPR
-
ACC(總準確率)—— 反映了分類器的總體預測準確性,即進行正確預測的概率,也就是等於正確決策的個數與總決策個數的比例。
ACC = (TP + TN) / (TP + TN + FP + FN)
例子:如何去選擇合適的評估指標
從上面我們可以看到,分類器有很多的評估質量的指標。那麼如何選取當前模型的指標呢?這就變成了一個至關重要的問題。
例子
在客戶流失分析模型中,我們的資料有兩個類別:客戶流失和客戶不流失。假設我們有 100 個資料,那麼:
-
90 個觀察到的資料被標記為 “0”(正類)的類別,這個標記屬於客戶決定停止使用我們的服務或者產品;
-
10 個觀察到的資料被標記為 “1”(負類)的類別,這個標記屬於客戶決定繼續使用我們的服務或者產品;
然後,我們設計的分類器獲得瞭如下結果:
TP = 85(85個被正確分類為正樣本)
TN = 1(1個被正確分類為負樣本)
FP = 9(9個原來是負樣本的被分類為正樣本)
FN = 5(5個原來是正樣本的被分類為負樣本)
上述指標總和是:
TP + TN + FP + FN = 100
我們現在計算分類的總體準確率:
ACC = (85 + 1)/ 100 = 0.86
86% 的準確率已經是一個不壞的結果了,但是讓我們看一下另一個指標:TNR,這個指標反映了分類器檢測負樣本的能力,也就是在我們這個例子中會繼續使用我們軟體的客戶:
TNR = 1 / 10 = 0.1
也就是說,只有一個不會流失的顧客被識別出來了,剩下的不流失的顧客都被錯誤分類了。如果從這個角度分析,那麼這個模型是非常糟糕的一個模型。
所以,只有一個 ACC 是不能很準確來衡量一個模型的好壞的。
在接下來,我們將採用圖形指標來分析模型的好壞。我們將從混淆矩陣開始,這是表示分類結果的最簡單方法。
什麼是混淆矩陣?
混淆矩陣是一個 N*N 矩陣,其中每一行代表了資料的真實歸屬類別,每一行的資料總數表示該類別的資料例項的數目。每一列代表了模型預測得到的類別,每一列的總數表示預測為該類別的資料的數目。如下左上角的圖,第一行第一列中的 85 表示有 85 個實際歸屬為第一類的資料被正確預測為了第一類。同理,第二行第一列中的 9 表示有 9 個實際是第二類的資料被錯誤預測為了第一類。
混淆矩陣的形式
各種形式的混淆矩陣讓我們可以更加容易的觀察分類模型效能的這種特徵,主要有如下兩種形式:
-
數字形式 —— 包含分配給特定類別的數字表示
-
百分數形式 —— 包含分配給特定類別的百分比,計算為分配給該類別的數量與總數量之間的比值。
-
收益和損失形式 —— 包含由於正確和錯誤的分類而產生的收益和損失資訊。
收益和損失形式中的混淆矩陣包含分類決策造成的成本總和。
接下來舉幾個例子。
例子1
例子2
截止點和混淆矩陣
截止點是一個確定的閾值,可以用來確定一個觀測屬性是否屬於一個特定的類別。
如果 P(class(x) = 1) > alfa,那麼這個則分配給第一類。其中, alfa 就是一個截止點。P(class(x) = 1) 就是屬於第一類的概率。
例如:
如果給定一個概率 60%,那麼貸款申請人不善於償還貸款的概率大於這個值(這個值是我們模型計算出來的),那麼就將這個申請人轉入壞賬類別,否則將其轉入好賬類別。
對於相同的問題,我們可以考慮不同的截止點,這也將導致不同的混淆矩陣。通過分析這些矩陣我們就可以選擇一個最佳的截止點。
混淆矩陣總結
-
收集分類結果的一種簡單易懂的方法
-
使得分類模型的評估更加容易
-
混淆矩陣的不同形式可以幫助更好的觀察分類器的效能
什麼是 ROC 曲線?
ROC 曲線是分類質量視覺化的另外一種方法,顯示了 TPR 和 FPR 之間的依賴關係。
曲線越凸,分類器的效能越好。在下面的例子中,區域 1 中的 “綠色” 分類器更好,區域 2 中的 “紅色” 分類器更好。
如何構建一條 ROC 曲線
-
我們需要計算決策函式的值;
-
我們測試不同的 alpha 閾值的分類器。回想一下,alpha 是估計概率的一個閾值,高於這個概率的觀察值被分配到一個類別(正樣本),低於這個閾值的概率被分配到另一個類別(負樣本);
-
對於具有 alpha 閾值的每一個分類,我們獲得(TPR,FPR)對,其對應於 ROC 曲線上的一個點。
-
對於每個具有 alpha 閾值的分類,我們也有相應的混淆矩陣;
例子
根據 ROC 曲線來評估分類器
分類質量可以使用 ROC 曲線下面的面積大小來計算衡量,這個曲線下的面積就是 AUC 係數。
AUC 係數越高越好。AUC = 1 意味著這是一個完美的分類器,我們把所有的東西都分類準確了。對於純隨機數的分類,我們的 AUC = 0.5。如果 AUC < 0.5,那麼意味著這個分類器的效能比隨機數還要差。
這裡再說一個概念:基尼係數(Gini Coefficient),GC = 2 * AUC – 1。基尼係數越高,代表模型的效果越好。如果 GC = 1,那麼這就是一個完美的模型了。如果 GC = 0,那麼代表這只是一個隨機數模型。
為什麼使用ROC曲線
既然已經這麼多評價標準,為什麼還要使用ROC和AUC呢?因為ROC曲線有個很好的特性:當測試集中的正負樣本的分佈變化的時候,ROC曲線能夠保持不變。在實際的資料集中經常會出現類不平衡(class imbalance)現象,即負樣本比正樣本多很多(或者相反),而且測試資料中的正負樣本的分佈也可能隨著時間變化。下圖是ROC曲線和Precision-Recall曲線的對比:
最後講講最常用的精確率和召回率
完整 PPT 可以關注微信公眾號:coderpai,後臺回覆 20171223 獲得。
CoderPai 是一個專注於演算法實戰的平臺,從基礎的演算法到人工智慧演算法都有設計。如果你對演算法實戰感興趣,請快快關注我們吧。加入AI實戰微信群,AI實戰QQ群,ACM演算法微信群,ACM演算法QQ群。詳情請關注 “CoderPai” 微訊號(coderpai)。