-
1. Data: 2016-04-01 04:30:30
Temat: Jak dobrze uwarunkować metodę najmniejszych kwadratów
Od: Borneq <b...@a...hidden.pl>
Rysowałem punkty na płaszczyźnie i chciałem do tego dopasować prostą.
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. 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?
-
2. Data: 2016-04-01 05:23:38
Temat: Re: Jak dobrze uwarunkować metodę najmniejszych kwadratów
Od: Borneq <b...@a...hidden.pl>
W dniu 01.04.2016 o 04:30, Borneq pisze:
> 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?
Dla danych x i y czasem zbiory tych wartości skupiają się w wąskim
przedziale, np. gdy mam wagi dla chudnięcia z jednego miesiąca, wtedy
waga skupia się wokół np. 100 kg a dnie wokół liczby 42000 (gdy
przedstawimy datę jako liczbę dni od roku 1900).
Gdy odejmiemy od x-ów wartość 42000 a od y-ów 100 wtedy te liczby się
zmniejszą. Jest to jeden ze sposobów; jak to można uogólnić, np. dla
przypadku gdy 99% punków jest skupionych a jeden (np. pierwszy) gdzieś
daleko i nie opłaca się odejmować według tego punktu ale według 99%
pozostałych?
-
3. Data: 2016-04-01 12:31:09
Temat: Re: Jak dobrze uwarunkować metodę najmniejszych kwadratów
Od: "M.M." <m...@g...com>
On Friday, April 1, 2016 at 5:23:43 AM UTC+2, Borneq wrote:
> W dniu 01.04.2016 o 04:30, Borneq pisze:
> > 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?
>
> Dla danych x i y czasem zbiory tych wartości skupiają się w wąskim
> przedziale, np. gdy mam wagi dla chudnięcia z jednego miesiąca, wtedy
> waga skupia się wokół np. 100 kg a dnie wokół liczby 42000 (gdy
> przedstawimy datę jako liczbę dni od roku 1900).
> Gdy odejmiemy od x-ów wartość 42000 a od y-ów 100 wtedy te liczby się
> zmniejszą. Jest to jeden ze sposobów; jak to można uogólnić, np. dla
> przypadku gdy 99% punków jest skupionych a jeden (np. pierwszy) gdzieś
> daleko i nie opłaca się odejmować według tego punktu ale według 99%
> pozostałych?
Proponuję (na początek) przeskalować wartości w każdej kolumnie do
przedziału 0-1.
Pozdrawiam
-
4. Data: 2016-04-01 12:51:47
Temat: Re: Jak dobrze uwarunkować metodę najmniejszych kwadratów
Od: Borneq <b...@a...hidden.pl>
W dniu 01.04.2016 o 12:31, M.M. pisze:
> Proponuję (na początek) przeskalować wartości w każdej kolumnie do
> przedziału 0-1.
Ja myślałem o tym, by od współrzędnych x (może wystarczą same x) odjąć
średnią x. Tu niestety będziemy mieli dwa przebiegi, ale dość mała
modyfikacja potem wyniku.
-
5. Data: 2016-04-01 13:38:57
Temat: Re: Jak dobrze uwarunkować metodę najmniejszych kwadratów
Od: "M.M." <m...@g...com>
On Friday, April 1, 2016 at 12:51:49 PM UTC+2, Borneq wrote:
> W dniu 01.04.2016 o 12:31, M.M. pisze:
> > Proponuję (na początek) przeskalować wartości w każdej kolumnie do
> > przedziału 0-1.
>
> Ja myślałem o tym, by od współrzędnych x (może wystarczą same x) odjąć
> średnią x. Tu niestety będziemy mieli dwa przebiegi, ale dość mała
> modyfikacja potem wyniku.
W jakim celu stosujesz aproksymację multiliniową?
Pozdrawiam
-
6. Data: 2016-04-01 13:55:40
Temat: Re: Jak dobrze uwarunkować metodę najmniejszych kwadratów
Od: Borneq <b...@a...hidden.pl>
W dniu 01.04.2016 o 13:38, M.M. pisze:
> W jakim celu stosujesz aproksymację multiliniową?
Jaką multiliniową? Chće aby nie odejmować od jednej dużej liczby drugą
podobną, uzyskując małą resztę
Pozdrawiam
-
7. Data: 2016-04-01 14:35:19
Temat: Re: Jak dobrze uwarunkować metodę najmniejszych kwadratów
Od: "M.M." <m...@g...com>
On Friday, April 1, 2016 at 1:55:41 PM UTC+2, Borneq wrote:
> W dniu 01.04.2016 o 13:38, M.M. pisze:
> > W jakim celu stosujesz aproksymację multiliniową?
>
> Jaką multiliniową? Chće aby nie odejmować od jednej dużej liczby drugą
> podobną, uzyskując małą resztę
>
> Pozdrawiam
Sorki, nie kumam.
Czy masz zbyt duży błąd w wyniku odejmowania?
a - b = c +- error ?
Może zwiększyć precyzję? Kompilator gcc (od niedawna) ma duże i wydajne typy
zmiennoprzecinkowe.
Odejmowań jest wiele czy jedno? W przypadku wielu dodawań, można posortować
liczby od najmniejszych (co do wartości bezwzględnej), no i dodawać od w
takiej kolejności - czasami to to zwiększa dokładność. Może jakoś ten
trik da się w Twoim przypadku zastosować?
Pozdrawiam
-
8. Data: 2016-04-01 14:37:54
Temat: Re: Jak dobrze uwarunkować metodę najmniejszych kwadratów
Od: Borneq <b...@a...hidden.pl>
W dniu 01.04.2016 o 14:35, M.M. pisze:
> Sorki, nie kumam.
> Czy masz zbyt duży błąd w wyniku odejmowania?
>
> a - b = c +- error ?
>
> Może zwiększyć precyzję? Kompilator gcc (od niedawna) ma duże i wydajne typy
> zmiennoprzecinkowe.
Gdy zwiększyłem do double - działa (choć można wyobrazić sobie złośliwy
przykład gdzie nawet double nie będzie działało)
Ale mi chodzi o zmianę algorytmu a raczej wzorków na takie, gdzie
dokładność wyniku nie zależy tak bardzo od precyzji typów
zmiennoprzecinkowych;
-
9. Data: 2016-04-01 15:19:14
Temat: Re: Jak dobrze uwarunkować metodę najmniejszych kwadratów
Od: "M.M." <m...@g...com>
On Friday, April 1, 2016 at 2:37:55 PM UTC+2, Borneq wrote:
> W dniu 01.04.2016 o 14:35, M.M. pisze:
> > Sorki, nie kumam.
> > Czy masz zbyt duży błąd w wyniku odejmowania?
> >
> > a - b = c +- error ?
> >
> > Może zwiększyć precyzję? Kompilator gcc (od niedawna) ma duże i wydajne typy
> > zmiennoprzecinkowe.
>
> Gdy zwiększyłem do double - działa (choć można wyobrazić sobie złośliwy
> przykład gdzie nawet double nie będzie działało)
> Ale mi chodzi o zmianę algorytmu a raczej wzorków na takie, gdzie
> dokładność wyniku nie zależy tak bardzo od precyzji typów
> zmiennoprzecinkowych;
Właśnie nie wiem na jakim etapie chcesz podjąć próbę zmiany wzorków.
Na etapie przygotowania danych:
1) przeskalowanie
2) odjęcie średniej
3) normalizacja
Na etapie rozwiązywania równania:
1) eliminacja gaussa z połowicznym lub pełnym wyborem
elementu podstawowego
Można zmodyfikować także wzór w aproksymacji multiliniowej (aproksymacja
wielomianem jest w gruncie rzeczy także aproksymacją multiliniową). Możesz
nie tylko minimalizować sumę kwadratów różnic, ale także sumę kwadratów
parametrów. Po uproszczeniu, minimalizacja sumy kwadratów różnic sprowadza
się do dodania (jakis) dodatnich liczb do głównej przekątnej.
Szczerze, to nie mam pojęcia czy w czymś pomogłem :)
Pozdrawiam
-
10. Data: 2016-04-01 17:58:43
Temat: Re: Jak dobrze uwarunkować metodę najmniejszych kwadratów
Od: peter <T...@n...nie.wiem>
Borneq pisze:
> Rysowałem punkty na płaszczyźnie i chciałem do tego dopasować prostą.
> 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. Problemem było to , że odejmowaliśmy
dwie
> bliskie sobie duże liczby a wynik był małą liczbą.
to jest elementarz metod numerycznych. Błąd różnicy gwałtownie wzrasta gdy
odejmujemy
bliskie liczby.
> Czy można zmienić wzorki tak, by zadanie było lepiej uwarunkowane?
a = ILxy/SKx
ILxy= Suma( (xi-xsr)(yi-ysr) )
SKx = Suma( (xi-xsr)^2 )
b = ysr - a xsr
sr - średnia
--
peter