Powiedzmy, że mamy X kształtu (2, 5)
iy kształtu (2,)
To działa: np.linalg.lstsq(X, y)
Spodziewalibyśmy się, że zadziała to tylko wtedy, gdy X będzie miał kształt (N, 5), gdzie N> = 5 Ale dlaczego i jak?
Odzyskujemy 5 wag zgodnie z oczekiwaniami, ale jak rozwiązać ten problem?
Czy to nie tak, że mamy 2 równania i 5 niewiadomych?
Jak numpy może to rozwiązać?
Musi zrobić coś takiego jak interpolacja, aby stworzyć więcej sztucznych równań? ..
least-squares
linear-algebra
numpy
George Pligoropoulos
źródło
źródło
Odpowiedzi:
Rozumiem, że numpy.linalg.lstsq opiera się na procedurze LAPACK dgelsd .
Problem polega na rozwiązaniu:
Oczywiście nie ma to unikalnego rozwiązania dla macierzy A, której ranga jest mniejsza niż długość wektora . W przypadku nieokreślonego systemu udostępnia rozwiązanie , które:b zz
dgelsd
Przykład: jeśli system to , numpy.linalg.lstsq zwróci .x + y= 1 x = 0,5 , y= .5
Jak działa dgelsd?
Procedura
dgelsd
oblicza rozkład wartości pojedynczej (SVD) A.Po prostu naszkicuję pomysł użycia SVD do rozwiązania układu liniowego. Rozkład wartości w liczbie pojedynczej jest faktoryzacją gdzie i są macierzami ortogonalnymi, a jest macierzą diagonalną, w której wpisy diagonalne są znane jako wartości osobliwe.UΣ V.′= A U V Σ
Efektywna ranga macierzy będzie liczbą pojedynczych wartości, które są faktycznie niezerowe (tj. Wystarczająco różne od zera w stosunku do precyzji maszyny itp.). Niech będzie macierzą diagonalną niezerowych wartości pojedynczych. SVD jest zatem:A S
Pseudo odwrotności z jest dana przez:A
Rozważ rozwiązanie . Następnie:x=A†b
Są tu w zasadzie dwa przypadki:
Ta ostatnia część jest nieco trudna ... trzeba śledzić wymiary macierzy i używać tego, że jest macierzą ortogonalną.U
Równoważność pseudo-odwrotności
Kiedy ma liniowo niezależne rzędy (np. Mamy macierz tłuszczu), to:A A†=A′(AA′)−1
W przypadku nieokreślonego systemu można pokazać, że pseudo-odwrotność daje minimalne rozwiązanie normy.
Kiedy ma liniowo niezależne kolumny (np. Mamy cienką matrycę), to:A A†=(A′A)−1A′
źródło
lm
korzysta z faktoryzacji QR, ale możesz podać alternatywy.