日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

深度研究:回归模型评价指标R2_score

發布時間:2023/12/13 综合教程 68 生活家
生活随笔 收集整理的這篇文章主要介紹了 深度研究:回归模型评价指标R2_score 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

預備知識

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

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

回歸平方和:SSR

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

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

殘差平方和:SSE

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

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

總離差平方和:SST
$$SST =SSR + SSE= sum_{i=1}^{n}(y_i - ar{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 - ar{y})^2}$$
進一步化簡
$$R^2 = 1 - frac{sumlimits_i(y_i - y_i)^2 / n}{sumlimits_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_{ ext{Adj}}=1-(1-R2)frac{n-p-1}{n-1}$$
n是樣本的個數,p是變量的個數

Reference

https://scikit-learn.org
https://zhuanlan.zhihu.com/p/36305931
https://www.jianshu.com/p/9ee85fdad150
https://blog.csdn.net/Dear_D/article/details/86144696
https://blog.csdn.net/shy19890510/article/details/79375062

總結

以上是生活随笔為你收集整理的深度研究:回归模型评价指标R2_score的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。