本文提供了一个线性回归模型 \(y = ax + b\) 的梯度下降计算器。计算得到的系数 \(a\) 和 \(b\) 将与使用基于线性最小二乘法的解析方法计算的结果进行比较。还将出于教育目的展示结果的比较。
假设我们有一组 \( n \) 个数据点 \( (x_i , y_i) \),我们需要通过最小化以下求和来找到形如 \(y = ax + b\) 的线性模型
\[ \Sigma^{n}_{i=1}(y_i - (a \cdot x_i + b))^2 \]
这是数据点与线性模型上的点之间距离的平方和,如下图所示。
注意,在进行偏导数和其他解析计算时,使用平方和而不是绝对值是出于实际考虑。
现在我们将介绍两种计算线性模型中包含的系数 \( a \) 和 \( b \) 的方法。
梯度下降法 是一种迭代优化算法,通过最小化定义的成本函数来找到参数 \(a\) 和 \(b\):
\[ J(a, b) = (1/2n) \Sigma^{n}_{i=1}(y_i - (a \cdot x_i + b))^2 \] 其偏导数在更新规则中需要,并由以下公式给出: \[ \dfrac{\partial J}{\partial a} = (1/n) \Sigma^{n}_{i=1}(- x_i (y_i - (a x_i + b))) \] \[ \dfrac{\partial J}{\partial b} = (1/n) \Sigma^{n}_{i=1}(-(y_i - (a x_i + b ))) \]参数 \( a \) 和 \( b \) 的更新规则为:
\[ a_{k+1} = a_k - r \dfrac{\partial J}{\partial a}|_{a=a_k,b=b_k} = a_k - r (1/n) \Sigma^{n}_{i=1}(-x_i (y_i - (a_k * x_i + b_k))) \] \[ b_{k+1} = b_k - r \dfrac{\partial J}{\partial b}|_{a=a_k,b=b_k} = b_k - r (1/n) \Sigma^{n}_{i=1}(-(y_i - (a_k x_i + b_k))) \] 其中基于线性最小二乘法的解析方法使用从最小化平方误差和推导出的闭合公式。参数 \(a\) 和 \(b\) 的公式为:
\[ a = \dfrac{(n \cdot \displaystyle \Sigma^{n}_{i=1} (x_i \cdot y_i) - \Sigma^{n}_{i=1} x_i \cdot \Sigma^{n}_{i=1} y_i)}{ (n \cdot \Sigma^{n}_{i=1} (x_i^2) - (\Sigma^{n}_{i=1}x_i)^2) } \] \[ b = \dfrac{(\Sigma^{n}_{i=1}y_i - a \cdot \Sigma^{n}_{i=1}x_i) }{ n } \]输入点的数量:
\( n = \)
\( \dfrac{\partial J}{\partial a} \) =
\( \dfrac{\partial J}{\partial b} \) =
梯度下降法的结果\(a = \)
\(b = \)
线性最小二乘法的结果(使用上述 \( a \) 和 \( b \) 的公式)\(a = \)
\(b = \)
成本函数 \( J(a, b) \) 的最小值:
图例: 蓝色 表示梯度下降法,绿色 表示线性最小二乘法。