2016-08-24 3 views
1

Je voudrais lancer une implémentation naïve de la recherche de grille avec MLlib mais je suis un peu confus quant au choix de la «meilleure» gamme de paramètres. Apparemment, je ne veux pas gaspiller trop de ressources pour une combinaison de paramètres qui ne donnera probablement pas un modèle amélioré. Des suggestions de votre expérience?Meilleure plage de paramètres dans la recherche de grille?

plages de paramètres de jeu:

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()) 

effectuer une recherche de grille:

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) 

} 

Répondre

0

Essayez une recherche Grille aléatoire en utilisant randomizedsearchcv avec une gamme de l'ordre de grandeur pour les hyperparams impliqués.

+0

Comme il semble que vous êtes le premier à répondre à cette question (après 1,5 ans) ... c'est assez bon pour moi, vous postez cela comme une réponse; Peu importe le manque de rep. pour des commentaires normaux. Cette réponse devrait normalement être faite comme un commentaire car elle n'implique pas de lignes de code. Garde cela à l'esprit. Profitez de SO ;-) – ZF007