【问题标题】:Pyspark Linear Regression Gradient Descent CrossValidationPyspark 线性回归梯度下降交叉验证
【发布时间】:2017-10-30 02:53:26
【问题描述】:

我正在尝试在 pyspark 中对 SGD 模型执行交叉验证,我正在使用来自 pyspark.mllib.regressionLinearRegressionWithSGDParamGridBuilderCrossValidator 两者都来自 pyspark.ml.tuning 库。

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

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() 没有stepSize 的属性(尝试过其他人也没有运气)。

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

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

【问题讨论】:

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


    【解决方案1】:

    您可以使用来自LinearRegressionWithSGD 的 step 参数来定义您的步长,但这将不允许您的代码工作,因为您正在混合不兼容的库。不幸的是,我不知道如何使用 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 优化进行参数调整。

    尊敬的, 谢恩

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-06-20
      • 2019-10-09
      • 1970-01-01
      • 2016-10-22
      • 2021-08-13
      • 2020-03-18
      • 1970-01-01
      相关资源
      最近更新 更多