我正在学习使用Spark
的DataFrames
API在scala
中构建机器学习模型,并想知道可以用于调优模型的所有超参数列表。通过目前的搜索,我发现了一些LinearRegression
的超参数,如下所示:
- setMaxIter
- setRegParam
- setElasticNetParam
这些超参数可以按以下方式使用:
import org.apache.spark.ml.regression.LinearRegressionval 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