如何在 spark MLlib 中对 LogisticRegressionWithLBFGS 使用 L1 正则化
How to use L1 Regularization for LogisticRegressionWithLBFGS in spark MLlib
official documentation says即:默认使用L2正则化
如何使用 L1?
在 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)
official documentation says即:默认使用L2正则化
如何使用 L1?
在 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)