在機器學習中除了需要了解各種算法知識(如SVM、神經網絡等),也需要了解是如何通過什麼方式評估和度量模型的,從而選擇最佳的模型。
1. 準備訓練/測試集評估
- 如何評估一個模型的性能,當然是用數據來評估呢?那麼用哪些數據評估模型呢?既把數據用作訓練,同時又把這部分數據用作測試當然是不合理的,這會導致過高的估計模型的性能。測試數據要儘可能地與訓練數據互斥。因此就需要將總量有限的數據劃分爲訓練集和測試集兩個互斥的集合,那麼如何進行劃分呢?
1.1 留出法
- 留出法簡單粗暴,直接將數據集劃分爲兩部分,一部分作爲訓練 ,一部分作爲測試 ,在 上訓練模型,然後在 上評估模型的泛化性能。對於一個樣本,隨機地將其劃分其中一個數據集中,一般保持訓練集佔整個數據集的 ,那麼測試佔整個數據集的 。另外,評估模型的穩定性,一般會多次使用留出法,進行多次訓練和測試。
1.2 交叉驗證法
- 交叉驗證法把數據集 劃分爲 個互斥的子集( ),則稱爲 折交叉驗證(通常取 )。每次利用 個子集作爲訓練集,另外一個子集作爲測試集,從而完成 次訓練和測試,以 次訓練和測試的均值作爲結果。在 者交叉驗證時,數據樣本的劃分是固定的,有時候爲了避免樣本劃分的不同而引入誤差,需要進行多次 者交叉驗證,比如實施10次10折交叉驗證,那麼就需要進行100次模型的訓練和測試。
1.3 自助法
數據集 包含 個樣本,自助法的流程如下:每次隨機從 中選擇一個樣本,複製到 中(注意,該樣本沒有從 拿出),重複執行 次該操作,得到一個包含 個樣本的新數據集 ,再去掉 中重複出現的樣本。
某個樣本在 次的採樣中,始終不被採到的概率是 ,取極限得到
- 因此在新的數據集 中約有36.8%的樣本未出現。
2. 性能度量
- 有了測試集之後,使用什麼指標來度量模型的好壞程度呢?不同的任務需求,會使用不同的性能度量指標,在迴歸和分類任務中,性能度量的指標也完全不一樣。
2.1 迴歸問題的性能度量
- 迴歸問題的標記 一般都是實值,不能通過是否相等進行評估。一般是通過衡量預測值 和真實值 之間的距離。常用的評價指標有均方誤差等。
和方誤差(sum square error, SSE)
平均絕對誤差(mean absolute error, MAE)
均方誤差(mean square error, MSE)
均方根誤差(root mean square error, RMSE)
平均絕對百分比誤差(mean absolute percentage error,MAPE)
平均平方百分比誤差(mean square percentage error,MASE)
- 引入百分比之後,可以有效避免因爲樣本的絕對數值引起的評估不恰當問題。比如對於房價的預測,數值一般爲幾萬/平,而對於人身高的預測,一般爲1.x米。如果不加上相對百分比的限制,就會導致數值差距非常大,雖然對於問題的求解不影響,但給人的直觀感受很不一樣。
決定係數
其中SSE表示前面提到的和方誤差,而SST則表示原始數據相對均值的波動
若 小於0,則表示擬合的很差,還不如以平均值擬合的效果好。一般 介於0~1之間,越接近於1,說明擬合效果越好。
2.2 分類問題的性能度量
2.2.1 錯誤率和準確率
- 錯誤率和準確率是最常用的分類問題性能度量的指標。
2.2.2 查準率和查全率
雖然錯誤率和準確率很常用,確實很多場景下使用準確率就夠了(比如,統計投籃的命中率等)。但也有很多場景下,使用準確率是不夠的(比如,買瓜時,一般只關注自己買到的瓜是否是好瓜)。這時,就需要用到查準和查全率(查準又稱爲精確率,查全又稱爲召回率)。
要用公式解釋查準率和查全率時,首先需要解釋混淆矩陣。混淆矩陣表示某個類別被識別爲其它類別的數量。對於二分類問題,混淆矩陣如下:
其中,
TP表示正樣本被預測爲正樣本(真正例,true positive)
FN表示正樣本被預測爲負樣本(假負例,false negative)
FP示負樣本被預測爲正樣本(假正例,false positive)
TN表示負樣本被預測爲負樣本(真負例,true negative)
- 查準率和查全率就可以定義如下:
那對於多分類問題而言呢?混淆矩陣和查準、查全率如何計算呢?
混淆矩陣是一致的,查準和查全可以按照二分類來類比,即分爲類 和非類 兩種。舉個例子如下:
. | A | B | C |
---|---|---|---|
A | 4 | 1 | 2 |
B | 2 | 7 | 1 |
C | 10 | 1 | 21 |
- 混淆矩陣如上,對於類A而言, , 。
2.2.3 和 分數
和 是精確率和召回率的調和平均。有如下公式:
調和平均和算術平均、幾何平均相比,更加關注於較小值。
2.2.4 P-R曲線
- P-R曲線的解釋可以參見我的博客P-R曲線深入理解。