如何在Spark MLlib中对LogisticRegressionWithLBFGS使用L1正则化

时间:2016-06-05 07:59:53

标签: apache-spark machine-learning apache-spark-mllib apache-spark-ml

默认使用 L2正规化的official documentation says

我如何使用L1?

1 个答案:

答案 0 :(得分:4)

在MLLib中,您必须按如下方式设置优化程序更新程序:

import org.apache.spark.mllib.classification.LogisticRegressionWithLBFGS
import org.apache.spark.mllib.optimization.L1Updater

val lr: LogisticRegressionWithLBFGS = ???
val training: RDD[LabeledPoint] = ???

lr.optimizer.setUpdater(new L1Updater)
lr.run(training)

在ML中,您可以将setElasticNetParam设置为1.0:

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

val training: DataFrame = ???

val lr = new LinearRegression().setElasticNetParam(1.0)
lr.fit(training)