Błędy pomiarów
-
- Użytkownik
- Posty: 4
- Rejestracja: 2 lip 2017, o 00:28
- Płeć: Kobieta
- Lokalizacja: Polska
- Podziękował: 1 raz
Błędy pomiarów
Cześć, mam nadzieję, że ktoś da radę mi wyjaśnić skąd to wynika...
Trenuję sieć neuronową dwiema metoda, to czy wybrany model jest poprawny sprawdzany jest za pomocą pierwiastka błędu średniokwadratowego (RMSE). Spróbuję opisać, gdzie leży problem. Metoda 1. wskazuje korelację R=0,93; metoda 2. R=0,62. Z tym, że przy obliczaniu błędów RMSE (mam 20 wyjść, więc 20 błędów), to niby metoda 2. jest lepsza... Co mnie trochę dziwi, bo jeśli dobrze rozumiem, to RMSE oblicza się w stosunku do prognozowanej zmiennej. Moim idealnym przypadkiem byłoby gdyby wartość oczekiwana = 1, reszta danych =0. I już po samych danych widać, że metoda 1. spełnia to założenia, natomiast po obliczeniu błędu nie...Jak się ma w takim razie RMSE do korelacji i jak rozumieć w takim razie lepsze wyniki dla metody 2. RMSE? Ktokolwiek?
I tak metoda 1. (fragment danych):
0.0017 0.0019 0.0020 0.0019 0.0019 0.0019 0.0019
-0.0007 0.0008 0.0009 0.0008 0.0008 0.0008 0.0008
0.9898 0.9988 0.9833 0.9988 0.9988 0.9988 0.9988 <--- blisko 1
-0.0010 -0.0007 -0.0005 -0.0007 -0.0007 -0.0007 -0.0007
0.0046 -0.0007 -0.0010 -0.0007 -0.0007 -0.0007 -0.0006
RMSE = 0.2461
Metoda 2. (fragment danych):
-0.1722 0.0782 -0.2064 0.0455 -0.0476 0.0389 0.0220
0.0840 -0.0064 0.2380 0.0652 0.0073 -0.0595 0.0525
0.3302 0.5377 0.5001 0.4836 0.5625 0.5293 0.5404 <--- nope.
0.0337 -0.0391 -0.0636 -0.0355 -0.0073 -0.0055 0.0074
-0.0252 0.0282 0.0415 0.0363 -0.0143 -0.0401 -0.0187
RMSE =0.2074
Trenuję sieć neuronową dwiema metoda, to czy wybrany model jest poprawny sprawdzany jest za pomocą pierwiastka błędu średniokwadratowego (RMSE). Spróbuję opisać, gdzie leży problem. Metoda 1. wskazuje korelację R=0,93; metoda 2. R=0,62. Z tym, że przy obliczaniu błędów RMSE (mam 20 wyjść, więc 20 błędów), to niby metoda 2. jest lepsza... Co mnie trochę dziwi, bo jeśli dobrze rozumiem, to RMSE oblicza się w stosunku do prognozowanej zmiennej. Moim idealnym przypadkiem byłoby gdyby wartość oczekiwana = 1, reszta danych =0. I już po samych danych widać, że metoda 1. spełnia to założenia, natomiast po obliczeniu błędu nie...Jak się ma w takim razie RMSE do korelacji i jak rozumieć w takim razie lepsze wyniki dla metody 2. RMSE? Ktokolwiek?
I tak metoda 1. (fragment danych):
0.0017 0.0019 0.0020 0.0019 0.0019 0.0019 0.0019
-0.0007 0.0008 0.0009 0.0008 0.0008 0.0008 0.0008
0.9898 0.9988 0.9833 0.9988 0.9988 0.9988 0.9988 <--- blisko 1
-0.0010 -0.0007 -0.0005 -0.0007 -0.0007 -0.0007 -0.0007
0.0046 -0.0007 -0.0010 -0.0007 -0.0007 -0.0007 -0.0006
RMSE = 0.2461
Metoda 2. (fragment danych):
-0.1722 0.0782 -0.2064 0.0455 -0.0476 0.0389 0.0220
0.0840 -0.0064 0.2380 0.0652 0.0073 -0.0595 0.0525
0.3302 0.5377 0.5001 0.4836 0.5625 0.5293 0.5404 <--- nope.
0.0337 -0.0391 -0.0636 -0.0355 -0.0073 -0.0055 0.0074
-0.0252 0.0282 0.0415 0.0363 -0.0143 -0.0401 -0.0187
RMSE =0.2074
- Igor V
- Użytkownik
- Posty: 1605
- Rejestracja: 16 lut 2011, o 16:48
- Płeć: Mężczyzna
- Lokalizacja: Polska
- Podziękował: 18 razy
- Pomógł: 604 razy
Re: Błędy pomiarów
Ale w sensie że np wrzucasz jakiś wektor wejściowy do sieci i na wyjściu otrzymujesz :
\(\displaystyle{ [0.9898, 0.9988, 0.9833, 0.9988, 0.9988, 0.9988, 0.9988]}\)
A twój oczekiwany to \(\displaystyle{ [1, 1 ,1, 1 ,1, 1, 1]}\) ?
Bo jeśli tak, to coś mi się nie wydaje żeby faktycznie RMSE był większy niż w tym drugim przypadku.
\(\displaystyle{ [0.9898, 0.9988, 0.9833, 0.9988, 0.9988, 0.9988, 0.9988]}\)
A twój oczekiwany to \(\displaystyle{ [1, 1 ,1, 1 ,1, 1, 1]}\) ?
Bo jeśli tak, to coś mi się nie wydaje żeby faktycznie RMSE był większy niż w tym drugim przypadku.
-
- Użytkownik
- Posty: 4
- Rejestracja: 2 lip 2017, o 00:28
- Płeć: Kobieta
- Lokalizacja: Polska
- Podziękował: 1 raz
Re: Błędy pomiarów
Tak właśnie.
No niestety tak wychodzi, jak podałam wyżej.
Próbowałam to sobie prześledzić i myślę, że to wina tego, że cały zbiór wyjściowy w metodzie 2. jest dość rozrzucony, ale oscyluje wokół zera.
Dajmy na to (przykład):
Oczekiwana wartość : p=[1 1 1 1 0 0 0 0 0 0 0 0]
Metoda 1.: y1=[ 0.9976 0.9976 0.9976 0.9975 -0.0096 -0.0050 0.0003 0.3916 0.0182 -0.0001 -0.0001 -0.0001 ]
Metoda 2.: y2=[ 0.9150 0.6609 0.7384 1.1660 -0.0419 0.1132 -0.0364 0.0700 0.2010 0.2023 0.2886 -0.0188 ]
RMSE = sqrt(sum((p-y1).^2)/108)
Więc w 1. przypadku jeśli jest p-y1 i gdzieś wyjdzie zamiast 0, coś w okolicy 1 to przy obliczaniu błędu będzie (0-1)^2 i błąd będzie duży.
W drugim przypadku nie ma idealnych 0, 1, więc przy (p-y2)^2 błędy będą wydawały się małe we wszystkich przypadkach. Skoro RMSE ma spawdzać jak zachowuje się dana grupa w stosunku do całości (w moim przypadku 108) to jeśli wszędzie błędy są małe (ale nie równe 0), to RMSE będzie wskazywał mały błąd, co będzie trochę zakłamaniem, bo mojego targetu nie osiąga. Dobrze rozumuje?
No niestety tak wychodzi, jak podałam wyżej.
Próbowałam to sobie prześledzić i myślę, że to wina tego, że cały zbiór wyjściowy w metodzie 2. jest dość rozrzucony, ale oscyluje wokół zera.
Dajmy na to (przykład):
Oczekiwana wartość : p=[1 1 1 1 0 0 0 0 0 0 0 0]
Metoda 1.: y1=[ 0.9976 0.9976 0.9976 0.9975 -0.0096 -0.0050 0.0003 0.3916 0.0182 -0.0001 -0.0001 -0.0001 ]
Metoda 2.: y2=[ 0.9150 0.6609 0.7384 1.1660 -0.0419 0.1132 -0.0364 0.0700 0.2010 0.2023 0.2886 -0.0188 ]
RMSE = sqrt(sum((p-y1).^2)/108)
Więc w 1. przypadku jeśli jest p-y1 i gdzieś wyjdzie zamiast 0, coś w okolicy 1 to przy obliczaniu błędu będzie (0-1)^2 i błąd będzie duży.
W drugim przypadku nie ma idealnych 0, 1, więc przy (p-y2)^2 błędy będą wydawały się małe we wszystkich przypadkach. Skoro RMSE ma spawdzać jak zachowuje się dana grupa w stosunku do całości (w moim przypadku 108) to jeśli wszędzie błędy są małe (ale nie równe 0), to RMSE będzie wskazywał mały błąd, co będzie trochę zakłamaniem, bo mojego targetu nie osiąga. Dobrze rozumuje?
- Igor V
- Użytkownik
- Posty: 1605
- Rejestracja: 16 lut 2011, o 16:48
- Płeć: Mężczyzna
- Lokalizacja: Polska
- Podziękował: 18 razy
- Pomógł: 604 razy
Re: Błędy pomiarów
Nie wiem jak Ty to liczysz. W Matlabie przed chwilą policzyłem że :
Podobnie wcześniej co liczyłaś, też wychodzi że w pierwszym przypadku błąd jest mniejszy.
Właściwie to nie próbek, tylko rozmiar wektora wyjściowego.
Zastanów się co właściwie liczysz. Bo traktujesz liczenie tych parametrów jak dla par wektorów żeby porównać, ale po dzieleniu widać że chcesz uśredniać po wszystkich \(\displaystyle{ 108}\) przykładach. Rozsądniej wg. mnie jest zsumować kwadraty różnic wartości przewidywanych i referencyjnych po wszystkich przykładach, a następnie dopiero to podzielić przez 108 i pierwiastek. I to jest jeden błąd. A drugi można policzyć tak samo, tylko dać w różnicy korelację i korelację referencyjną. I to próbować porównywać. Albo spróbować tak jak mówiłem wyżej. Wtedy ten liczony błąd nie jest po różnych obserwacjach jednego atrybutu, ale po jednej realizacji zbioru atrybutów. Zachowuje się natomiast tak samo, nieujemny, im bliżej zera tym lepiej a idealnie to 0.
Kod: Zaznacz cały
y1 = [0.9976, 0.9976, 0.9976, 0.9975, -0.0096, -0.0050, 0.0003, 0.3916, 0.0182, -0.0001, -0.0001, -0.0001];
y2 = [0.9150, 0.6609, 0.7384, 1.1660, -0.0419, 0.1132, -0.0364, 0.0700, 0.2010, 0.2023, 0.2886, -0.0188];
y = [1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0];
error1 = sqrt(sum((y-y1).^2)/length(y))
error2 = sqrt(sum((y-y2).^2)/length(y))
error1 = 0.1132
error2 = 0.1835
Nie, to jest liczba próbek.-- 2 lip 2017, o 17:02 --EDIT:Aggie pisze:Skoro RMSE ma spawdzać jak zachowuje się dana grupa w stosunku do całości (w moim przypadku 108)
Właściwie to nie próbek, tylko rozmiar wektora wyjściowego.
Zastanów się co właściwie liczysz. Bo traktujesz liczenie tych parametrów jak dla par wektorów żeby porównać, ale po dzieleniu widać że chcesz uśredniać po wszystkich \(\displaystyle{ 108}\) przykładach. Rozsądniej wg. mnie jest zsumować kwadraty różnic wartości przewidywanych i referencyjnych po wszystkich przykładach, a następnie dopiero to podzielić przez 108 i pierwiastek. I to jest jeden błąd. A drugi można policzyć tak samo, tylko dać w różnicy korelację i korelację referencyjną. I to próbować porównywać. Albo spróbować tak jak mówiłem wyżej. Wtedy ten liczony błąd nie jest po różnych obserwacjach jednego atrybutu, ale po jednej realizacji zbioru atrybutów. Zachowuje się natomiast tak samo, nieujemny, im bliżej zera tym lepiej a idealnie to 0.
-
- Użytkownik
- Posty: 4
- Rejestracja: 2 lip 2017, o 00:28
- Płeć: Kobieta
- Lokalizacja: Polska
- Podziękował: 1 raz
Re: Błędy pomiarów
Może niefortunnie podałam te dane, ale jeden wektor to u mnie 108 wyników, a chciałam tylko pokazać o co mi chodzi...
EDIT: RMSE liczę tak, bo u mnie to jest macierz wyników: sqrt(sum((TZT(1,:)-y(1,:)).^2)/108) przy czym to jest dla pierwszej próbki stąd 1. Wektory wyjściowe TZT i y mają długość 108, więc chyba mogę dzielić przez 108.
Wkleję teraz przykładowy wynik, przy czym tutaj: TZT = a, y=b
Metoda 1.:
Metoda 2.:
Położenie jedynek się różni (wzięłam po prostu inną próbkę), bo chciałam pokazać, że rsme wychodzi podobne (mogę dać przykład nawet mniejszego), przy zupełnie innych wynikach. Widać, że przy drugiej metodzie są w większości większe odchylenia od 0 i mniejsze podobieństwo do 1.
EDIT: RMSE liczę tak, bo u mnie to jest macierz wyników: sqrt(sum((TZT(1,:)-y(1,:)).^2)/108) przy czym to jest dla pierwszej próbki stąd 1. Wektory wyjściowe TZT i y mają długość 108, więc chyba mogę dzielić przez 108.
Wkleję teraz przykładowy wynik, przy czym tutaj: TZT = a, y=b
Metoda 1.:
Ukryta treść:
Ukryta treść:
- Igor V
- Użytkownik
- Posty: 1605
- Rejestracja: 16 lut 2011, o 16:48
- Płeć: Mężczyzna
- Lokalizacja: Polska
- Podziękował: 18 razy
- Pomógł: 604 razy
Re: Błędy pomiarów
Wierzę na słowo że tak wychodzi. A jeśli tak, to nie jest to mimo wszystko wg mnie problem, o ile różnice w wartościach błędów nie są "za duże", bo w zasadzie jest to tylko informacja o pewnym odchyleniu od estymowanego parametru. Być może wynika to faktycznie z rozrzutu danych, ale żeby to ustalić musiałabyś przeprowadzić dodatkowe eksperymenty.
-
- Użytkownik
- Posty: 4
- Rejestracja: 2 lip 2017, o 00:28
- Płeć: Kobieta
- Lokalizacja: Polska
- Podziękował: 1 raz
Re: Błędy pomiarów
Ok. Dzięki za wszystkie odpowiedzi : )
Masz jakieś konkretne na myśli? Da się to jeszcze czymś sprawdzić?
Masz jakieś konkretne na myśli? Da się to jeszcze czymś sprawdzić?
- Igor V
- Użytkownik
- Posty: 1605
- Rejestracja: 16 lut 2011, o 16:48
- Płeć: Mężczyzna
- Lokalizacja: Polska
- Podziękował: 18 razy
- Pomógł: 604 razy
Re: Błędy pomiarów
Możesz sobie po prostu sztucznie wygenerować te dane i zobaczyć czy Twoje podejrzenia się sprawdzają.
Błąd się przydaje głównie do tego jak chcesz porównać np: uczenie i testowanie i zobaczyć czy system się uczy i czy nie ma przeuczenia. Lepszym porównywaniem modeli jest jakość klasyfikacji końcowej (jakbyś np: zaokrągliła do najbliższej liczby całkowitej te liczby i potem porównywała wektory), matrix confusion, krzywe ROC, jakieś \(\displaystyle{ F_1}\) score itp.
Błąd się przydaje głównie do tego jak chcesz porównać np: uczenie i testowanie i zobaczyć czy system się uczy i czy nie ma przeuczenia. Lepszym porównywaniem modeli jest jakość klasyfikacji końcowej (jakbyś np: zaokrągliła do najbliższej liczby całkowitej te liczby i potem porównywała wektory), matrix confusion, krzywe ROC, jakieś \(\displaystyle{ F_1}\) score itp.