分類問題的評價指標是准確率,那么回歸算法的評價指標就是MSE,RMSE,MAE、R-Squared。下面一一介紹
均方誤差(MSE)
MSE (Mean Squared Error)叫做均方誤差。看公式
這里的y是測試集上的。
用 真實值-預測值 然后平方之后求和平均。
猛着看一下這個公式是不是覺得眼熟,這不就是線性回歸的損失函數嘛!!! 對,在線性回歸的時候我們的目的就是讓這個損失函數最小。那么模型做出來了,我們把損失函數丟到測試集上去看看損失值不就好了嘛。簡單直觀暴力!
均方根誤差(RMSE)
RMSE(Root Mean Squard Error)均方根誤差。
這不就是MSE開個根號么。有意義么?其實實質是一樣的。只不過用於數據更好的描述。
例如:要做房價預測,每平方是萬元(真貴),我們預測結果也是萬元。那么差值的平方單位應該是 千萬級別的。那我們不太好描述自己做的模型效果。怎么說呢?我們的模型誤差是 多少千萬?。。。。。。於是干脆就開個根號就好了。我們誤差的結果就跟我們數據是一個級別的可,在描述模型的時候就說,我們模型的誤差是多少萬元。
MAE
MAE(平均絕對誤差)
不用解釋了吧。
R Squared
上面的幾種衡量標准針對不同的模型會有不同的值。比如說預測房價 那么誤差單位就是萬元。數子可能是3,4,5之類的。那么預測身高就可能是0.1,0.6之類的。沒有什么可讀性,到底多少才算好呢?不知道,那要根據模型的應用場景來。
看看分類算法的衡量標准就是正確率,而正確率又在0~1之間,最高百分之百。最低0。如果是負數,則考慮非線性相關。很直觀,而且不同模型一樣的。那么線性回歸有沒有這樣的衡量標准呢?答案是有的。
那就是R Squared也就R方
光看這些東西很懵逼,其中分子是Residual Sum of Squares 分母是 Total Sum of Squares
那就看公式吧
懵逼(X2)
慢慢解釋。其實這個很簡單。
上面分子就是我們訓練出的模型預測的所有誤差。
下面分母就是不管什么我們猜的結果就是y的平均數。(瞎猜的誤差)
那結果就來了。
如果結果是0,就說明我們的模型跟瞎猜差不多。
如果結果是1。就說明我們模型無錯誤。
如果結果是0-1之間的數,就是我們模型的好壞程度。
如果結果是負數。說明我們的模型還不如瞎猜。(其實導致這種情況說明我們的數據其實沒有啥線性關系)
化簡上面的公式
分子分母同時除以m
那么分子就變成了我們的均方誤差MSE,下面分母就變成了方差。
代碼部分
具體模型代碼就不給了。只說這個幾種衡量標准的原始代碼。
MSE
y_preditc=reg.predict(x_test) #reg是訓練好的模型 mse_test=np.sum((y_preditc-y_test)**2)/len(y_test) #跟數學公式一樣的
- 1
- 2
RMSE
rmse_test=mse_test ** 0.5
- 1
MAE
mae_test=np.sum(np.absolute(y_preditc-y_test))/len(y_test)
- 1
R Squared
1- mean_squared_error(y_test,y_preditc)/ np.var(y_test)
- 1
scikit-learn中的各種衡量指標
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)