sklearn【R²】决定系数,原理及代码学习!

CSDN 2024-06-12 09:35:02 阅读 95

一、R² 介绍

决定系数(Coefficient of Determination),又称R方,是衡量回归模型拟合优度的统计量,用来反映回归模型对样本数据的拟合程度。

具体计算步骤如下:

收集数据:首先需要收集自变量和因变量的观测数据,确保数据的准确性和完整性。建立回归方程:根据收集到的数据,建立回归方程。回归方程的形式可以根据实际情况进行选择,常见的有线性回归、多项式回归等。计算预测值:利用建立的回归方程,计算因变量的预测值。预测值可以通过代入自变量的观测值来计算。计算残差:计算每个观测值的残差,即观测值与预测值之间的差异。残差可以用来评估回归模型的拟合优度。计算SSE和SST:SSE是残差平方和,即所有观测值的残差平方的总和;SST是总平方和,即因变量的实际观测值与平均值的差的平方的总和。计算决定系数:根据公式R² = 1 - SSE/SST,将SSE和SST代入公式,即可计算出决定系数R²。

决定系数R²能够量化模型对数据的拟合程度,有助于我们了解模型的预测能力并进行相应的改进。但需要注意的是,决定系数只是评估模型性能的一个指标,我们还需要综合考虑其他指标和实际情况来全面评估模型的性能。

其计算公式为:

R 2 = 1 − S S E / S S T R^2=1-SSE/SST R2=1−SSE/SST

其中:

SSE为残差平方和,表示回归模型的拟合误差。SST为总平方和,表示总体数据的离散程度。

R²的取值范围从0到1,越接近1表示模型对数据的拟合程度越好。

残差平方和(SSE)

残差平方和(Sum of Squared Errors,SSE)是回归模型评估中的一个重要指标,它表示模型预测值与实际观测值之间差异的平方和。残差平方和的计算公式如下:

S S E = ∑ i = 1 n ( y i − y ^ i ) 2 SSE = \sum_{i=1}^{n} (y_i - \hat{y}_i)^2 SSE=∑i=1n​(yi​−y^​i​)2

其中:

n n n 是样本点的数量。 y i y_i yi​ 是第 i i i 个样本点的实际观测值。 y ^ i \hat{y}_i y^​i​ 是模型对第 i i i 个样本点的预测值。 ( y i − y ^ i ) (y_i - \hat{y}_i) (yi​−y^​i​) 是第 i i i 个样本点的残差,即实际观测值与预测值之间的差异。

残差平方和越小,说明模型的预测值与实际观测值越接近,模型的拟合效果越好。相反,如果残差平方和较大,则说明模型的预测值与实际观测值之间存在较大的偏差,模型的拟合效果较差。

回归平方和(SSR)

SSR(回归平方和,Sum of Squares for Regression)的计算方式基于模型预测值与因变量平均值之间的差异。SSR衡量了回归模型能够解释的因变量变异的程度。

SSR的计算公式可以表示为:

S S R = ∑ i = 1 n ( y ^ i − y ˉ i ) 2 SSR = \sum_{i=1}^{n} (\hat{y}_i - \bar{y}_i )^2 SSR=∑i=1n​(y^​i​−yˉ​i​)2

其中:

y ^ i \hat{y}_i y^​i​ 是模型对第 i i i 个样本点的预测值。 y ˉ i \bar{y}_i yˉ​i​是因变量的平均值(即所有观测值的均值)。

总平方和(SST)

SST总平方和(Sum of Squares Total)在回归分析中表示原始数据和原始数据均值(mean)之差的平方和,其计算公式如下:

S S T = S S E + S S R SST = SSE + SSR SST=SSE+SSR

其中:

SSE代表误差平方和(Sum of Squares for Error),其计算的是预测数据和原始数据之差的平方和。SSR代表回归平方和(Sum of Squares for Regression),其计算的是预测数据与原始数据均值之差的平方和。

因此,SST总平方和是误差平方和与回归平方和的总和,它衡量了所有观测值与其均值的离散程度。这个值越大,说明数据点之间的差异越大;值越小,则说明数据点越集中。

此外,SST也可以表示为每个组内的离差平方和的总和,即SST=SS1+SS2+…+SSn,其中SS1、SS2、…、SSn代表每个组内的离差平方和。

请注意,SST的具体计算公式可能因不同的应用场景和统计软件而有所差异。在实际应用中,建议参考所使用的统计软件或相关领域的专业文献来获取最准确的计算公式和解释。

二、案例学习

在Python的机器学习库sklearn中,计算决定系数非常简单。下面我们将通过一个示例来展示如何使用sklearn计算决定系数。

首先,导入必要的库和加载数据集。在这个例子中,我们将使用sklearn自带的波士顿房价数据集。

from sklearn.model_selection import train_test_splitfrom sklearn.metrics import mean_squared_errorfrom sklearn.linear_model import LinearRegressionfrom sklearn.datasets import fetch_california_housingfrom sklearn.metrics import mean_absolute_error from sklearn.metrics import r2_score import pandas as pdimport numpy as nphousing = fetch_california_housing()# 加载房价数据集X = housing.datay = housing.target# 划分训练集和测试集X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

接着,我们创建一个线性回归模型,并使用训练数据进行训练。

# 创建线性回归模型model = LinearRegression()# 使用训练数据进行训练model.fit(X_train, y_train)

训练完成后,我们使用模型对测试集进行预测,并计算决定系数。

# 对测试集进行预测y_pred = model.predict(X_test)# 计算决定系数R²r2 = r2_score(y_test, y_pred)print(f'Coefficient of Determination (R²): { r2}')# Coefficient of Determination (R²): 0.5757877060324524

在上面的代码中,我们使用r2_score函数来计算决定系数。该函数接受两个参数:真实的目标值y_test和模型预测的值y_pred。函数返回的值就是决定系数R²。

决定系数R²的值越接近1,说明模型对数据的拟合效果越好。如果R²的值很低,可能意味着模型没有很好地捕捉到数据中的关系,或者所选的特征并不适合用于预测目标变量。

三、总结

需要注意的是,决定系数只是评估模型性能的一个指标,它并不能完全代表模型的优劣。在实际应用中,我们通常需要综合考虑多个指标,如均方误差(MSE)、平均绝对误差(MAE)等,来全面评估模型的性能。此外,还需要考虑模型的复杂度、可解释性等因素。

通过调整模型的超参数或选择不同的模型类型,我们可以尝试优化模型的决定系数R²,从而提高模型的拟合能力和预测精度。在回归问题的建模过程中,计算决定系数是一个重要的步骤,它有助于我们了解模型的性能并进行相应的改进。



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。