我使用的是LightGBMRanker的mmlspark版本(但同样的问题似乎也适用于LightGBMClassifier等(-在实例化估计器时,似乎没有办法设置;n_估计器";LightGBM的正常(非火花(版本中存在的参数。
这基本上设置了集合中的树数。。有人知道如何做到这一点吗,或者这是不是以某种方式自动设置的?
谢谢!
根据mmlspark
的测试,在Scala中可以使用实例方法.setNumIterations()
。
def baseModel: LightGBMRanker = {
new LightGBMRanker()
.setLabelCol(labelCol)
.setFeaturesCol(featuresCol)
.setGroupCol(queryCol)
.setDefaultListenPort(getAndIncrementPort())
.setRepartitionByGroupingColumn(false)
.setNumLeaves(5)
.setNumIterations(10)
}
参考:https://github.com/Azure/mmlspark/blob/36ee274e93e1f7a07fc863061ad726e5ca5b49ee/src/test/scala/com/microsoft/ml/spark/lightgbm/split2/VerifyLightGBMRanker.scala#L62
如果您通过pyspark
在Python中使用mmlspark
,则可以在估计器的构造函数中设置numIterations
。
from mmlspark.lightgbm import LightGBMRanker
features_col = 'features'
query_col = 'query'
label_col = 'labels'
lgbm_ranker = LightGBMRanker(
labelCol=label_col,
featuresCol=features_col,
groupCol=query_col,
predictionCol='preds',
leafPredictionCol='leafPreds',
featuresShapCol='importances',
repartitionByGroupingColumn=True,
numLeaves=32,
numIterations=200,
evalAt=[1, 3, 5],
metric='ndcg'
)
参考:https://github.com/Azure/mmlspark/blob/663d9650d3884ece260a457d9b016088380c2cb9/notebooks/samples/LightGBM%20-%20概述.ipynb
在LightGBM中,n_estimators
和n_iterations
的含义相同,如https://lightgbm.readthedocs.io/en/latest/Parameters.html#num_iterations.