我正在学习使用Spark中的DataFrames scala API构建机器学习模型,并想知道可用于调整模型的所有超参数的列表。通过到目前为止的搜索,我发现了LinearRegression的一些超参数,例如:


setMaxIter
setRegParam
setElasticNetParam


可以通过以下方式使用:

import org.apache.spark.ml.regression.LinearRegression

val lr = new LinearRegression().setMaxIter(100).setRegParam(0.3).setElasticNetParam(0.8)
val lrModel = lr.fit(training)


Spark中是否有文档页面或方法可以列出所有可调超参数?就像是:

LinearRegression.getParamList()
RandomForest.getParamList()

最佳答案

检查ml-tuning,利用ML-Pipelines的优势,在其中将选择的特征从ParamGridBuilder传递到CrossValidator,然后运行管道以估计哪个组的性能最佳,如下例:

val lr = new LinearRegression()
.setMaxIter(10)

val paramGrid = new ParamGridBuilder()
.addGrid(lr.regParam, Array(0.1, 0.01))
.addGrid(lr.fitIntercept)
.addGrid(lr.elasticNetParam, Array(0.0, 0.5, 1.0))
.build()

val trainValidationSplit = new TrainValidationSplit()
.setEstimator(lr)
.setEvaluator(new RegressionEvaluator)
.setEstimatorParamMaps(paramGrid)
.setTrainRatio(0.8)

val model = trainValidationSplit.fit(training)


进一步,您可以探索scala文档ml.param,有一种方法explainParam(),但我没有使用它api/scala/pipeline

08-24 13:46