機器學習中的評價指標--02
機器學習中的評價指標--02
迴歸演算法的評價指標就是SSE、MSE,RMSE,MAE、R-Squared。下面一一介紹:
SSE(和方差)
該統計引數計算的是擬合數據和原始資料對應點的誤差的平方和,計算公式如下
SSE越接近於0,說明模型選擇和擬合更好,資料預測也越成功。接下來的MSE和RMSE因為和SSE是同出一宗,所以效果一樣。
均方誤差(MSE)
MSE (Mean Squared Error)叫做均方誤差。看公式
這裡的y是測試集上的。
用 真實值-預測值 然後平方之後求和平均。
猛著看一下這個公式是不是覺得眼熟,這不就是線性迴歸的L2損失函式嘛!!! 對,線上性迴歸的時候我們的目的就是讓這個損失函式最小。那麼模型做出來了,我們把損失函式丟到測試集上去看看損失值不就好了嘛。簡單直觀暴力!
均方根誤差(RMSE)
RMSE(Root Mean Squard Error)均方根誤差。
這不就是MSE開個根號麼。有意義麼?其實實質是一樣的。只不過用於資料更好的描述。
例如:要做房價預測,每平方是萬元,我們預測結果也是萬元。那麼差值的平方單位應該是千萬級別的。那我們不太好描述自己做的模型效果。於是乾脆就開個根號就好了。我們誤差的結果就跟我們資料是一個級別的,在描述模型的時候就說,我們模型的誤差是多少萬元。
MAE
MAE(平均絕對誤差)
類似L1損失
R Squared
上面的幾種衡量標準針對不同的模型會有不同的值。比如說預測房價 那麼誤差單位就是萬元。數值可能是3,4,5之類的。那麼預測身高就可能是0.1,0.6之類的。沒有什麼可讀性,到底多少才算好呢?要根據模型的應用場景來。
看看分類演算法的衡量標準就是正確率,而正確率又在0~1之間,最高百分之百。最低0。很直觀,而且不同模型一樣的。那麼線性迴歸有沒有這樣的衡量標準呢?答案是有的。
那就是R Squared也就是確定係數。
在講確定係數之前,我們需要介紹另外兩個引數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的解釋能力越強,這個模型對資料擬合的也較好。
程式碼部分
點選檢視程式碼
只說這個幾種衡量標準的原始程式碼。
MSE
y_preditc=reg.predict(x_test) #reg是訓練好的模型
mse_test=np.sum((y_preditc-y_test)**2)/len(y_test) #跟數學公式一樣的epredict(x_test) #reg是訓練好的模型
RMSE
rmse_test=mse_test ** 0.5_test=mse_test ** 0.5
MAE
mae_test=np.sum(np.absolute(y_preditc-y_test))/len(y_test)
R Squared
1- mean_squared_error(y_test,y_preditc)/ np.var(y_test)
from sklearn.metrics import mean_squared_error #均方誤差from sklearn.metrics import mean_absolute_error #平方絕對誤差from sklearn.metrics import r2_score#R square#呼叫
mean_squared_error(y_test,y_predict)
mean_absolute_error(y_test,y_predict)
r2_score(y_test,y_predict).metrics import mean_absolute_error #平方絕對誤差from sklearn.metrics import r2_score#R square#呼叫
mean_squared_error(y_test,y_predict)
mean_absolute_error(y_test,y_predict)
r2_score(y_test,y_predict)