文章目錄
MAE、MSE、R-Square、MAPE和RMSE
以上是對於預測問題的評價指標。
1.平均絕對誤差(Mean Absolute Error, MAE)
誤差越大,該值越大。
2.均方誤差(Mean Squared Error, MSE)
誤差越大,該值越大。
SSE(和方差)與MSE之間差一個係數n,即SSE = n * MSE,二者效果相同。
3.均方根誤差(Root Mean Square Error, RMSE)
是MSE的算數平均根
誤差越大,該值越大。
4.平均絕對百分比誤差(Mean Absolute Percentage Error, MAPE)
注意:當真實值有數據等於0時,存在分母0除問題,該公式不可用。
5.確定係數(R-Square or R2)
首先,殘差平方和爲:
總平均值爲:
得到R2表達式爲:
R2用於度量因變量的變異中可由自變量解釋部分所佔的比例,取值範圍是 0~1,R2越接近1,表明迴歸平方和佔總平方和的比例越大,迴歸線與各觀測點越接近,用x的變化來解釋y值變化的部分就越多,迴歸的擬合程度就越好。
所以R2也稱爲擬合優度(Goodness of Fit)的統計量。
yi表示真實值,y^i表示預測值,y¯i表示樣本均值。得分越高擬合效果越好。
Python代碼:實現各評價指標
import numpy as np
from sklearn import metrics
# MAPE需要自己實現
def mape(y_true, y_pred):
return np.mean(np.abs((y_pred - y_true) / y_true))
y_true = np.array([1.0, 5.0, 4.0, 3.0, 2.0, 5.0, -3.0])
y_pred = np.array([1.0, 4.5, 3.8, 3.2, 3.0, 4.8, -2.2])
# MSE
print('MSE:',metrics.mean_squared_error(y_true, y_pred)) # 0.2871428571428571
# RMSE
print('RMSE:',np.sqrt(metrics.mean_squared_error(y_true, y_pred))) # 0.5358571238146014
# MAE
print('MAE:',metrics.mean_absolute_error(y_true, y_pred)) # 0.4142857142857143
# MAPE
print('MAPE:',mape(y_true, y_pred)) # 0.1461904761904762
## R2-score
from sklearn.metrics import r2_score
y_true = [3, -0.5, 2, 7]
y_pred = [2.5, 0.0, 2, 8]
print('R2-score:',r2_score(y_true, y_pred)) # 0.9486081370449679