需要一个mllib专家来帮助解释线性回归代码。在LeastSquaresGradient.compute中
override def compute(
data: Vector,
label: Double,
weights: Vector,
cumGradient: Vector): Double = {
val diff = dot(data, weights) - label
axpy(diff, data, cumGradient)
diff * diff / 2.0
}cumGradient是使用axpy计算的,它只是y += a* x,或者这里是cumGradient += diff * data
我想了很长一段时间,但是可以连接到梯度下降文档中定义的梯度计算。理论上,梯度是在一个特定的加权参数下,对三角洲损失的斜率。在这个axpy实现中,我没有看到任何与此相类似的东西。
有人能说点什么吗?
发布于 2015-09-02 02:14:08
这并不是一个真正的编程问题,但是为了让您知道最小二乘回归的成本函数是什么,定义为

其中θ是权向量。
上述成本函数的偏导数如下:

如果计算出所有θ:

很明显,上面的内容相当于对所有数据点计算的cumGradient += diff * data,并引用维基百科。
在直角坐标系中,梯度是向量场,其分量是f的偏导数。
https://stackoverflow.com/questions/32343163
复制相似问题