【发布时间】: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