Pyspark线性回归梯度下降CrossValidation

时间:2017-10-30 02:53:26

标签: python apache-spark pyspark apache-spark-ml

我正在尝试在pyspark中的SGD模型上执行交叉验证,我正在使用来自LinearRegressionWithSGD的{​​{1}},pyspark.mllib.regressionParamGridBuilder CrossValidator库。

从Spark网站关注documentation之后,我希望运行它会起作用

pyspark.ml.tuning

但是lr = LinearRegressionWithSGD() pipeline=Pipeline(stages=[lr]) paramGrid = ParamGridBuilder()\ .addGrid(lr.stepSize, Array(0.1, 0.01))\ .build() crossval = CrossValidator(estimator=pipeline,estimatorParamMaps= paramGrid, evaluator=RegressionEvaluator(), numFolds=10) 没有属性LinearRegressionWithSGD()(尝试过其他没有运气的人)。

我可以将lr设置为stepSize但是我无法将SGD用于我的模型并进行交叉验证。

scala中有LinearRegression方法,但我不知道如何从pyspark访问

1 个答案:

答案 0 :(得分:0)

您可以使用LinearRegressionWithSGD中的步骤参数来定义步长,但由于混合了不兼容的库,因此无法使代码生效。不幸的是,我不知道如何使用SGD优化与ml库进行交叉验证,我想知道自己,但是您正在混合库pyspark.mlpyspark.mllib。具体而言,您不能将LinearRegressionWithSGD与pyspark.ml库一起使用。您必须使用pyspark.ml.regression.LinearRegression

好消息是,您可以将pyspark.ml.regression.LinearRegression的求解器属性设置为使用' gd'。因此,您可以设置' gd'的参数。优化器以SGD运行,但我不确定求解器文档在哪里或如何设置求解器属性(例如批量大小)。 api显示调用Param()的LinearRegression对象,但我不确定它是否正在使用pyspark.mllib优化器。如果有人知道如何设置求解器属性,那么可以通过允许使用Pipeline,ParamGridBuilder和CrossValidation ml软件包来回答您的问题,使用LinearRegression进行模型选择,利用SGD优化进行参数调整。

尊敬, 谢恩