验证测试数据的准确性

时间:2019-07-26 10:14:07

标签: r machine-learning linear-regression test-data

我已将模型与训练数据拟合,并使用r平方测试了模型的准确性。

但是,我想用测试数据来测试模型的准确性,该怎么做?

我的预测值是连续的。对此非常陌生,因此欢迎提出建议。

LR_swim <- lm(racetime_mins ~ event_month +gender + place +
             clocktime_mins +handicap_mins +
              Wind_Speed_knots+ 
             Air_Temp_Celsius +Water_Temp_Celsius +Wave_Height_m,
               data = SwimmingTrain) 
           family=gaussian(link = "identity")
summary(LR_swim)
rsq(LR_swim) #Returns-  0.9722331

#Predict Race_Time Using Test Data
 pred_LR <- predict(LR_swim, SwimmingTest, type ="response")
#Add predicted Race_Times back into the test dataset.
SwimmingTest$Pred_RaceTime <- pred_LR

1 个答案:

答案 0 :(得分:0)

首先,正如评论中已经指出的那样,术语准确性实际上是为分类问题保留的。您实际上指的是模型的性能。事实是,对于回归问题(例如您的问题),有几种可用的绩效指标。

无论好坏,R ^ 2仍然是几种实现中的标准度量;不过,记住我所说的elsewhere可能是有帮助的:

  

整个R平方的概念实际上直接来自统计学的世界,统计学的重点是解释性模型,而在机器学习的上下文中它很少使用,而重点是预测性模型;至少是AFAIK,除了一些非常入门的课程外,我从未(我的意思是从没 ...)见过预测性建模问题,其中R平方用于任何类型的绩效评估;流行的机器学习介绍(例如Coursera的Andrew Ng的Machine Learning)也不用不理会它,这不是偶然的。并且,如上文Github thread所述(强调):

     
    

尤其是在使用 test 集时,我对R ^ 2的含义有点不清楚。

  
     

我当然同意。

还有其他一些性能指标可以说更适合于预测性任务,例如您的任务;而且大多数都可以用简单的R代码行实现。因此,对于一些虚拟数据:

preds <- c(1.0, 2.0, 9.5)
actuals <- c(0.9, 2.1, 10.0)

mean squared error (MSE)很简单

mean((preds-actuals)^2)
# [1] 0.09

mean absolute error (MAE)

mean(abs(preds-actuals))
# [1] 0.2333333

root mean squared error (RMSE)只是MSE的平方根,即:

sqrt(mean((preds-actuals)^2))
# [1] 0.3

可以说,这些措施对于评估未见数据的效果更为有用。最后两个具有与原始数据相同的比例(MSE则不然)的另一个优势。