Есть ли способ получить лучшее num_iteration из mmlspark (LightGBMRegressor) - PullRequest
0 голосов
/ 05 февраля 2020

Я пытался настроить гиперпараметры модели LightGBM на свече. Вот мой код:

from pyspark.ml.tuning import ParamGridBuilder, CrossValidator
from pyspark.ml.evaluation import RegressionEvaluator
from mmlspark.lightgbm import LightGBMRegressor

lgb = LightGBMRegressor(
  numIterations=500,
  learningRate=0.1,
  weightCol = "weight_new",           #adding weight
  labelCol = label,
  predictionCol = "pred_"+label
)
evaluator=RegressionEvaluator(predictionCol="pred_"+label, labelCol=label)
paramGrid = (ParamGridBuilder()
             .addGrid(lgb.numLeaves, [30,40,50])
             .build())
cv = CrossValidator(estimator=lgb, estimatorParamMaps=paramGrid, evaluator=evaluator, numFolds=3)
cvModel_lgb = cv.fit(train)

После подгонки модели я могу получить значение оценщика и наборы гиперпараметров через

cvModel_lgb.getEstimatorParamMaps()

[{Param(parent='LightGBMRegressor_4f1d672cfa46', name='numLeaves', doc='numLeaves: Number of leaves (default: 31)'): 30},
 {Param(parent='LightGBMRegressor_4f1d672cfa46', name='numLeaves', doc='numLeaves: Number of leaves (default: 31)'): 40},
 {Param(parent='LightGBMRegressor_4f1d672cfa46', name='numLeaves', doc='numLeaves: Number of leaves (default: 31)'): 50}]

и

cvModel_lgb.avgMetrics

[48.156237325735226, 48.156237325735226, 48.156237325735226]

Мой вопрос Как я могу узнать лучшее num_iteration, когда моя скорость обучения составляет 0,1? Я знаю, что в python, мы можем получить лучшие n_estimators, если учить обучения. Можем ли мы сделать то же самое в PySpark?

...