1. 程式人生 > >回歸問題的性能度量標準

回歸問題的性能度量標準

pad 使用 class AR 差值 rom ora The blank

我們以$Y = \{ y_1, y_2,...,y_n \}$ 表示真實的數據,以$\hat Y = \{ \hat{y}_1, \hat{y}_2,...,\hat{y}_n\}$表示預測出來的數據

1:均方誤差 (mean square error)MSE

$MSE = \frac{1}{n} \sum \limits_{i=1}^{n} (y_i – \hat{y}_i)^2$

2:均方根誤差 (root mean squared error)RMSE

均方根誤差是均方誤差開根號得到的結果

$RMSE = \sqrt{ \frac{1}{n} \sum \limits_{i=1}^{n} (y_i – \hat{y}_i)^2 }$

3:平均絕對誤差 (mean absolute error) MAE

$MAE = \frac{1}{n} \sum \limits_{i=1}^{n} \lvert y_i – \hat{y}_i \rvert$

4:均方根對數誤差 (root mean squared logarithmic error) RMSLE

$RMSLE = \sqrt{ \frac{1}{n} \sum \limits_{i=1}^{n} (log(\hat{y}_i + 1) – log(y_i + 1) )^2 }$

使用RMSLE的好處一:

假如真實值為1000,若果預測值是600,那麽RMSE=400, RMSLE=0.510

假如真實值為1000,若預測結果為1400, 那麽RMSE=400, RMSLE=0.336

可以看出來在均方根誤差相同的情況下,預測值比真實值小這種情況的錯誤比較大,即對於預測值小這種情況懲罰較大。

使用RMSLE的好處二:

直觀的經驗是這樣的,當數據當中有少量的值和真實值差值較大的時候,使用log函數能夠減少這些值對於整體誤差的影響。

使用sklearn.metrics 來進行計算:

from sklearn.metrics import mean_squared_error
from sklearn.metrics import mean_squared_log_error
from sklearn.metrics import mean_absolute_error

x = [1,2,3,4,5]
y = [2,4,3,2,6]

MSE = mean_squared_error(x, y)
RMSE = MSE ** 0.5
MAE = mean_absolute_error(x, y)
MSLE = mean_squared_log_error(x, y)
RMSLE = MSLE ** 0.5
print(MSE, RMSE, MAE, RMSLE)

結果為:

2.0 1.4142135623730951 1.2 0.3768421477956514

參考:

檢測模型結果的時候,除了最常用的MSE,RMSE,Accuracy,AUC等,還有什麽嗎?

What is the difference between an RMSE and RMSLE

回歸問題的性能度量標準