11.5.7 模型评估

无论机器学习任务使用的是何种算法,模型评估都是端到端机器学习流水线的一个重要环节。

许多机器学习任务可以使用不同的模型来应对,而且即使使用的是同一个算法,参数设置也可以带来不同的结果。
不仅如此,我们还要考虑模型对训练数据过度拟合的风险,因此你最好通过在另一个数据集上测试模型来对模型进行评估,而不是使用训练数据集。

MLlib 包含一组试验性模型评估函数,不过只能在Java 和 Scala 中使用。
这些函数在 mllib.evaluation 包中,根据问题的不同,它们在 BinaryClassificationMetrics 和 MulticlassMetrics 等这些不同的类中。

使用这些类,你可以从由(预测,事实)对组成的 RDD 上创建出一个 Metrics 对象,然后计算诸如精确率、召回率、接受者操作特性(ROC)曲线下的面积等指标。
这些方法应该运行在一个非训练集的测试集上(比如在训练前先划出 20% 的数据)。
可以使用 map() 函数将你的模型应用到测试数据集上,生成由(预测,事实)对组成的 RDD。