Apache Spark机器学习3.5 模型评估

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曲线之后,我们就可以用它们在全部产品上比较逻辑回归和决策树模型。本例中,逻辑回归模型的表现优于决策树模型:

时间: 2024-09-23 23:04:00

Apache Spark机器学习3.5 模型评估的相关文章

《 Apache Spark机器学习.》导读

本节书摘来自华章出版社< Apache Spark机器学习.>一书中作者[美] 刘永川(Alex Liu) 著 闫龙川 高德荃 李君婷 译  前 言 作为数据科学家和机器学习专业人员,我们的工作是建立模型进行欺诈检测.预测客户流失,或者在广泛的领域将数据转换为洞见.为此,我们有时需要处理大量的数据和复杂的计算.因此,我们一直对新的计算工具满怀期待,例如Spark,我们花费了很多时间来学习新工具.有很多可用的资料来学习这些新的工具,但这些资料大多都由计算机科学家编写,更多的是从计算角度来描述.

Apache Spark机器学习3.4 模型估计

3.4 模型估计 在上一节完成了特征集选择,接下来需要评估模型参数.我们可以使用MLlib或者R语言进行评估,并准备分布式的计算. 为了简化操作,我们使用Databricks的作业特性.具体来讲,在Databricks环境中,前往"Job"菜单,创建作业,如下图所示:   接着,用户可以选择notebook来运行,指定集群并且调度作业.一旦作业被调度,用户可以监视作业的执行,并收集结果. 在3.2节,我们为选择的3个模型准备了一些代码.现在,需要修改这些代码和上一节讨论的最终特征集,以

Spark机器学习4·分类模型(spark-shell)

Spark机器学习 线性模型 逻辑回归--逻辑损失(logistic loss) 线性支持向量机(Support Vector Machine, SVM)--合页损失(hinge loss) 朴素贝叶斯(Naive Bayes) 决策树 0 准备数据 kaggle2.blob.core.windows.net/competitions-data/kaggle/3526/train.tsv sed 1d train.tsv > train_noheader.tsv 0 运行环境 cd /Users

Spark机器学习7·降维模型(scala&amp;python)

Spark机器学习 PCA(主成分分析法,Principal Components Analysis) SVD(奇异值分解法,Singular Value Decomposition) http://vis-www.cs.umass.edu/lfw/lfw-a.tgz 0 运行环境 export SPARK_HOME=/Users/erichan/Garden/spark-1.5.1-bin-hadoop2.6 cd $SPARK_HOME bin/spark-shell --name my_m

Apache Spark机器学习.1.5 Spark RDD和DataFrame

1.5 Spark RDD和DataFrame 本节关注数据以及Spark如何表示和组织数据.我们将介绍Spark RDD和DataFrame技术. 通过本节的学习,读者将掌握Spark的两个关键概念:RDD和DataFrame,并将它们应用于机器学习项目. 1.5.1 Spark RDD Spark主要以一种分布式项集合的形式进行数据抽象,称之为弹性分布式数据集(Resilient Distributed Dataset,RDD).RDD是Spark的关键创新,使其比其他框架计算更加快速和高效

Apache Spark机器学习.1.8 Spark notebook简介

1.8 Spark notebook简介 在本节中,我们首先讨论有关面向机器学习的notebook方法.然后,我们介绍R Markdown,以其作为一个成熟的notebook案例,最后介绍Spark中的R notebook. 学习完本节,读者将掌握notebook相关的方法和概念,并为将其用于管理和开发机器学习项目做好准备. 1.8.1 面向机器学习的notebook方法 notebook已经成为众人青睐的机器学习工具,因为该工具既能动态驱动,还具备可重复生成的特点. 大部分notebook接口

Spark机器学习6·聚类模型(spark-shell)

Spark机器学习 K-均值(K-mean)聚类 目的:最小化所有类簇中的方差之和 类簇内方差和(WCSS,within cluster sum of squared errors) fuzzy K-means 层次聚类(hierarchical culstering) 凝聚聚类(agglomerative clustering) 分列式聚类(divisive clustering) 0 运行环境 cd $SPARK_HOME bin/spark-shell --name my_mlib --p

Apache Spark机器学习.1.7 机器学习工作流示例

1.7 机器学习工作流示例 为了进一步了解学习机器学习的工作流,在这里让我们学习一些例子. 本书后续章节会研究风险建模.欺诈检测.客户视图.流失预测和产品推荐.对于诸如此类的项目,目标往往是确定某些问题的原因,或者建立一个因果模型.下面是使用工作流建立一个因果模型的一个例子. 1.检查数据结构,以确保更好地理解数据: 数据是横截面数据吗?是隐含着时间信息的合并数据吗? 是否使用了分类变量? 2.检查缺失值: 不知道或者忘记了一个答案可能会被记录为一个中立或特殊的类别 一些变量可能有很多缺失值 根

Apache Spark机器学习3.1 Spark整体视图

摘要 基于Spark的整体视图 通过第1章,我们建立起了Spark系统,根据第2章的内容,我们完成了数据准备.现在将进入Spark系统应用的新阶段:从数据中获得洞见. 根据Gartner等机构的研究结果,许多公司仅仅是因为缺乏其商业的整体视图而损失了大量的价值.本章我们将回顾机器学习的方法和获得商业整体视图的步骤,然后讨论Spark如何简单.快速地进行相关计算,同时通过一个实例,循序渐进地展示使用Spark从数据到整体视图的开发过程. Spark整体视图 整体视图的方法 特征准备 模型估计 模型