3.5 模型评估
在上一节,我们完成了模型估计任务。现在,对我们来讲是时候评估模型是否满足模型质量标准,以决定我们进行下一步的结果解释还是回到前面的阶段改善模型。
本节,我们将使用均方根误差(Root-Mean-Square Error,RMSE)和受试者工作特征(Receiver Operating Characteristic,ROC)曲线来评估我们模型的质量。计算RMSE和ROC曲线,我们需要使用测试数据而不是训练数据来评估模型。
3.5.1 快速评价
很多软件包为用户提供一些算法来快速评估模型。例如,在MLlib和R语言中,逻辑回归模型都提供混淆矩阵和误报数计算。
具体来讲,MLlib为我们提供confusionMatrix 和numFalseNegatives()这两个函数和一些算法来快速计算MES,如下所示:
此外,R语言为我们提供confusion.matrix函数。在R语言中,有很多工具能进行快速的图形绘制,用以快速地评估一个模型。
例如,我们可以绘制预测值和实际值,以及预测值的残差。
直观地说,比较预测值与实际值的方法是最容易的理解方法,并给了我们一个快速的模型评价。下面是为公司某一个产品计算的混淆矩阵,它显示了模型的合理性。详见右边的表格。
3.5.2 RMSE
在MLlib中,我们使用下面的代码计算RMSE:
除了上面的代码,MLlib的RegressionMetrics和RankingMetrics类中也为我们提供了一些用于计算RMSE的函数。
在R语言中,我们通过下面的代码计算RMSE:
在此之前,我们需要执行下面的命令来得到预测值:
所有估计模型的RMSE值计算完毕之后,我们将对它们进行比较,以评估线性回归模型、逻辑回归模型和决策树模型。在本例中,线性回归模型结果最优。
然后,我们对全部产品比较了RMSE值,并对一些产品的模型进行了优化提升。
关于获得RMSE值的其他例子,请访问:http://www.cakesolutions.net/teamblogs/spark-mllib-linear-regression-example-and-vocabulary。
3.5.3 ROC曲线
作为例子,我们将计算逻辑回归模型的ROC曲线。
在MLlib中,我们将估计的模型用在测试数据上,在得到了测试标签之后,我们就可以使用metrics.areaUnderROC()函数来计算ROC曲线。
更多关于使用MLlib计算ROC曲线的信息,请访问:http://web.cs.ucla.edu/ ~mtgarip/linear.html。
在R语言中,我们使用pROC包,执行下面的代码计算和绘制ROC曲线:
正如前面讨论的,计算了ROC曲线之后,我们就可以用它们在全部产品上比较逻辑回归和决策树模型。本例中,逻辑回归模型的表现优于决策树模型: