需要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实现中的任何内容。
有人可以解释一下吗?
答案 0 :(得分:3)
这不是一个真正的编程问题,但是为了让您了解最小二乘回归的成本函数是什么,定义为
其中theta是权重向量。
上述成本函数的部分导数是:
如果在所有theta上计算:
显而易见,上述内容相当于为所有数据点计算的cumGradient += diff * data
并引用Wikipedia
在直角坐标系中,梯度是矢量场,其分量是f
的偏导数