【问题标题】:Computing Error Rate between two columns R计算两列 R 之间的错误率
【发布时间】:2016-09-11 06:48:50
【问题描述】:

我有一个矩阵如下:

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 循环?

【问题讨论】:

  • 您能详细说明“错误率”是什么意思吗?例如MAPE ?

标签: r machine-learning regression prediction


【解决方案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

使用重复交叉验证导致上述模型训练的结果略有不同(因此指标列在“重采样结果”下)。

对于绘图部分:回归误差可以很容易地通过将预测值与实际目标变量进行绘图,和/或通过将误差与实际值进行绘图来可视化。完美拟合由这些图中的附加线表示。这也可以通过标准工具轻松实现:

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

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

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

    • 我是机器学习的新手,所以对验证方法不太了解,但是Real_Values实际上是已知值,Predicted_Values是基于5-fold-cross-validation预测的值,现在我想比较这些值,看看我的模型是否表现良好,我不太清楚哪种方法最适合这个目的,因为我还有两个其他预测模型中格式相同的其他表,所以我希望得到一些测量结果,以显示这些模型中哪一个是最好的!
    • RSS 通常用于比较线性模型。我没有很多机器学习经验,但也许这个链接可以帮助link
    猜你喜欢
    • 2020-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多