我有三点:(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
方法1和方法2都可以得到结果
[ 1.0615 0.25133333]
,似乎方法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/