我有三点:(1,1)、(2,3)、(3, 3.123)。我假设假设是 ,我想对这三个点进行线性回归。我有两种计算 θ 的方法:
方法 1:最小二乘法
import numpy as np
# get an approximate solution using least square
X = np.array([[1,1],[2,1],[3,1]])
y = np.array([1,3,3.123])
theta = np.linalg.lstsq(X,y)[0]
print theta
方法2:矩阵乘法
我们有以下推导过程:
# rank(X)=2, rank(X|y)=3, so there is no exact solution.
print np.linalg.matrix_rank(X)
print np.linalg.matrix_rank(np.c_[X,y])
theta = np.linalg.inv(X.T.dot(X)).dot(X.T.dot(y))
print theta
method-1和method-2都可以得到结果[1.0615 0.25133333]
,看来method-2相当于最小二乘。但是,我不知道为什么,有人可以揭示它们等价的基本原理吗?
最佳答案
这两种方法是等效的,因为最小二乘法是 θ = argmin (Xθ-Y)'(Xθ-Y) = argmin ||(Xθ-Y)||^2 = argmin ||(Xθ-Y)||,这意味着您尝试最小化向量 ( Xθ-Y),所以你尝试最小化 Xθ 和 Y 之间的距离。X 是一个常数矩阵,因此 Xθ 是来自 X 的列空间的向量。这意味着这两个向量之间的最短距离是当 Xθ 等于向量的投影时Y到X的列空间(从图片中可以很容易观察到)。结果是 Y^(hat) = Xθ = X(X'X)^(-1)X'Y,其中 X(X'X)^(-1)X' 是 X 的列空间的投影矩阵。经过一些更改后,您可以观察到这与 (X'X)θ = X'Y 等效。您可以在任何线性代数书籍中找到确切的证明。
关于machine-learning - 最小二乘和X'Xθ = X'y 有什么关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42697745/