这一篇以理论内容为主。

我们做好了一个回归模型,那么该如何评价其效果呢?

模型效果的定量度量

当结果是数值时,描述预测能力最常用的指标是均方根误差(root mean square, RMSE),RMSE是MSE(均方误差)的平方根,MSE的计算方法时将残差(实际值减去预测值)平方、求和然后取平均。RMSE可解释为残差距离0的远近,或者实际值和预测值之间的平均距离。

另一个常用的度量是决定系数R2为0.8,可理解为:模型可解释结果变量总变异的80%。可通过先计算实际值和预测值的相关系数,然后平方即可得决定系数。需要注意,R^2是相关性的度量,不是准确性的度量!**

方差-偏差的权衡

对于建立的模型的来说,我们希望它能对新的数据作出很好的预测,但是往往我们的模型在测试集中的表现非常好,但是在新的数据中的表现却很差,这就是方差-偏差问题。

模型对于测试集表现非常棒,就是说偏差非常小,但是偏差越小,方差就会越大,也就是对于新的数据的预测能力越差,也就是存在过拟合问题!

一般来说,复杂的模型通常有着很高的方差,这会导致过拟合。另一方面,简单的模型通常会拟合不足(具有较高的偏差)

使用caret包计算R^2和RMSE

准备数据:

  1. observed <- c(0.22, 0.83, -0.12, 0.89, -0.23, -1.3, -0.15, -1.4,
  2. 0.62, 0.99, -0.18, 0.32, 0.34, -0.3, 0.04, -0.87,
  3. 0.55, -1.3, -1.15, 0.2)
  4. predicted <- c(0.24, 0.78, -0.66, 0.53, 0.70, -0.75, -0.41, -0.43,
  5. 0.49, 0.79, -1.19, 0.06, 0.75, -0.07, 0.43, -0.42,
  6. -0.25, -0.64, -1.26, -0.07)

计算残差:

  1. residualValues <- observed - predicted
  2. summary(residualValues)
  3. ## Min. 1st Qu. Median Mean 3rd Qu. Max.
  4. ## -0.9700 -0.4200 0.0800 -0.0310 0.2625 1.0100

简单画图看一下:

  1. axisRange <- extendrange(c(observed, predicted))
  2. plot(observed, predicted)
  3. abline(0, 1, col = "darkgrey", lty =2)

应用预测建模3:衡量回归模型的效果 - 图1

  1. plot(predicted, residualValues)
  2. abline(h = 0, col = "darkgrey", lty = 2)

应用预测建模3:衡量回归模型的效果 - 图2

计算:

  1. library(caret)
  2. ## 载入需要的程辑包:lattice
  3. ## 载入需要的程辑包:ggplot2
  4. R2(predicted, observed)
  5. ## [1] 0.5170123
  6. RMSE(predicted, observed)
  7. ## [1] 0.5234883