Я пытался настроить гиперпараметры модели 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?