【转载】回归模型的评价指标
[轉(zhuǎn)載]https://www.cnblogs.com/nxf-rabbit75/p/10415812.html
分類問題的評價指標是準確率,那么回歸算法的評價指標就是MSE,RMSE,MAE、R-Squared。
分類問題的評價指標是準確率,那么回歸算法的評價指標就是MSE,RMSE,MAE、R-Squared。
MSE和MAE適用于誤差相對明顯的時候,大的誤差也有比較高的權(quán)重,RMSE則是針對誤差不是很明顯的時候;MAE是一個線性的指標,所有個體差異在平均值上均等加權(quán),所以它更加凸顯出異常值,相比MSE;
RMSLE: 主要針對數(shù)據(jù)集中有一個特別大的異常值,這種情況下,data會被skew,RMSE會被明顯拉大,這時候就需要先對數(shù)據(jù)log下,再求RMSE,這個過程就是RMSLE。對低估值(under-predicted)的判罰明顯多于估值過高(over-predicted)的情況(RMSE則相反)
1、MSE(Mean Squared Error)均方誤差
用 真實值-預測值 然后平方之后求和平均。線性回歸用MSE作為損失函數(shù)
1
2
y_preditc=reg.predict(x_test) #reg是訓練好的模型
mse_test=np.sum((y_preditc-y_test)**2)/len(y_test) #跟數(shù)學公式一樣的
2、RMSE(Root Mean Squared Error)均方根誤差
這不就是MSE開個根號么。有意義么?其實實質(zhì)是一樣的。只不過用于數(shù)據(jù)更好的描述。
例如:要做房價預測,每平方是萬元(真貴),我們預測結(jié)果也是萬元。那么差值的平方單位應(yīng)該是 千萬級別的。那我們不太好描述自己做的模型效果。怎么說呢?我們的模型誤差是 多少千萬?。。。。。。于是干脆就開個根號就好了。我們誤差的結(jié)果就跟我們數(shù)據(jù)是一個級別的,在描述模型的時候就說,我們模型的誤差是多少萬元。
1
rmse_test=mse_test ** 0.5
3、MAE (Mean absolute Error)平均絕對誤差
1
mae_test=np.sum(np.absolute(y_preditc-y_test))/len(y_test)
4、R-Squared
對于回歸類算法而言,只探索數(shù)據(jù)預測是否準確是不足夠的。除了數(shù)據(jù)本身的數(shù)值大小之外,我們還希望我們的模型能夠捕捉到數(shù)據(jù)的”規(guī)律“,比如數(shù)據(jù)的分布規(guī)律,單調(diào)性等等,而是否捕獲了這些信息并無法使用MSE來衡量。
來看這張圖,其中紅色線是我們的真實標簽,而藍色線是我們的擬合模型。這是一種比較極端,但的確可能發(fā)生的 情況。這張圖像上,前半部分的擬合非常成功,看上去我們的真實標簽和我們的預測結(jié)果幾乎重合,但后半部分的 擬合卻非常糟糕,模型向著與真實標簽完全相反的方向去了。對于這樣的一個擬合模型,如果我們使用MSE來對它 進行判斷,它的MSE會很小,因為大部分樣本其實都被完美擬合了,少數(shù)樣本的真實值和預測值的巨大差異在被均 分到每個樣本上之后,MSE就會很小。但這樣的擬合結(jié)果必然不是一個好結(jié)果,因為一旦我的新樣本是處于擬合曲 線的后半段的,我的預測結(jié)果必然會有巨大的偏差,而這不是我們希望看到的。所以,我們希望找到新的指標,除 了判斷預測的數(shù)值是否正確之外,還能夠判斷我們的模型是否擬合了足夠多的,數(shù)值之外的信息。
方差的本質(zhì)是任意一個值和樣本均值的差異,差異越大,這些值所帶的信息越多。在R2和EVS中,分子是真實值和預測值之差的差值,也就是我們的模型沒有捕獲到的信息總量,分母是真實標簽所帶的信息量,所以兩者都衡量 1 - 我們的模型沒有捕獲到的信息量占真實標簽中所帶的信息量的比例,所以,兩者都是越接近1越好
化簡上面的公式 ,分子分母同時除以m,那么分子就變成了我們的均方誤差MSE,下面分母就變成了方差
在R2中,分子是真實值和預測值之差的差值,也就是我們的模型沒有捕獲到的信息總量,分母是真實標簽所帶的信息量,所以兩者都衡量 1 - 我們的模型沒有捕獲到的信息量占真實標簽中所帶的信息量的比例,所以,兩者都是越接近1越好。
如果結(jié)果是 0,說明模型擬合效果很差;
如果結(jié)果是 1,說明模型無錯誤
三種調(diào)用方式:
第一種是直接從metrics中導入r2_score,輸入預測值和真實值后打分。
第二種是直接從線性回歸LinearRegression的接口score來進行調(diào)用。
第三種是在交叉驗證中,輸入"r2"來調(diào)用。EVS有兩 種調(diào)用方法,可以從metrics中導入,也可以在交叉驗證中輸入”explained_variance“來調(diào)用。
5.RMSLE(Root Mean Squared Logarithmic Error)
假如真實值為1000,若果預測值是600,那么RMSE=400, RMSLE=0.510
假如真實值為1000,若預測結(jié)果為1400, 那么RMSE=400, RMSLE=0.336
可以看出來在均方根誤差相同的情況下,預測值比真實值小這種情況的錯誤比較大,即對于預測值小這種情況懲罰較大。
當數(shù)據(jù)當中有少量的值和真實值差值較大的時候,使用log函數(shù)能夠減少這些值對于整體誤差的影響。
假設(shè)下圖:圖的最低點是真實值:3,從圖來看,越偏離真實值,誤差越大。但偏左邊和偏右邊誤差增長幅度不一樣,所以對于skew數(shù)據(jù)有效。
Scikit-learn中的各種衡量指標
1
2
3
4
5
6
7
from sklearn.metrics import mean_squared_error #均方誤差
from sklearn.metrics import mean_absolute_error #平方絕對誤差
from sklearn.metrics import r2_score#R square
#調(diào)用
mean_squared_error(y_test,y_predict)
mean_absolute_error(y_test,y_predict)
r2_score(y_test,y_predict)
總結(jié)
以上是生活随笔為你收集整理的【转载】回归模型的评价指标的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MAC修改python和pip版本
- 下一篇: goodness of classifi