【问题标题】:Initializing logistic regression coefficients when using the Spark dataset-based ML APIs?使用基于 Spark 数据集的 ML API 时初始化逻辑回归系数?
【发布时间】:2017-07-03 19:03:23
【问题描述】:

默认情况下,逻辑回归训练会将系数初始化为全零。但是,我想自己初始化系数。这将很有用,例如,如果之前的训练运行在多次迭代后崩溃——我可以简单地使用最后一组已知系数重新开始训练。

这是否可以使用任何基于数据集/数据帧的 API,最好是 Scala?

查看Spark源代码,似乎一个方法setInitialModel来初始化模型及其系数,but it's unfortunately marked as private

基于 RDD 的 API 似乎允许初始化系数:LogisticRegressionWithSGD.run(...) 的重载之一接受 initialWeights 向量。但是,我想使用基于数据集的 API 而不是基于 RDD 的 API,因为(1)前者支持弹性网络正则化(我不知道如何使用基于 RDD 的逻辑回归来做弹性网络)和(2) 因为the RDD-based API is in maintenance mode.

我总是可以尝试使用反射来调用私有 setInitialModel 方法,但如果可能的话,我想避免这种情况(也许这甚至行不通......我也无法判断 setInitialModel 是否是标记为私有是有充分理由的)。

【问题讨论】:

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


    【解决方案1】:

    随意重写该方法。是的,您需要将该课程复制到您自己的工作区。没关系:别害怕

    当您通过mavensbt 构建您的项目时,您的本地类副本将“获胜”并在MLlib 中隐藏该类。幸运的是,同一个包中的其他类不会被着色。

    我已经多次使用这种方法来覆盖 Spark 类:实际上您的构建时间也应该很短。

    【讨论】:

      猜你喜欢
      • 2016-09-13
      • 2018-05-04
      • 1970-01-01
      • 2017-06-14
      • 1970-01-01
      • 2023-03-17
      • 1970-01-01
      • 2016-09-26
      • 2017-03-19
      相关资源
      最近更新 更多