Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > pl.comp.programming > #28451

Re: Jak dobrze uwarunkować metodę najmniejszych kwadratów

From bartekltg <bartekltg@gmail.com>
Newsgroups pl.comp.programming, pl.sci.matematyka
Subject Re: Jak dobrze uwarunkować metodę najmniejszych kwadratów
Date 2016-04-05 16:09 +0200
Organization ATMAN - ATM S.A.
Message-ID <ne0guj$575$1@node2.news.atman.pl> (permalink)
References <ndkmg7$l07$1@node2.news.atman.pl>

Cross-posted to 2 groups.

Show all headers | View raw


On 01.04.2016 04:30, Borneq wrote:
> Rysowałem punkty na płaszczyźnie i chciałem do tego dopasować prostą.

To albo nieprecyzyjne opisanie problemu, albo opisanie problemu
innego, niż starasz się rozwiązać.

Regresja liniowa jest estymatorem największej wiarygodności dla
modelu
Y_i = a*X_i + b +  e_i
gdzie e_i jest błędem o rozkłądzie normalnym.
Czyli dopasowanie funkcji liniowej do wykresu punktów.

Dopasowanie prostej do punktów na płaszczyźnie (pelna symetria) robi
się przez SVD.
http://mst.mimuw.edu.pl/lecture.php?lecture=ona&part=Ch7


> Metodą najmniejszych kwadratów (np.
> http://www.algorytm.org/procedury-numeryczne/metoda-najmniejszych-kwadratow.html)

> Współczynnik a był w ogóle nie przystający do danych. Nie wiedziałem
> dlaczego, szukałem błędu a wszystko się zgadzało.
> W końcu odkryłem że miałem float a nie double.

Fuuuu.
:)

> Problemem było to , że
> odejmowaliśmy dwie bliskie sobie duże liczby a wynik był małą liczbą.
> Czy można zmienić wzorki tak, by zadanie było lepiej uwarunkowane?

Na dzień dobry zalecam nie używać serwisów dla licealistów;-)
Tyle materiałow w sieci leży.

http://www.mimuw.edu.pl/~pokar/StatystykaI/Ksiazki/NiemiroBook.pdf (9.2.1)
Czy nawet wiki:
https://en.wikipedia.org/wiki/Simple_linear_regression#Fitting_the_regression_line

a = sum[ (y- y_sr)(x- x_sr) ] / sum[ (x- x_sr)^2 ]

b = y_sr - a * x_sr


Dwuprzebiegowe... I co z tego:)

Wriancje (mianownik piwrwszego ułamka) da się policzyć w jednym przbiegu
https://en.wikipedia.org/wiki/Algorithms_for_calculating_variance#Online_algorithm
więc pewnie jakby pokombinować, da się poodbnie policzyć
korelacje x,y (licznik) ale to i tak jest ciut mniej dokładne niż
przez policzenie najpierw średniej.

Dodatkowo, jeśli danych masz naprawdę dużo, trzeba je posumować
ostrożnie. Sposoby są od odpowiedniego uporzadkowania
od najmniejszych, od najwiekszych, kopiec w porzadku wartosci
bezwzglednej i zawsze dwie najmniejsze, czy wrescei takie wynalazki:
https://en.wikipedia.org/wiki/Pairwise_summation
https://en.wikipedia.org/wiki/Kahan_summation_algorithm
albo po prostu użyj powiekszonej precyzji. Float128 jest już wszędzie.

Pamietaj, że nigdy nie dostaniesz lepszego względnego wyniku niż
precyzje danych * uwarunkowanie sumy ( sum |x_i| / sum x_i).


Co do przesuwania i reskalowania danych:

Wróćmy do prawdziwej, pełnej (chyba po polsku oficjalna nazwa to 
wieloraka) regresji. Zwyłą regresję
y_i = b_1 x_i + b_0 + e_i

zapisujemy jako

Y = X b + e

Y to wektor [y_1;,y_2...]
b to wektor [b_1; b_0]
(oba stojące)
e_i to wektor błędów
X to maceirz
X = [x_1, 1 ;
      x_2, 1;
      x_3, 1;
  ...]
(kolumna x-ów i kolumna jedynek).

Wzorki z regresji proistej są równoważne rozwiązaniu
równanian normalnego:

X^t Y = X^t X b

X^t X = [ sum x_i^2 , sum x_i; sum x_i, n ]

X^t Y  = [ sum y_i x_i, sum y_i ]

ponieważ do rozwiązania b potrzeba 'odwrócić' macierz X^t X,

b = (X^t X)^-1  X^t Y

pownaa mieć ona jak najmniejsze uwarunkowania

Przesunięcie x-ów na środek pomaga, bo maceirz jest diagonalna
sum x_i=0
X^t X = [ sum x_i^2 , 0; 0, n ]

Najlepsze uwarunkowanie (po prostu 1) będzie, gdy sum x_i^2 == n
(ale po przesunieciu do centrum nie wiem, czy to nawet ma jeszcze
znaczenie).

pzdr
bartekltg









Back to pl.comp.programming | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

Jak dobrze uwarunkować metodę najmniejszych kwadratów Borneq <borneq@antyspam.hidden.pl> - 2016-04-01 04:30 +0200
  Re: Jak dobrze uwarunkować metodę najmniejszych kwadratów Borneq <borneq@antyspam.hidden.pl> - 2016-04-01 05:23 +0200
    Re: Jak dobrze uwarunkować metodę najmniejszych kwadratów "M.M." <mmarszik@gmail.com> - 2016-04-01 03:31 -0700
      Re: Jak dobrze uwarunkować metodę najmniejszych kwadratów Borneq <borneq@antyspam.hidden.pl> - 2016-04-01 12:51 +0200
        Re: Jak dobrze uwarunkować metodę najmniejszych kwadratów "M.M." <mmarszik@gmail.com> - 2016-04-01 04:38 -0700
          Re: Jak dobrze uwarunkować metodę najmniejszych kwadratów Borneq <borneq@antyspam.hidden.pl> - 2016-04-01 13:55 +0200
            Re: Jak dobrze uwarunkować metodę najmniejszych kwadratów "M.M." <mmarszik@gmail.com> - 2016-04-01 05:35 -0700
              Re: Jak dobrze uwarunkować metodę najmniejszych kwadratów Borneq <borneq@antyspam.hidden.pl> - 2016-04-01 14:37 +0200
                Re: Jak dobrze uwarunkować metodę najmniejszych kwadratów "M.M." <mmarszik@gmail.com> - 2016-04-01 06:19 -0700
        Re: Jak dobrze uwarunkować metodę najmniejszych kwadratów slawek <fake@fakeemail.com> - 2016-04-03 20:36 +0200
          Re: Jak dobrze uwarunkować metodę najmniejszych kwadratów "M.M." <mmarszik@gmail.com> - 2016-04-03 12:17 -0700
            Re: Jak dobrze uwarunkować metodę najmniejszych kwadratów slawek <fake@fakeemail.com> - 2016-04-04 00:00 +0200
              Re: Jak dobrze uwarunkować metodę najmniejszych kwadratów "M.M." <mmarszik@gmail.com> - 2016-04-04 04:42 -0700
                Re: Jak dobrze uwarunkować metodę najmniejszych kwadratów "M.M." <mmarszik@gmail.com> - 2016-04-04 04:57 -0700
                Re: Jak dobrze uwarunkować metodę najmniejszych kwadratów slawek <fake@fakeemail.com> - 2016-04-04 18:54 +0200
                Re: Jak dobrze uwarunkować metodę najmniejszych kwadratów "M.M." <mmarszik@gmail.com> - 2016-04-04 12:46 -0700
                Re: Jak dobrze uwarunkować metodę najmniejszych kwadratów slawek <fake@fakeemail.com> - 2016-04-04 21:55 +0200
                Re: Jak dobrze uwarunkować metodę najmniejszych kwadratów "M.M." <mmarszik@gmail.com> - 2016-04-04 13:08 -0700
                Re: Jak dobrze uwarunkować metodę najmniejszych kwadratów slawek <fake@fakeemail.com> - 2016-04-04 21:59 +0200
                Re: Jak dobrze uwarunkować metodę najmniejszych kwadratów "M.M." <mmarszik@gmail.com> - 2016-04-04 13:09 -0700
                Re: Jak dobrze uwarunkować metodę najmniejszych kwadratów slawek <fake@fakeemail.com> - 2016-04-04 22:08 +0200
                Re: Jak dobrze uwarunkować metodę najmniejszych kwadratów RW <bloody_rabbit@gazeta.pl> - 2016-04-04 15:20 -0500
                Re: Jak dobrze uwarunkować metodę najmniejszych kwadratów slawek <fake@fakeemail.com> - 2016-04-05 00:05 +0200
                Re: Jak dobrze uwarunkować metodę najmniejszych kwadratów RW <bloody_rabbit@gazeta.pl> - 2016-04-05 14:56 -0500
                Re: Jak dobrze uwarunkować metodę najmniejszych kwadratów slawek <fake@fakeemail.com> - 2016-04-05 23:07 +0200
                Re: Jak dobrze uwarunkować metodę najmniejszych kwadratów Roman W <bloody_rabbitREMOVETHIS@gazeta.pl> - 2016-04-06 00:59 +0100
                Re: Jak dobrze uwarunkować metodę najmniejszych kwadratów slawek <fake@fakeemail.com> - 2016-04-06 09:09 +0200
                Re: Jak dobrze uwarunkować metodę najmniejszych kwadratów "M.M." <mmarszik@gmail.com> - 2016-04-06 04:39 -0700
                Re: Jak dobrze uwarunkować metodę najmniejszych kwadratów Roman W <bloody_rabbitREMOVETHIS@gazeta.pl> - 2016-04-07 23:29 +0100
                Re: Jak dobrze uwarunkować metodę najmniejszych kwadratów slawek <fake@fakeemail.com> - 2016-04-08 09:18 +0200
                Re: Jak dobrze uwarunkować metodę najmniejszych kwadratów Roman W <bloody_rabbitREMOVETHIS@gazeta.pl> - 2016-04-08 20:37 +0100
                Re: Jak dobrze uwarunkować metodę najmniejszych kwadratów slawek <fake@fakeemail.com> - 2016-04-09 09:19 +0200
                Re: Jak dobrze uwarunkować metodę najmniejszych kwadratów Tomasz Kaczanowski <kaczus@dowyciecia_poczta.onet.pl> - 2016-04-07 10:05 +0200
                Re: Jak dobrze uwarunkować metodę najmniejszych kwadratów Roman W <bloody_rabbitREMOVETHIS@gazeta.pl> - 2016-04-07 23:28 +0100
                Re: Jak dobrze uwarunkować metodę najmniejszych kwadratów slawek <fake@fakeemail.com> - 2016-04-08 09:07 +0200
                Re: Jak dobrze uwarunkować metodę najmniejszych kwadratów Roman W <bloody_rabbitREMOVETHIS@gazeta.pl> - 2016-04-08 20:36 +0100
                Re: Jak dobrze uwarunkować metodę najmniejszych kwadratów slawek <fake@fakeemail.com> - 2016-04-09 09:20 +0200
                Re: Jak dobrze uwarunkować metodę najmniejszych kwadratów Roman W <bloody_rabbitREMOVETHIS@gazeta.pl> - 2016-04-18 00:53 +0100
                Re: Jak dobrze uwarunkować metodę najmniejszych kwadratów slawek <fake@fakeemail.com> - 2016-04-04 18:31 +0200
                Re: Jak dobrze uwarunkować metodę najmniejszych kwadratów slawek <fake@fakeemail.com> - 2016-04-04 18:35 +0200
                Re: Jak dobrze uwarunkować metodę najmniejszych kwadratów slawek <fake@fakeemail.com> - 2016-04-04 18:40 +0200
    Re: Jak dobrze uwarunkować metodę najmniejszych kwadratów peter <ToJestTo@nic.nie.wiem> - 2016-04-01 18:05 +0200
  Re: Jak dobrze uwarunkować metodę najmniejszych kwadratów peter <ToJestTo@nic.nie.wiem> - 2016-04-01 17:58 +0200
  Re: Jak dobrze uwarunkować metodę najmniejszych kwadratów "J.F." <jfox_xnospamx@poczta.onet.pl> - 2016-04-02 23:50 +0200
    Re: Jak dobrze uwarunkować metodę najmniejszych kwadratów "M.M." <mmarszik@gmail.com> - 2016-04-03 02:58 -0700
  Re: Jak dobrze uwarunkować metodę najmniejszych kwadratów slawek <fake@fakeemail.com> - 2016-04-03 20:33 +0200
  Re: Jak dobrze uwarunkować metodę najmniejszych kwadratów bartekltg <bartekltg@gmail.com> - 2016-04-05 16:09 +0200
    Re: Jak dobrze uwarunkować metodę najmniejszych kwadratów slawek <fake@fakeemail.com> - 2016-04-05 20:26 +0200
      Re: Jak dobrze uwarunkować metodę najmniejszych kwadratów bartekltg <bartekltg@gmail.com> - 2016-04-05 20:42 +0200
      Re: Jak dobrze uwarunkować metodę najmniejszych kwadratów RW <bloody_rabbit@gazeta.pl> - 2016-04-05 14:54 -0500
    Re: Jak dobrze uwarunkować metodę najmniejszych kwadratów Roman W <bloody_rabbitREMOVETHIS@gazeta.pl> - 2016-04-06 00:55 +0100
      Re: Jak dobrze uwarunkować metodę najmniejszych kwadratów bartekltg <bartekltg@gmail.com> - 2016-04-06 02:23 +0200
        Re: Jak dobrze uwarunkować metodę najmniejszych kwadratów slawek <fake@fakeemail.com> - 2016-04-06 08:59 +0200
        Re: Jak dobrze uwarunkować metodę najmniejszych kwadratów Roman W <bloody_rabbitREMOVETHIS@gazeta.pl> - 2016-04-06 20:23 +0100
        Re: Jak dobrze uwarunkować metodę najmniejszych kwadratów peter <ToJestTo@nic.nie.wiem> - 2016-04-06 22:24 +0200
          Re: Jak dobrze uwarunkować metodę najmniejszych kwadratów Roman W <bloody_rabbitREMOVETHIS@gazeta.pl> - 2016-04-07 23:24 +0100

csiph-web