【问题标题】:Best range of parameters in grid search?网格搜索中的最佳参数范围?
【发布时间】:2016-08-24 10:56:04
【问题描述】:

我想用 MLlib 运行一个简单的网格搜索实现,但我对选择“最佳”参数范围有点困惑。显然,我不想为可能不会提供改进模型的参数组合浪费太多资源。根据您的经验有什么建议吗?

设置参数范围:

val intercept   : List[Boolean]  = List(false)
val classes     : List[Int]      = List(2)
val validate    : List[Boolean]  = List(true)
val tolerance   : List[Double]   = List(0.0000001 , 0.000001 , 0.00001 , 0.0001 , 0.001 , 0.01 , 0.1 , 1.0)
val gradient    : List[Gradient] = List(new LogisticGradient() , new LeastSquaresGradient() , new HingeGradient())
val corrections : List[Int]      = List(5 , 10 , 15)
val iters       : List[Int]      = List(1 , 10 , 100 , 1000 , 10000)
val regparam    : List[Double]   = List(0.0 , 0.0001 , 0.001 , 0.01 , 0.1 , 1.0 , 10.0 , 100.0)
val updater     : List[Updater]  = List(new SimpleUpdater() , new L1Updater() , new SquaredL2Updater())

执行网格搜索:

val combinations = for (a <- intercept;
                        b <- classes;
                        c <- validate;
                        d <- tolerance;
                        e <- gradient;
                        f <- corrections;
                        g <- iters;
                        h <- regparam;
                        i <- updater) yield (a,b,c,d,e,f,g,h,i)

for( ( interceptS , classesS , validateS , toleranceS , gradientS , correctionsS , itersS , regParamS , updaterS ) <- combinations.take(3) ) {

      val lr : LogisticRegressionWithLBFGS = new LogisticRegressionWithLBFGS().
            setIntercept(addIntercept=interceptS).
            setNumClasses(numClasses=classesS).
            setValidateData(validateData=validateS)

      lr.
            optimizer.
            setConvergenceTol(tolerance=toleranceS).
            setGradient(gradient=gradientS).
            setNumCorrections(corrections=correctionsS).
            setNumIterations(iters=itersS).
            setRegParam(regParam=regParamS).
            setUpdater(updater=updaterS)

}

【问题讨论】:

    标签: machine-learning apache-spark-mllib grid-search


    【解决方案1】:

    尝试使用 randomsearchcv 进行随机网格搜索,范围为所涉及的超参数的数量级。

    【讨论】:

    • 看来你是第一个回答这个问题的人(经过 1.5 年的时间)......你把这个作为答案发布对我来说已经足够了;不管缺少代表。用于正常评论。这个答案通常应该作为注释完成,因为它不涉及代码行。记在脑子里。尽情享受吧 ;-)
    猜你喜欢
    • 2021-01-23
    • 2021-10-21
    • 2021-10-07
    • 2019-12-23
    • 2021-05-16
    • 1970-01-01
    • 2020-09-19
    • 2020-10-06
    • 1970-01-01
    相关资源
    最近更新 更多