Model selection模型选择

  ML中的一个重要任务是模型选择,或使用数据为给定任务找到最佳的模型或参数。 这也称为调优。 可以对诸如Logistic回归的单独Estimators进行调整,或者对包括多个算法,特征和其他步骤的整个Pipeline进行调整。 用户可以一次调整整个Pipeline,而不必单独调整Pipeline中的每个元素。

MLlib支持使用CrossValidator和TrainValidationSplit等工具进行模型选择。这些工具需要以下items:
    Estimator:要调整的algorithm or Pipeline
    Set of ParamMaps:可以选择的参数,有时称为“parameter grid”
    Evaluator:衡量拟合模型对测试数据支持的有多好

在高级别,这些模型选择工具的工作如下:

将输入数据分成单独的训练和测试数据集。
    对于每个(训练,测试)对,遍历ParamMap的集合:
        对于每个ParamMap,它们使用这些参数拟合Estimator,获得拟合的Model,并使用Evaluator评估Model的性能。
    选择由性能最佳的参数集合生成的模型。

  Evaluator可以是用于回归问题的RegressionEvaluator,用于二进制数据的BinaryClassificationEvaluator,用于多类问题的MulticlassClassificationEvaluator。每个evaluator中的“setMetricName方法”是一个用于选择最佳ParamMap的默认度量。

为了帮助构造parameter grid,用户可以使用ParamGridBuilder实用程序。

Cross-Validation交叉验证
  CrossValidator开始于将数据集分割为一组folds,用作单独的训练和测试数据集。 例如,k = 3 folds,CrossValidator将生成3个“数据集对(训练,测试)”,其中每个数据集使用2/3的数据进行训练和1/3的测试。 为了评估特定的ParamMap,通过在3个不同“数据集对”上拟合Estimator,CrossValidator为3个Models计算平均评估度量。

  在识别最好的ParamMap后,CrossValidator最终使用最好的ParamMap和整个数据集重新匹配Estimator。

  注意,在parameters grid上的CrossValidator是非常耗费资源。 然而,它也是用于选择参数的好的公认的方法,比启发式手动调优在统计上更好。

Train-Validation Split

  除了CrossValidator,Spark还提供TrainValidationSplit用于超参数调优。 TrainValidationSplit只评估“每个参数的组合”一次,而不是在CrossValidator的情况下k次。 因此,TrainValidationSplit耗费的资源比CrossValidator少一些,但是当训练数据集不够大时,不会产生可靠的结果。

  与CrossValidator不同,TrainValidationSplit创建一个“数据集对(训练,测试)”。 它使用trainRatio参数将数据集拆分为这两个部分。 例如,trainRatio = 0.75

,TrainValidationSplit将生成训练和测试数据集对,其中75%的数据用于训练,25%用于验证。

  像CrossValidator,TrainValidationSplit最终使用最好的ParamMap和整个dataset拟合Estimator。

最新文章

  1. C# 读取EXCEL文件的三种经典方法
  2. manifest中读取<meta-data>
  3. C 风格字符串和strcpy方法的实现
  4. Orleans 高级特性-目录
  5. EF+MVC+cod First项目性能优化总结
  6. CSS培训机构
  7. Oracle字符集的查看查询和Oracle字符集的设置修改
  8. 汇编-显示我放到AL中的数值
  9. SS+FinalSpeed终极教程[转]
  10. 远程调试Android手机上网页的记录
  11. java FTP各种操作
  12. Jquery ajax $getScript()和$getJSON和JSONP
  13. AJP认证信息爆破ajp_brute
  14. RequireJs的理解
  15. C#简单操作MongoDB
  16. Python获取间隔时间段的时间戳数据
  17. R实现的最小二乘lsfit函数学习
  18. gis笔记 wms wfs等OGC标准
  19. idea开启jquery提示及如何找到学习目标
  20. 使用vue的mixins混入实现对正在编辑的页面离开时提示

热门文章

  1. Gson全解析(中)-TypeAdapter的使用
  2. webservice接口与HTTP接口学习笔记
  3. 面试题:编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 ""。(c++实现)
  4. SpringBoot(八):系统错误统一拦截器
  5. grid - 网格项目跨行或跨列
  6. storm杂谈之Why use netty as transport instead of zeromq
  7. Python中调用自然语言处理工具HanLP手记
  8. Attempt to present <TestViewController2: 0x7fd7f8d10f30> on <ViewController: 0x7fd7f8c054c0> whose view is not in the window hierarchy!
  9. Nginx 访问日志配置
  10. 目标检测比赛---Google AI Open Images - Object Detection Track