Jak zastosować normalizację / normalizację do zestawu szkoleniowego i testowego, jeśli celem jest przewidywanie?


47
  1. Czy jednocześnie przekształcam wszystkie moje dane lub foldery (jeśli zastosowano CV)? na przykład

    (allData - mean(allData)) / sd(allData)

  2. Czy osobno przekształcam skład zestawu i zestaw testowy? na przykład

    (trainData - mean(trainData)) / sd(trainData)

    (testData - mean(testData)) / sd(testData)

  3. Czy też przekształcam skład zestawu i korzystam z obliczeń na zestawie testów? na przykład

    (trainData - mean(trainData)) / sd(trainData)

    (testData - mean(trainData)) / sd(trainData)

Uważam, że 3 to właściwa droga. Jeśli 3 jest poprawne, muszę się martwić, że średnia nie będzie wynosić 0 lub że zakres nie będzie wynosił między [0; 1] lub [-1; 1] (normalizacja) zestawu testowego?


Czy istnieje elegancki sposób na zakodowanie tego R? Zobacz to pytanie: stackoverflow.com/questions/49260862/...
Boern,

Odpowiedzi:


41

Trzeci sposób jest prawidłowy. Dokładnie dlaczego szczegółowo opisano to w elementach uczenia statystycznego , patrz sekcja „Niewłaściwy i właściwy sposób przeprowadzania walidacji krzyżowej”, a także w ostatnim rozdziale „ Uczenia się z danych” na przykładzie giełdy.

Zasadniczo procedury 1 i 2 ujawniają informacje o reakcji lub z przyszłości, z zestawu danych do szkolenia lub oceny modelu. Może to powodować znaczne uprzedzenia optymistyczne w ocenie modelu.

Ideą podczas walidacji modelu jest naśladowanie sytuacji, w której byłby Pan, gdy model podejmuje decyzje produkcyjne, gdy nie masz dostępu do prawdziwej odpowiedzi. Konsekwencją jest to, że nie można użyć odpowiedzi w zestawie testowym do niczego poza porównywaniem z przewidywanymi wartościami.

Innym sposobem podejścia jest wyobrażenie sobie, że masz dostęp tylko do jednego punktu danych z wyciągu na raz (typowa sytuacja dla modeli produkcyjnych). Wszystko, czego nie możesz zrobić przy takim założeniu, powinieneś podejrzewać. Oczywiście, jedną rzeczą, której nie można zrobić, jest agregacja wszystkich nowych punktów danych w przeszłości i przyszłości, aby znormalizować strumień produkcyjny danych - więc to samo w przypadku sprawdzania poprawności modelu jest nieprawidłowe.

Nie musisz się martwić, że średnia wartość zestawu testowego jest różna od zera, jest to lepsza sytuacja niż poprawianie szacunkowych wyników. Chociaż oczywiście, jeśli test jest naprawdę sporządzony z tego samego podstawowego rozkładu co twój pociąg (podstawowe założenie w nauce statystycznej), wspomniana średnia powinna wynosić w przybliżeniu zero.


Tak myślałem. Dziękujemy za wyjaśnienie tego!
DerTom

Clearly, one thing you cannot do is aggregate over all new data-points past and future to normalize your production stream of data. Dlaczego nie?
Anmol Singh Jaggi

1
@AnmolSinghJaggi Jest to „i przyszłość”. Jeśli jeszcze nie zgromadziłeś danych, nie możesz normalizować ich użycia.
Matthew Drury

4
y

1
@MatthewDrury. Dziękuję za jasne wyjaśnienie. Zgadzam się teraz z tobą. Tylko trzeci sposób jest poprawny.
powódź
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.