-
31. Data: 2016-04-05 00:05:48
Temat: Re: Jak dobrze uwarunkować metodę najmniejszych kwadratów
Od: slawek <f...@f...com>
On Mon, 04 Apr 2016 15:20:12 -0500, RW <b...@g...pl>
wrote:
> Zalezy w jakim problemie, jezeli rozwiazujesz problem predykcji,
kiedy X
> jest znane a Y losowe, to nie ma sensu wymagac niezmienniczosci
wzgledem
> transformacji, bo X i Y nie sa rownowazne.
Oczywiście. Tyle że Y będzie losowe tylko trochę. Bo jak kompletne
random, to regresja i tak nie będzie miała sensu.
Najczęściej dane są niepewne i w X, i w Y. Np. jeżeli X to kolejne
dni, to Delta X będzie gdzieś między 12 godzin a czasem Plancka.
Czyli nie zero. Nawet jeżeli to będzie 1E-999 to transformacja
nieliniowa da konkretnie różne wagi dla różnych x.
-
32. Data: 2016-04-05 16:09:22
Temat: Re: Jak dobrze uwarunkować metodę najmniejszych kwadratów
Od: bartekltg <b...@g...com>
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/N
iemiroBook.pdf (9.2.1)
Czy nawet wiki:
https://en.wikipedia.org/wiki/Simple_linear_regressi
on#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_calcula
ting_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_algori
thm
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
-
33. Data: 2016-04-05 20:26:35
Temat: Re: Jak dobrze uwarunkować metodę najmniejszych kwadratów
Od: slawek <f...@f...com>
On Tue, 5 Apr 2016 16:09:22 +0200, bartekltg <b...@g...com>
wrote:
> Float128 jest już wszędzie.
Sprzętowe?
Sprzętowego double nie ma wszędzie. Ba! Nawet nie wszędzie jest
float. I bywa że nie ma... mnożenia. Świat nie kończy się na Itanium.
-
34. Data: 2016-04-05 20:42:02
Temat: Re: Jak dobrze uwarunkować metodę najmniejszych kwadratów
Od: bartekltg <b...@g...com>
On 05.04.2016 20:26, slawek wrote:
> On Tue, 5 Apr 2016 16:09:22 +0200, bartekltg <b...@g...com> wrote:
>> Float128 jest już wszędzie.
>
> Sprzętowe?
Nie.
Skąd ten pomysł.
pzdr
bartekltg
-
35. Data: 2016-04-05 21:54:57
Temat: Re: Jak dobrze uwarunkować metodę najmniejszych kwadratów
Od: RW <b...@g...pl>
On Tue, 05 Apr 2016 20:26:35 +0200, slawek wrote:
> On Tue, 5 Apr 2016 16:09:22 +0200, bartekltg <b...@g...com>
> wrote:
>> Float128 jest już wszędzie.
>
> Sprzętowe?
>
> Sprzętowego double nie ma wszędzie. Ba! Nawet nie wszędzie jest float. I
> bywa że nie ma... mnożenia. Świat nie kończy się na Itanium.
Ja pisze w jezyku, w ktorym nie ma dzielenia ;-)
RW
-
36. Data: 2016-04-05 21:56:12
Temat: Re: Jak dobrze uwarunkować metodę najmniejszych kwadratów
Od: RW <b...@g...pl>
On Tue, 05 Apr 2016 00:05:48 +0200, slawek wrote:
> On Mon, 04 Apr 2016 15:20:12 -0500, RW <b...@g...pl> wrote:
>> Zalezy w jakim problemie, jezeli rozwiazujesz problem predykcji,
> kiedy X
>> jest znane a Y losowe, to nie ma sensu wymagac niezmienniczosci
> wzgledem
>> transformacji, bo X i Y nie sa rownowazne.
>
> Oczywiście. Tyle że Y będzie losowe tylko trochę. Bo jak kompletne
> random, to regresja i tak nie będzie miała sensu.
>
> Najczęściej dane są niepewne i w X, i w Y.
Nie zawsze. Np. jezeli X = ostatnia cena na gieldzie, to X z definicji
jest wielokrotnoscia np. 0.05 EUR i jedynym bledem jest blad reprezentacji
zmienno przecinkowej.
RW
-
37. Data: 2016-04-05 23:07:35
Temat: Re: Jak dobrze uwarunkować metodę najmniejszych kwadratów
Od: slawek <f...@f...com>
On Tue, 05 Apr 2016 14:56:12 -0500, RW <b...@g...pl>
wrote:
> jest wielokrotnoscia np. 0.05 EUR i jedynym bledem jest blad
reprezentacji
> zmienno przecinkowej.
Jak zwał tak zwał: ale niepewność jakaś taka jest.
BTW, jeżeli kwota jest przeliczania na EUR z innej waluty, to wahania
kursów i różne przeliczniki dla różnych walut (i być może w różnych
miejscach) dają "błąd" (tj. niepewność) niekoniecznie mniejszy niż
błąd kwantyzacji reprezentacji liczbowej. Raz bierzesz kurs USD na
EUR z godziny 11:55 w USA, a raz kurs CHF na EUR z godziny 11:57 w
Wenezueli. Do tego możesz być tego nieświadomy... po prostu ktoś
zrobił przeliczenia dla ciebie i dał ci wynik w EUR na dziś.
Jest nawet ciekawiej: uporczywe pytanie o ceny itp. może je zmieniać.
;)
-
38. Data: 2016-04-06 01:55:32
Temat: Re: Jak dobrze uwarunkować metodę najmniejszych kwadratów
Od: Roman W <b...@g...pl>
On Tue, 5 Apr 2016 16:09:22 +0200, bartekltg <b...@g...com>
wrote:
> 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.
Nie musi być normalny.
RW
-
39. Data: 2016-04-06 01:59:32
Temat: Re: Jak dobrze uwarunkować metodę najmniejszych kwadratów
Od: Roman W <b...@g...pl>
On Tue, 05 Apr 2016 23:07:35 +0200, slawek <f...@f...com> wrote:
> Jak zwał tak zwał: ale niepewność jakaś taka jest.
Nie, nie powinno się mieszać błędu reprezentacji z błędem "wiedzy".
> BTW, jeżeli kwota jest przeliczania na EUR z innej waluty, to
wahania
> kursów i różne przeliczniki dla różnych walut (i być może w różnych
> miejscach) dają "błąd" (tj. niepewność) niekoniecznie mniejszy niż
> błąd kwantyzacji reprezentacji liczbowej. Raz bierzesz kurs USD na
> EUR z godziny 11:55 w USA, a raz kurs CHF na EUR z godziny 11:57 w
> Wenezueli. Do tego możesz być tego nieświadomy... po prostu ktoś
> zrobił przeliczenia dla ciebie i dał ci wynik w EUR na dziś.
Tak ale nie mówiłem o takim przypadku, tylko o takim w którym akcja
jest notowana w EUR i dozwolone ceny notowań są wielokrotnosciami
0.05 EUR. Nic nie trzeba przeliczać na inne waluty.
RW
-
40. Data: 2016-04-06 02:23:19
Temat: Re: Jak dobrze uwarunkować metodę najmniejszych kwadratów
Od: bartekltg <b...@g...com>
On 06.04.2016 01:55, Roman W wrote:
> On Tue, 5 Apr 2016 16:09:22 +0200, bartekltg <b...@g...com> wrote:
>> 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.
>
> Nie musi być normalny.
Ale wtedy regresja liniowa (najczęściej) nie jest estytmatorem
najwyższej wiarygodności i ogolnie może nie być najlepszym
roziązaniem.
Patologicznym przykładem jest rozkład Cauchy'eg, (porządna,
symetryczna funkcja) gdzie średnia nie jest żadnym rozsądnym
oszacowaniem środka rozkładu.
Regresja najcześćiej działa bez przesadnego zastanawiania się nad
teorią... ale i najcześćiej błędy są dość podobne do normalnych.
pzdr
bartekltg