我已经用训练数据拟合了我的模型,并使用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
回答:
首先,正如评论中已经指出的,术语准确性实际上是为分类问题保留的。你实际上指的是模型的性能。事实上,对于回归问题(如你的问题),有几种这样的性能度量方法可用。
不管好坏,R^2仍然是许多实现中的标准度量;然而,可能有必要记住我在其他地方争论过的观点:
整个R平方的概念实际上直接来自统计学界,那里强调的是解释性模型,而在机器学习环境中,它几乎没有用武之地,那里的重点显然是预测性模型;至少据我所知,除了某些非常入门的课程之外,我从未(我是说从未…)见过使用R平方来进行任何形式性能评估的预测建模问题;这也不是偶然的,流行的机器学习介绍,如Andrew Ng在Coursera上的机器学习课程,甚至都没有提到它。正如在上面的Github线程中所指出的(强调增加):
特别是在使用测试集时,我不太清楚R平方意味着什么。
我完全同意这一观点。
有几种其他性能度量方法在你的预测任务中可能更合适;而且它们中的大多数都可以用一行R代码实现。所以,对于一些虚拟数据:
preds <- c(1.0, 2.0, 9.5)actuals <- c(0.9, 2.1, 10.0)
均方误差(MSE)简单地是
mean((preds-actuals)^2)# [1] 0.09
mean(abs(preds-actuals))# [1] 0.2333333
以及均方根误差(RMSE)只是MSE的平方根,即:
sqrt(mean((preds-actuals)^2))# [1] 0.3
这些度量方法在评估未见数据的性能时可能更有用。后两者还有一个额外的优势,它们与你的原始数据处于相同的尺度(MSE的情况并非如此)。