r - 计算两列之间的错误率 R

标签 r machine-learning regression prediction

我有一个矩阵如下:

Real_Values Predicted_Values
5.5         5.67
6.9         7.01
9.8         9.2
6.5         6.1
10          9.7
1.5         1.0
7.7         7.01

我希望计算模型的预测值和实际值之间的错误率,并且最好绘制一个图。我想知道 R 是否已经有一个包可以巧妙地完成此操作,以便我可以避免任何 for 循环?

最佳答案

您可以手动计算回归误差指标,如均方根误差 (RMSE) 或误差平方和 (SSE),如 @nathan-day 所指出的。大多数实现都会自动为您执行此操作,因此您通常不需要手动执行此操作。

出于绘图的目的,我现在将使用一个稍大一些的示例,其中包含更多样本,因为这样会更好地理解(R 附带的 iris 数据集)。首先,我们训练一个线性模型来从前 3 个特征中预测第 4 个特征,该模型已经计算了一些指标:

> model <- train(iris[,1:3], iris[,4], method = 'lm', metric = 'RMSE', trControl = trainControl(method = 'repeatedcv', number = 10, repeats = 10))
> print(model)
Linear Regression 

150 samples
3 predictors

No pre-processing
Resampling: Cross-Validated (10 fold, repeated 10 times) 

Summary of sample sizes: 134, 135, 135, 136, 134, 135, ... 

Resampling results

RMSE  Rsquared  RMSE SD  Rsquared SD
0.19  0.942     0.0399   0.0253   

现在也可以根据目标变量的预测值和实际值手动计算 RMSE、SSE 等:

predicted <- predict(model, iris[,1:3]) # perform the prediction 
actual <- iris[,4]
sqrt(mean((predicted-actual)**2)) # RMSE
sum((predicted-actual)**2) # SSE

与上述模型训练结果的细微差异是由于使用重复交叉验证而导致的(因此指标列在“重采样结果”下)。

对于绘图部分:通过根据实际目标变量绘制预测值和/或根据实际值绘制误差,可以轻松可视化回归误差。完美拟合由这些图中的附加线表示。这也可以使用标准工具轻松实现:

plot(predicted~actual)
abline(0,1)

plot(predicted-actual~actual)
abline(0,0)

PS:如果您不熟悉回归/分类误差测量和强大的机器学习程序,我强烈建议您花一些时间阅读这些主题 - 这可能会为您节省很多时间。我个人会推荐Applied Predictive Modeling由 Max Kuhn(R 中 caret 包的维护者)和 Kjell Johnson 编写,因为它易于阅读且非常实用。

关于r - 计算两列之间的错误率 R,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37237671/

相关文章:

machine-learning - 如何做出永远不会低估但可能高估的回归?

r - 使用 map 从 tibble 生成 tibble 列表并选择

r - 用 ggplot2 绘制多列

r - R 中 twitteR 的 SSL 证书失败

重复一个向量 3、2、1 次

r - PCA:princomp()如何工作,我可以用它为ARIMA提取变量吗?

python - 如何在 Flask 中缓存大型机器学习模型?

machine-learning - 现有功能的组合是否会产生新功能?

使用具有特定数据的 OLS 代码的 Python 多元线性回归?

machine-learning - 数据不完整的机器学习