<form id="dlljd"></form>
        <address id="dlljd"><address id="dlljd"><listing id="dlljd"></listing></address></address>

        <em id="dlljd"><form id="dlljd"></form></em>

          <address id="dlljd"></address>
            <noframes id="dlljd">

              聯系我們 - 廣告服務 - 聯系電話:
              您的當前位置: > 關注 > > 正文

              動態焦點:RMSE、MAE、MSE 如何衡量模型效果好壞?

              來源:CSDN 時間:2023-02-10 13:35:29

              回歸模型的性能的評價指標主要有:RMSE(平方根誤差)、MAE(平均絕對誤差)、MSE(平均平方誤差)、R2_score。但是當量綱不同時,RMSE、MAE、MSE難以衡量模型效果好壞。這就需要用到R2_score,實際使用時,會遇到許多問題,今天我們深度研究一下。


              (資料圖片)

              預備知識

              搞清楚R2_score計算之前,我們還需要了解幾個統計學概念。

              若用$y_i$表示真實的觀測值,用$\bar{y}$表示真實觀測值的平均值,用$\hat{y_i}$表示預測值,則:

              回歸平方和:SSR

              $$SSR = \sum_{i=1}^{n}(\hat{y_i} - \bar{y})^2$$

              即估計值與平均值的誤差,反映自變量與因變量之間的相關程度的偏差平方和

              殘差平方和:SSE

              $$SSE = \sum_{i=1}^{n}(y_i-\hat{y_i} )^2$$

              即估計值與真實值的誤差,反映模型擬合程度

              總離差平方和:SST

              $$SST =SSR + SSE= \sum_{i=1}^{n}(y_i - \bar{y})^2$$

              即平均值與真實值的誤差,反映與數學期望的偏離程度

              R2_score計算公式

              R^2 score,即決定系數,反映因變量的全部變異能通過回歸關系被自變量解釋的比例。計算公式:

              $$R^2=1-\frac{SSE}{SST}$$

              $$R^2 = 1 - \frac{\sum_{i=1}^{n} (y_i - \hat{y}_i)2}{\sum_{i=1}{n} (y_i - \bar{y})^2}$$

              進一步化簡

              $$R^2 = 1 - \frac{\sum\limits_i(y_i - y_i)^2 / n}{\sum\limits_i(y_i - \hat{y})^2 / n} = 1 - \frac{RMSE}{Var}$$

              分子就變成了常用的評價指標均方誤差MSE,分母就變成了方差。

              對于$R^2$可以通俗地理解為使用均值作為誤差基準,看預測誤差是否大于或者小于均值基準誤差。

              R2_score = 1,樣本中預測值和真實值完全相等,沒有任何誤差,表示回歸分析中自變量對因變量的解釋越好。

              R2_score = 0。此時分子等于分母,樣本的每項預測值都等于均值。

              R2_score不是r的平方,也可能為負數(分子>分母),模型等于盲猜,還不如直接計算目標變量的平均值。

              r2_score使用方法

              根據公式,我們可以寫出r2_score實現代碼

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

              也可以直接調用sklearn.metrics中的r2_score

              sklearn.metrics.r2_score(y_true, y_pred, sample_weight=None, multioutput="uniform_average")

              #y_true:觀測值

              #y_pred:預測值

              #sample_weight:樣本權重,默認None

              #multioutput:多維輸入輸出,可選‘raw_values’, ‘uniform_average’, ‘variance_weighted’或None。默認為’uniform_average’;

              raw_values:分別返回各維度得分

              uniform_average:各輸出維度得分的平均

              variance_weighted:對所有輸出的分數進行平均,并根據每個輸出的方差進行加權。

              sklearn.metrics.r2_score使用方法

              import matplotlib.pyplot as plt

              import numpy as np

              from sklearn import datasets, linear_model

              from sklearn.metrics import r2_score

              #導入數據

              diabetes_X, diabetes_y = datasets.load_diabetes(return_X_y=True)

              diabetes_X = diabetes_X[:, np.newaxis, 2]

              #劃分測試集驗證集

              diabetes_X_train = diabetes_X[:-20]

              diabetes_X_test = diabetes_X[-20:]

              diabetes_y_train = diabetes_y[:-20]

              diabetes_y_test = diabetes_y[-20:]

              # 創建線性回歸模型

              regr = linear_model.LinearRegression()

              # 訓練模型

              regr.fit(diabetes_X_train, diabetes_y_train)

              # 預測

              diabetes_y_pred = regr.predict(diabetes_X_test)

              # 模型評價

              print("r2_score: %.2f"

              % r2_score(diabetes_y_test, diabetes_y_pred))

              # 繪制預測效果圖

              plt.scatter(diabetes_X_test, diabetes_y_test, color="black")

              plt.plot(diabetes_X_test, diabetes_y_pred, color="blue", linewidth=3)

              plt.xticks(())

              plt.yticks(())

              plt.show()

              r2_score: 0.47

              r2_score偏小,預測效果一般。

              注意事項

              1、$R^2$ 一般用在線性模型中(非線性模型也可以用)

              2、$R^2$不能完全反映模型預測能力的高低,某個實際觀測的自變量取值范圍很窄,但此時所建模型的R2 很大,但這并不代表模型在外推應用時的效果肯定會很好。

              3、數據集的樣本越大,R2越大,因此,不同數據集的模型結果比較會有一定的誤差,此時可以使用Adjusted R-Square (校正決定系數),能對添加的非顯著變量給出懲罰:

              $$R2_{\text{Adj}}=1-(1-R2)\frac{n-p-1}{n-1}$$

              n是樣本的個數,p是變量的個數

              Reference

              責任編輯:

              標簽:

              相關推薦:

              精彩放送:

              新聞聚焦
              Top 中文字幕在线观看亚洲日韩