计算两列R之间的错误率

时间:2016-05-15 11:24:42

标签: 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循环?

2 个答案:

答案 0 :(得分:1)

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

出于绘图的目的,我现在使用一个稍微大一些的示例,包含更多样本,因为它更好地理解(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

与上述模型训练的结果略有不同,结果是利用重复的交叉验证(因此,指标列在&#34;重新取样结果&#34;那里)。

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

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

plot(predicted-actual~actual)
abline(0,0)
PS:如果你不熟悉回归/分类错误测量和强大的ML程序,我强烈建议花一些时间来阅读这些主题 - 它可能会为你节省大量的时间。我个人会推荐Max Kuhn(R的caret包的维护者)和Kjell Johnson的Applied Predictive Modeling,因为它易于阅读且非常实用。

答案 1 :(得分:0)

如果你想计算剩余的平方和,像lm()这样的函数已经为你输出了这个信息。根据您用于建模数据的功能,访问RSS术语会有所不同。

根据您的data_frame,您可以像这样轻松编写RSS公式

datf <- as.data.frame(your_matix)
datf$difsq <- (datf$Real_Values - datf$Predicted_Values)^2
rss <- sum(datf$difsq)