У меня три точки: (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 эквивалентен методу наименьших квадратов. Но, не знаю почему, может ли кто-нибудь раскрыть лежащий в основе принцип их эквивалентности?