Pytanie o odejmowanie średniej w zestawie pociąg / ważny / testowy


11

Robię wstępne przetwarzanie danych i zamierzam później zbudować Convonets na moich danych.

Moje pytanie brzmi: Powiedzmy, że mam całkowitą liczbę zestawów danych ze 100 obrazami, obliczałem średnią dla każdego ze 100 obrazów, a następnie odejmowałem je od każdego z obrazów, a następnie dzieliłem to na ciąg i zestaw sprawdzania poprawności, i robię to samo kroki do przetworzenia na danym zestawie testowym, ale wygląda na to, że nie jest to poprawny sposób, zgodnie z tym linkiem: http://cs231n.github.io/neural-networks-2/#datapre

Często występująca pułapka . Ważnym punktem na temat przetwarzania wstępnego jest to, że wszelkie statystyki przetwarzania wstępnego (np. Średnia danych) muszą być obliczone tylko na podstawie danych treningowych, a następnie zastosowane do danych walidacyjnych / testowych. Np. Obliczenie średniej i odjęcie jej od każdy obraz w całym zestawie danych, a następnie podzielenie danych na podziały pociąg / wartość / test byłoby błędem, zamiast tego średnią należy obliczyć tylko na podstawie danych treningowych, a następnie odjąć równomiernie od wszystkich podziałów (pociąg / wartość / test). „

Zgaduję, że autor mówi, że nie obliczaj średniej i nie odejmuj jej w obrębie każdego obrazu, ale oblicz średnią ze zbioru obrazów (tj. (Obraz1 + ... + obraz100) / 100) i odejmij średnią od każdy obraz.

Nie do końca rozumiem, czy ktoś może wyjaśnić? a także ewentualnie wyjaśnić, dlaczego to, co robiłem, jest złe (jeśli rzeczywiście jest złe).


Witaj w społeczności. Zobacz moją odpowiedź poniżej.
usεr11852

Odpowiedzi:


6

Załóżmy, że masz w sumie 100 zdjęć; 90 to dane treningowe, a 10 to dane testowe.

Autorzy poprawnie twierdzą, że użycie całej próbki 100 obrazów do obliczenia próbki oznacza, że jest błędny. Wynika to z faktu, że w tym przypadku doszło do wycieku informacji. Informacje z elementów „nieobjętych próbą” zostaną przeniesione do zestawu treningowego. W szczególności do oszacowania , jeśli użyjesz 100 zamiast 90 obrazów, pozwalasz, aby twój zestaw treningowy miał bardziej świadomy środek, niż powinien. W rezultacie Twój błąd treningowy byłby potencjalnie niższy niż powinien.μ^μ^

Oszacowany jest powszechny podczas całej procedury szkolenia / walidacji / testowania. Ten sam służy do wyśrodkowania wszystkich danych. (Wspominam o tym później, ponieważ mam wrażenie, że wykorzystujesz średnią każdego osobnego obrazu do wyśrodkowania tego obrazu).μ^μ^


Dzięki za odpowiedź, to ma sens. I tak, obliczam średnią dla każdego obrazu, więc szacowany powinien być faktycznie obliczony na podstawie wszystkich 90 obrazów treningowych zamiast na każdym pojedynczym obrazie? Jakiś powód dlaczego? Czy nie mogę wyśrodkować każdego indywidualnego obrazu w zestawie treningowym 90? μ^
Sam

1
Oszacowanie powinno być samym obrazem. Jeśli wyśrodkujesz każdego z osobna, to wyśrodkowanie nie ma wpływu na ogólny trend w całej próbce. μ^
usεr11852

@ usεr11852 Dlaczego posiadanie bardziej świadomych informacji zaszkodziłoby naszemu modelowi? Nie spowodowałoby to, że informacja o „zmiennej odpowiedzi poza próbą” w żaden sposób nie zakłóciłaby naszego szkolenia, prawda? Dlaczego więc błąd pociągu byłby niski?
GeneX

1
Prawidłowe informacje nigdy nie „zaszkodzą modelowi”; po podjęciu decyzji, którego modelu użyć (w oparciu o pewien schemat ponownego próbkowania / wstrzymywania), wytrenujemy ostateczny model na wszystkich danych . Niemniej jednak podczas szkolenia, jeśli oceniamy przy użyciu całego zestawu danych, te dodatkowe informacje będą odzwierciedlać nierealistyczne dobre spostrzeżenia. Może to prowadzić do mniejszej liczby błędów testowych niż się spodziewano, ponieważ wiemy coś o danych testowych, których w innym przypadku nie moglibyśmy wykorzystać podczas treningu. ( Przykład : Załóżmy, że opracowujemy model aktywności fizycznej. Nasze dane obejmują nastolatków, dorosłych i osoby starsze oraz (ciąg dalszy)μ^
usεr11852

... z jakiegoś powodu, wszyscy starsi ludzie kończą w zestawie testowym. Jeśli obliczymy średni wiek tylko w naszym zestawie treningowym, oczywiście otrzymamy niższy średni wiek niż to, co ma cała nasza próbka. Korzystanie z tej wyraźnie stronniczej średniej wieku prawdopodobnie pogorszy Awydajność modelu, jeśli Anie uogólni dobrze w różnym wieku. Jeśli obliczymy średni wiek w całym zestawie danych, otrzymamy bardziej reprezentatywny średni wiek. Jeśli teraz użyjemy tej bezstronnej średniej wieku w modelu A, prawdopodobnie uzyskamy lepszą wydajność niż wcześniej, mimo że Anie uogólniamy dobrze w różnym wieku.)
usεr11852
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.