Robię projekt dotyczący problemu z identyfikacją autora. Zastosowałem normalizację tf-idf do trenowania danych, a następnie wyszkoliłem svm na tych danych.
Teraz, używając klasyfikatora, powinienem również znormalizować dane testowe. Wydaje mi się, że podstawowym celem normalizacji jest sprawienie, aby algo uczenia się przywiązywało większą wagę do ważniejszych funkcji podczas nauki. Więc po przeszkoleniu już wie, które funkcje są ważne, a które nie. Czy więc istnieje potrzeba zastosowania normalizacji również do testowania danych?
Jestem nowy w tej dziedzinie. Więc proszę zignoruj, jeśli pytanie wydaje się głupie?
machine-learning
neural-network
deep-learning
Kishan Kumar
źródło
źródło
Odpowiedzi:
Tak, musisz zastosować normalizację do danych testowych, jeśli twój algorytm działa lub potrzebuje znormalizowanych danych treningowych *.
Jest tak, ponieważ model działa na reprezentacji podanej przez wektory wejściowe. Skala tych liczb jest częścią przedstawienia. To trochę przypomina konwersję stóp i metrów. . . model lub formuła normalnie działałyby tylko z jednym typem jednostki.
Nie tylko potrzebujesz normalizacji, ale powinieneś zastosować dokładnie takie samo skalowanie jak dla danych treningowych. Oznacza to przechowywanie skali i przesunięcia używanych z danymi treningowymi i ponowne ich użycie. Częstym błędem początkującego jest osobna normalizacja pociągu i testowanie danych.
W Python i SKLearn możesz znormalizować wartości wejściowe / X za pomocą Standardowego skalera w następujący sposób:
Zwróć uwagę, jak konwersja
train_X
za pomocą funkcji, która pasuje (oblicza parametry), a następnie normalizuje się. Podczas gdytest_X
konwersja po prostu przekształca się, wykorzystując te same parametry, których nauczył się z danych pociągu.Stosowana normalizacja tf-idf powinna działać podobnie, ponieważ uczy się niektórych parametrów z zestawu danych jako całości (częstotliwość słów we wszystkich dokumentach), a także z wykorzystaniem współczynników znalezionych w każdym dokumencie.
* Niektóre algorytmy (takie jak te oparte na drzewach decyzyjnych) nie wymagają znormalizowanych danych wejściowych i mogą poradzić sobie z funkcjami, które mają różne nieodłączne skale.
źródło
Zdecydowanie powinieneś znormalizować swoje dane. Normalizujesz dane dla następujących celów:
Za posiadanie różnych funkcji w tej samej skali, co przyspiesza proces uczenia się.
Do uczciwej pielęgnacji różnych funkcji bez dbania o wagę.
Po treningu Twój algorytm uczenia się nauczył się radzić sobie z danymi w formie skalowanej, więc musisz znormalizować dane testowe za pomocą parametrów normalizujących używanych do danych treningowych.
źródło