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