最小二乘法矩阵表示
最小二乘法可以将误差方程转化为有确定解的代数方程组(其方程式数目正好等于未知数的个数),从而可求解出这些未知参数。这个有确定解的代数方程组称为最小二乘法估计的正规方程。公式如下:
$\theta = (X^TX)^{-1}X^Ty$ 或者 $W = (X^TX)^{-1}X^Ty$ ,其中的$W、\theta$ 即使方程的解!
最小二乘法公式如下:
公式是如何推导的?
最小二乘法公式如下:
$J(\theta) = \frac{1}{2}\sum\limits{i = 0}^n(h{\theta}(x_i) - y_i)^2$
使用矩阵表示:
$J(\theta) = \frac{1}{2}\sum\limits{i = 0}^n(h{\theta(xi)} - y)(h{\theta(x_i)} - y)$ $J(\theta) = \frac{1}{2}(X\theta - y)^T(X\theta - y)$使用Python代码标识:
# 上面八元一次方程对应的X数据
X = np.array([[ 0 ,14 , 8 , 0 , 5, -2, 9, -3],
[ -4 , 10 , 6 , 4 ,-14 , -2 ,-14 , 8],
[ -1 , -6 , 5 ,-12 , 3 , -3 , 2 , -2],
[ 5 , -2 , 3 , 10 , 5 , 11 , 4 ,-8],
[-15 ,-15 ,-8 ,-15 , 7 , -4, -12 , 2],
[ 11 ,-10 , -2 , 4 , 3 , -9 , -6 , 7],
[-14 , 0 , 4 , -3 , 5 , 10 , 13 , 7],
[ -3 , -7 , -2 , -8 , 0 , -6 , -5 , -9]])
# 对应的y
y = np.array([ 339 ,-114 , 30 , 126, -395 , -87 , 422, -309])
display(X,y)
矩阵转置公式与求导公式:
推导正规方程 $\theta$ 的解:
- 矩阵乘法公式展开
- $J(\theta) = \frac{1}{2}(X\theta - y)^T(X\theta - y)$
- $J(\theta) = \frac{1}{2}(\theta^TX^T - y^T)(X\theta - y)$
- $J(\theta) = \frac{1}{2}(\theta^TX^TX\theta - \theta^TX^Ty -y^TX\theta + y^Ty)$
- 进行求导(注意X、y是已知量,$\theta$ 是未知数):
- $J'(\theta) = \frac{1}{2}(\theta^TX^TX\theta - \theta^TX^Ty -y^TX\theta + y^Ty)'$
- 根据上面求导公式进行运算:
- $J'(\theta) = \frac{1}{2}(X^TX\theta + (\theta^TX^TX)^T-X^Ty - (y^TX)^T)$
- $J'(\theta) = \frac{1}{2}(X^TX\theta + X^TX\theta -X^Ty - X^Ty)$
- $J'(\theta) = \frac{1}{2}(2X^TX\theta -2X^Ty)$
- $J'(\theta) =X^TX\theta -X^Ty$
- $J'(\theta) =X^T(X\theta -y)$ 矩阵运算分配律
- 令导数$J'(\theta) = 0:$
- $0 =X^TX\theta -X^Ty$
- $X^TX\theta = X^Ty$
- 矩阵没有除法,使用逆矩阵进行转化:
- $(X^TX)^{-1}X^TX\theta = (X^TX)^{-1}X^Ty$
- $I\theta = (X^TX)^{-1}X^Ty$
- $\theta = (X^TX)^{-1}X^Ty$
到此为止,公式推导出来了~