-
Data: 2016-04-05 16:09:22
Temat: Re: Jak dobrze uwarunkować metodę najmniejszych kwadratów
Od: bartekltg <b...@g...com> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]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
Następne wpisy z tego wątku
- 05.04.16 20:26 slawek
- 05.04.16 20:42 bartekltg
- 05.04.16 21:54 RW
- 05.04.16 21:56 RW
- 05.04.16 23:07 slawek
- 06.04.16 01:55 Roman W
- 06.04.16 01:59 Roman W
- 06.04.16 02:23 bartekltg
- 06.04.16 08:59 slawek
- 06.04.16 09:09 slawek
- 06.04.16 13:39 M.M.
- 06.04.16 21:23 Roman W
- 06.04.16 22:24 peter
- 07.04.16 10:05 Tomasz Kaczanowski
- 08.04.16 00:24 Roman W
Najnowsze wątki z tej grupy
- 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
- CfC 28th Ada-Europe Int. Conf. Reliable Software Technologies
- Młodzi programiści i tajna policja
Najnowsze wątki
- 2024-12-12 Warszawa => Administrator Bezpieczeństwa IT <=
- 2024-12-12 Ostrów Wielkopolski => Trener zespołu sprzedaży Call Center <=
- 2024-12-12 Kraków => Key Account Manager <=
- 2024-12-11 SEP 1 kV E
- 2024-12-11 DNS restrictions are on
- 2024-12-11 wielkie bu
- 2024-12-11 Białystok => Inżynier bezpieczeństwa aplikacji <=
- 2024-12-11 Aku LiPo źródło dostaw - ktoś poleci ?
- 2024-12-11 Warszawa => Specjalista Bezpieczeństwa Informacji <=
- 2024-12-11 Wrocław => Application Security Engineer <=
- 2024-12-11 Warszawa => Analyst in the Trade Development department (experience wi
- 2024-12-11 Lublin => Programista Delphi <=
- 2024-12-11 Motodziennik #305 Nowy ELEKTRYK za 350 złotych miesięcznie? Kreatywne kredytowanie problemów
- 2024-12-11 Warszawa => Spedytor Międzynarodowy <=
- 2024-12-11 Katowice => Key Account Manager (ERP) <=