回归度量是用于评估回归模型性能的定量度量。它们提供有关回归模型拟合数据的程度以及预测结果变量的准确性的信息。
回归性能评估
下面是你应该知道的机器学习中的所有回归性能评估指标:
- 均方误差
- 均方根误差
- 平均绝对误差
- R平方
- 调整后的R平方
在理解这些回归性能评估指标之前,让我们训练一个回归模型,这样我们就可以逐个理解每个指标的含义和实现。
训练一个回归模型
让我们在糖尿病数据集上训练一个简单的回归模型:
from sklearn.datasets import load_diabetes
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
# Load the diabetes dataset
diabetes_data = load_diabetes()
# Select features and target variable
X = diabetes_data.data
y = diabetes_data.target
# Split the data into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Train a linear regression model
model = LinearRegression()
model.fit(X_train, y_train)
# Make predictions on the test set
y_pred = model.predict(X_test)
在上面的代码中,我们对糖尿病数据集使用了线性回归,将数据分为训练集和测试集,在训练数据上训练线性回归模型,然后使用训练好的模型对测试数据进行预测。它将使我们能够评估该模型在预测糖尿病患者疾病进展方面的性能。
现在,让我们来看看每个回归性能评估指标。
均方误差
均方误差通过计算每个预测值与其对应的实际值之间的平方差来工作。然后将这些差异平均以获得MSE分数。通过对差异进行平方,MSE强调了较大的误差,使其对离群值敏感。
均方误差的期望结果是获得较低的值,这表明回归模型将预测值与实际值紧密对齐。较低的MSE表明较好的准确性和较低的平均预测误差。以下是如何使用Python计算均方误差:
# Compute the Mean Squared Error
from sklearn.metrics import mean_squared_error
mse = mean_squared_error(y_test, y_pred)
print("Mean Squared Error:", mse)
输出
Mean Squared Error: 2900.193628493482
MSE分数量化了回归模型中预测值和实际值之间的均方差。在我们的例子中,MSE得分为2900.19表明,平均而言,模型做出的预测与实际值相差约2900.19平方单位。
均方根误差
RMSE的工作原理是计算预测值和实际值之间的均方根差的平方根。它捕捉了模型产生的典型误差大小,并提供了一个更可解释的度量。
均方根误差的期望结果是获得较低的值,这表明回归模型具有较小的预测误差,并且预测更准确。较低的RMSE表明模型更适合数据和更准确的预测。以下是如何使用Python计算均方根误差:
from sklearn.metrics import mean_squared_error
import numpy as np
mse = mean_squared_error(y_test, y_pred)
rmse = np.sqrt(mse)
print("Root Mean Squared Error:", rmse)
输出
Root Mean Squared Error: 53.85344583676593
RMSE得分为53.85表明,平均而言,模型预测偏离实际值约53.85个单位。它表明,需要进一步完善和评估的模型,以获得更准确的预测和提高回归模型的整体性能。
平均绝对误差
MAE计算预测值和实际值之间的绝对差的平均值。它捕捉了模型产生的典型误差大小,并提供了一个更可解释的度量。
平均绝对误差的期望结果是获得较低的值,这表明回归模型具有较小的预测误差,并且预测更准确。较低的MAE表明模型更适合数据和更准确的预测。以下是如何使用Python计算平均绝对误差:
from sklearn.metrics import mean_absolute_error
mae = mean_absolute_error(y_test, y_pred)
print("Mean Absolute Error:", mae)
输出
Mean Absolute Error: 42.79409467959994
MAE得分为42.79表明,平均而言,模型的预测值偏离实际值约42.79个单位。它表明,需要进一步完善和评估的模型,以获得更准确的预测和提高回归模型的整体性能。
R平方
R平方的工作原理是将预测值的变化与实际值的变化进行比较。它量化了回归模型所占的因变量总变异的比例。R平方的范围从0到1,值越大表示模型与数据的拟合越好。
R平方的期望结果是获得更高的值,接近1。值越大,表示因变量方差的较大比例由回归模型中的自变量解释。这表明模型更适合数据和更准确的预测。以下是如何使用Python计算R平方:
from sklearn.metrics import r2_score
r2 = r2_score(y_test, y_pred)
print("R-squared:", r2)
输出
R-squared: 0.4526027629719195
R平方得分为0.45表明回归模型解释了因变量中约45%的变异。它表明,需要进一步调查和可能的改进模型,以实现更高程度的解释,提高其整体性能。
调整后的R平方
调整后的R平方通过惩罚模型中不必要的变量来工作。它通过合并独立变量的数量和样本大小来调整R平方值,从而对模型的拟合优度提供更保守的评估。
调整后的R平方的期望结果是获得更高的值,更接近1。较高的调整后R平方表明,即使在考虑了自变量的数量和潜在的过拟合之后,模型也可以解释因变量方差的较大比例。以下是如何使用Python计算调整后的R平方:
from sklearn.metrics import r2_score
r2 = r2_score(y_test, y_pred)
n = len(y_test)
k = 10 # Number of independent variables in the model
adjusted_r2 = 1 - ((1 - r2) * (n - 1) / (n - k - 1))
print("Adjusted R-squared:", adjusted_r2)
输出
Adjusted R-squared: 0.38242363001960145
考虑到模型的复杂性和自变量的数量,调整后的R平方得分为0.38表明回归模型解释了因变量中约38%的变异。需要对模型进行进一步分析和改进,以实现更高程度的解释,并提高回归模型的整体性能。