1. 程式人生 > >(轉)迴歸評價指標分析:SSE,MSE,RMSE,MAE,R-square

(轉)迴歸評價指標分析:SSE,MSE,RMSE,MAE,R-square

SSE(和方差、誤差平方和):The sum of squares due to error
MSE(均方差、方差):Mean squared error
RMSE(均方根、標準差):Root mean squared error
R-square(確定係數):Coefficient of determination
Adjusted R-square:Degree-of-freedom adjusted coefficient of determination


下面我對以上幾個名詞進行詳細的解釋下,相信能給大家帶來一定的幫助!!


一、SSE(和方差)

該統計引數計算的是擬合數據和原始資料對應點的誤差的平方和,計算公式如下

SSE越接近於0,說明模型選擇和擬合更好,資料預測也越成功。接下來的MSE和RMSE因為和SSE是同出一宗,所以效果一樣


二、MSE(均方差)
該統計引數是預測資料和原始資料對應點誤差的平方和的均值,也就是SSE/n,和SSE沒有太大的區別,計算公式如下

y_preditc=reg.predict(x_test) #reg是訓練好的模型
mse_test=np.sum((y_preditc-y_test)**2)/len(y_test) #跟數學公式一樣的

三、RMSE(均方根)
該統計引數,也叫回歸系統的擬合標準差,是MSE的平方根,就算公式如下

在這之前,我們所有的誤差引數都是基於預測值(y_hat)和原始值(y)之間的誤差(即點對點)。從下面開始是所有的誤差都是相對原始資料平均值(y_ba)而展開的(即點對全)!!!
 

rmse_test=mse_test ** 0.5

四、MAE 平均絕對誤差
image.png 
簡單!

mae_test=np.sum(np.absolute(y_preditc-y_test))/len(y_test)

五、R-square(確定係數)
在講確定係數之前,我們需要介紹另外兩個引數SSR和SST,因為確定係數就是由它們兩個決定的
(1)SSR:Sum of squares of the regression,即預測資料與原始資料均值之差的平方和,公式如下

(2)SST:Total sum of squares,即原始資料和均值之差的平方和,公式如下

細心的網友會發現,SST=SSE+SSR,呵呵只是一個有趣的問題。而我們的“確定係數”是定義為SSR和SST的比值,故

其實“確定係數”是通過資料的變化來表徵一個擬合的好壞。由上面的表示式可以知道“確定係數”的正常取值範圍為[0 1],越接近1,表明方程的變數對y的解釋能力越強,這個模型對資料擬合的也較好

慢慢解釋。其實這個很簡單。 
上面分子就是我們訓練出的模型預測的所有誤差。 
下面分母就是不管什麼我們猜的結果就是y的平均數。(瞎猜的誤差)

那結果就來了。 
如果結果是0,就說明我們的模型跟瞎猜差不多。 
如果結果是1。就說明我們模型無錯誤。 
如果結果是0-1之間的數,就是我們模型的好壞程度。 
如果結果是負數。說明我們的模型還不如瞎猜。(其實導致這種情況說明我們的資料其實沒有啥線性關係)

化簡上面的公式 
分子分母同時除以m 
 image.png
那麼分子就變成了我們的均方誤差MSE,下面分母就變成了方差。 

image.png
程式碼部分

具體模型程式碼就不給了。只說這個幾種衡量標準的原始程式碼。
 

R_square=1- mean_squared_error(y_test,y_preditc)/ np.var(y_test)

scikit-learn中的R-square衡量指標


from sklearn.metrics import r2_score#R square
r2_score(y_test,y_predict)