均方根误差与精度线性回归

Posted

技术标签:

【中文标题】均方根误差与精度线性回归【英文标题】:Root Mean Squared Error vs Accuracy Linear Regression 【发布时间】:2020-09-07 12:27:07 【问题描述】:

我使用此数据集https://archive.ics.uci.edu/ml/datasets/Student+Performance 构建了一个简单的线性回归模型来预测学生的最终成绩。

虽然我的准确性非常好,但错误似乎很大。

我不确定是我没有正确理解错误的含义,还是我在代码中犯了一些错误。我认为对于 92 的准确度,误差应该更小,更接近于 0。

这是我的代码:

data = pd.read_csv("/Users/.../student/student-por.csv", sep=";")

X = np.array(data.drop([predict], 1))
y = np.array(data[predict]) 

x_train, x_test, y_train, y_test = sklearn.model_selection.train_test_split(X, y, test_size = 0.1, random_state=42)

linear = linear_model.LinearRegression()

linear.fit(x_train, y_train)

linear_accuracy = round(linear.score(x_test, y_test) , 5)

linear_mean_abs_error = metrics.mean_absolute_error(y_test, linear_prediction)
linear_mean_sq_error = metrics.mean_squared_error(y_test, linear_prediction)
linear_root_mean_sq_error = np.sqrt(metrics.mean_squared_error(y_test, linear_prediction))

我是否在代码中犯了任何错误,或者在这种情况下错误确实有意义?

【问题讨论】:

0.78 的 RMSE 是好的。这就是您获得 92% 准确度的 RMSE。 @vbhargav875 准确率仅用于分类问题,在回归问题中没有意义。与准确度(百分比)相反,没有办法说 RMSE、MSE 或 MAE 的特定值本身是否“好”,因为它们总是严重依赖于因变量的规模. 【参考方案1】:

sklearn 线性回归中的准确度指标是 R^2 指标。它基本上告诉您模型预测变量解释的因变量变化的百分比。 0.92 是一个很好的分数,但这并不意味着您的错误将为 0。我查看了您的工作,似乎您使用了所有数字变量作为预测变量,而您的目标是 G3。代码看起来很好,结果也很准确。在回归任务中,很难得到 0 个错误。请让我知道,如果你有任何问题。干杯

【讨论】:

“准确度”一词本身仅用于分类问题,不用于回归问题。关于性能指标,在预测任务中,MSE、RMSE 和 MAE 等指标总是优于 R^2;请参阅scikit-learn & statsmodels - which R-squared is correct?中自己答案的最后一部分@

以上是关于均方根误差与精度线性回归的主要内容,如果未能解决你的问题,请参考以下文章

机器学习100天:012 回归模型评估指标Python实现

机器学习100天:012 回归模型评估指标Python实现

线性回归——简单线性回归

训练线性回归模型 --- “闭式”解方法梯度下降(GD)

在线性回归分析中,若检验的结果为不显著,可能原因是啥

机器学习基石:09 Linear Regression