天天看點

一文讀懂回歸模型準确度評價名額:R-square, AIC, BIC, Cp

本文中,我将描述用于衡量回歸模型性能的不同統計回歸名額。并且使用R語言,提供實際的例子-在社會經濟名額的基礎上預測生育率得分-用于比較兩個模型的性能,以便為我們的資料選擇最佳的模型。

常見評價名額概覽

在回歸模型中,最常見的評價名額包括。

R方 R-squared(R2),即預測變量所能解釋的結果變化的比例。在多元回歸模型中,R2對應于觀察到的結果值和模型預測值之間的平方關系。R-squared越高,模型就越好。

均方根誤差 Root Mean Squared Error(RMSE),衡量模型在預測一個觀察結果時産生的平均誤差。在數學上,RMSE是平均平方誤差(MSE)的平方根,即觀察到的實際結果值與模型預測值之間的平均平方差。是以,MSE=平均值((觀察值-預測值)^2),RMSE=sqrt(MSE)。RMSE越低,模型就越好。

殘差标準誤差 Residual Standard Error(RSE),也被稱為模型西格瑪,是RMSE的一個變體,根據模型中的預測因子數量進行調整。RSE越低,模型就越好。在實踐中,RMSE和RSE之間的差異非常小,特别是對于大型多變量資料。

平均絕對誤差 Mean Absolute Error(MAE),與RMSE一樣,MAE測量預測誤差。在數學上,它是觀察和預測結果之間的平均絕對差異,MAE = mean(abs(observeds - predicteds))。與RMSE相比,MAE對離群值不太敏感。

以上名額的問題在于,它們對于模型中包含額外變量的敏感性,即使這些變量在解釋結果方面沒有顯著的貢獻。換句話說,即使這些變量沒有實際意義,将它們包含在模型中仍會增加 R方 并降低 RMSE。是以,我們需要更穩健的名額來指導模型選擇。

關于R方,有一個經過調整的版本稱為adjusted R方,它為模型中過多變量進行了調整。

此外,還有四個重要的名額 - AIC,AICc,BIC和Mallows Cp - 常用于模型評估和選擇。這些名額是模型預測誤差MSE的無偏估計。這些名額越低,模型越好。

AIC是(Akaike's Information Criteria)的縮寫,是日本統計學家Hirotugu Akaike在1970年制定的一個名額。AIC的基本思想是懲罰将額外變量納入模型的行為。它增加了一個懲罰,在包括額外條款時增加了誤差。AIC越低,模型就越好。

AICc是AIC的另一個版本,針對小樣本量進行修正。

BIC(Bayesian information criteria)是AIC的一個變種,對包括額外變量的模型有更強的懲罰。

Mallows Cp 是由Colin Mallows開發的AIC的一個變體。

加載所需的R包

tidyverse用于資料處理和可視化

modelr提供了用于計算回歸模型性能名額的輔助函數

broom建立了一個包含模型統計名額的整潔的資料架構

library(tidyverse)
library(modelr)
library(broom)           

執行個體資料

我們将使用R内置的 swiss資料集,該資料集在社會經濟名額的基礎上預測生育率得分。

# Load the data
data("swiss")
# Inspect the data
sample_n(swiss, 3)           

建立回歸模型

我們首先建立兩個模型。

模型1,包括所有預測因素

模型2,包括除 "考試 "變量外的所有預測因素

model1 <- lm(Fertility ~., data = swiss)
model2 <- lm(Fertility ~. -Examination, data = swiss)           

評估模型品質

有許多R函數和包用于評估模型品質,包括。

summary()函數,傳回R平方、adjusted R-squared、RSE

AIC()和BIC()函數,分别計算AIC和BIC

summary(model1)
AIC(model1)
BIC(model1)           

rsquare(), rmse()和mae()[函數],分别計算R2, RMSE和MAE。

library(modelr)
data.frame(
  R2 = rsquare(model1, data = swiss),
  RMSE = rmse(model1, data = swiss),
  MAE = mae(model1, data = swiss)
)           

R2(), RMSE()和MAE()[函數],分别計算R2, RMSE和MAE。

library(caret)
predictions <- model1 %>% predict(swiss)
data.frame(
  R2 = R2(predictions, swiss$Fertility),
  RMSE = RMSE(predictions, swiss$Fertility),
  MAE = MAE(predictions, swiss$Fertility)
)           

比較回歸模型的性能

在這裡,我們将使用函數glance()來簡單比較我們兩個模型的整體品質。

模型一

# Metrics for model 1
glance(model1) %>%
  dplyr::select(adj.r.squared, sigma, AIC, BIC, p.value)           

結果

##   adj.r.squared sigma AIC BIC  p.value
## 1         0.671  7.17 326 339 5.59e-10           

模型2

# Metrics for model 2
glance(model2) %>%
  dplyr::select(adj.r.squared, sigma, AIC, BIC, p.value)           

結果

##   adj.r.squared sigma AIC BIC  p.value
## 1         0.671  7.17 325 336 1.72e-10           

從上面的輸出可以看出:

這兩個模型有完全相同的調整後的R2(0.67),意味着它們在解釋生育率得分結果的效果是相等的。此外,它們的殘差标準誤差(RSE或sigma=7.17)也相同。然而,模型2比模型1更簡單,因為它包含的變量更少。在同等條件下,簡單的模型在統計學上總是更好。

模型2的AIC和BIC都比模型1的低。在模型比較政策中,AIC和BIC得分最低的模型是首選。

最後,模型2的F統計量p.值低于模型1的。這意味着與模型1相比,模型2在統計上更有意義,這與上述結論一緻。

請注意,RMSE和RSE的測量尺度與結果變量相同。用RSE除以結果變量的平均值就可以得到預測錯誤率,這個錯誤率應該盡可能的小。

sigma(model1)/mean(swiss$Fertility)           

結果

## [1] 0.102           

在我們的例子中,平均預測錯誤率為10%。

讨論

本章介紹了評估回歸模型整體性能的幾個名額。

最重要的名額是調整後的R-square、RMSE、AIC和BIC。這些名額也被用來作為模型比較和優化模型選擇的基礎。

請注意,這些回歸名額都是内部衡量标準,即它們是在用于建立回歸模型的相同資料上計算出來的。它們告訴你模型與手中的資料(稱為訓練資料集)的比對程度。

一般來說,我們并不真正關心該方法在訓練資料上的效果如何。相反,我們感興趣的是,當我們将方法應用于以前未見過的測試資料時,我們獲得的預測的準确性。

然而,測試資料并不總是可用的,這使得測試誤差非常難以估計。在這種情況下,交叉驗證(cross-validation)和自舉法(bootstrap-resampling)等方法被應用于使用訓練資料來估計測試誤差(或預測錯誤率)。

繼續閱讀