Pytanie:
Kiedy należy zastosować skalowanie funkcji dla moich danych
jjepsuomi
2014-10-29 14:00:48 UTC
view on stackexchange narkive permalink

Rozmawiałem ze współpracownikiem i zaczęliśmy się zastanawiać, kiedy należy zastosować normalizację / skalowanie funkcji do danych? Załóżmy, że mamy zestaw funkcji, z których niektóre mają bardzo szeroki zakres wartości, a niektóre mają mniejszy zakres wartości.

Gdybym wykonywał analizę głównych składowych, musiałbym znormalizować dane, jest to jasne, ale powiedzmy, że próbujemy sklasyfikować dane za pomocą zwykłej i prostej k-najbliższego sąsiada / regresji liniowej metoda.

W jakich warunkach powinienem lub nie powinienem normalizować dane i dlaczego? Krótki i prosty przykład podkreślający punkt dodany do odpowiedzi byłby doskonały.

Zobacz: https://stats.stackexchange.com/questions/29781/when-conducting-multiple-regression-when-should-you-center-your-predictor-varia
Pięć odpowiedzi:
Karolis Koncevičius
2014-10-29 15:05:40 UTC
view on stackexchange narkive permalink

Moim zdaniem pytanie o skalowanie / nieskalowywanie funkcji w uczeniu maszynowym to stwierdzenie dotyczące jednostek miary funkcji. Jest to związane z wcześniejszą wiedzą, jaką masz na temat problemu.

Niektóre algorytmy, takie jak Linear Discriminant Analysis i Naive Bayes , obsługują skalowanie funkcji zgodnie z projektem i nie miałbyś żadnego wpływu na wykonanie go ręcznie. Inne, takie jak knn, mogą być przez to poważnie dotknięte.

Więc za pomocą klasyfikatora typu knn musisz zmierzyć odległości między parami próbek. Na odległości mają oczywiście wpływ zastosowane jednostki miary. Wyobraź sobie, że dzielisz populację na mężczyzn i kobiety i masz wiele pomiarów, w tym wzrost. Teraz na wynik klasyfikacji będą miały wpływ pomiary, w których podano wysokość. Jeśli wysokość jest mierzona w nanometrach, jest prawdopodobne, że k najbliższych sąsiadów będzie mieć po prostu podobne miary wysokości. Musisz skalować.

Jednak dla kontrastu wyobraź sobie klasyfikację czegoś, co ma równe jednostki miary zarejestrowane z szumem. Jak fotografia, mikromacierz lub jakieś widmo. w tym przypadku już wiesz a-priori, że twoje cechy mają równe jednostki. Gdybyś je wyskalował, wzmocniłbyś efekt cech, które są stałe we wszystkich próbkach, ale zostały zmierzone z szumem. (Jak tło zdjęcia). To znowu będzie miało wpływ na knn i może drastycznie zmniejszyć wydajność, jeśli dane mają bardziej zaszumione stałe wartości w porównaniu z tymi, które są różne. Teraz na wszelkie podobieństwa między k najbliższymi sąsiadami wpłynie hałas.

Więc to jest tak samo jak w przypadku wszystkiego innego w uczeniu maszynowym - korzystaj z wcześniejszej wiedzy, gdy tylko jest to możliwe, aw przypadku funkcji czarnej skrzynki rób jedno i drugie. zweryfikować.

Dobre przykłady ...
Tylko krótkie podsumowanie, dlaczego na kNN miałoby wpływać skalowanie funkcji?O ile rozumiem, odległość Mahalanobisa już powinna to wyjaśniać.
@SebastianRaschka Kiedy z jakiegoś powodu wspomniano o kNN, miałem na myśli tylko odległość euklidesową.To powinno wyjaśnić zamieszanie.Oczywiście kNN może być używany z innymi miernikami odległości i dziękujemy za zauważenie tego.
Na kursie uczenia maszynowego Andrew Ng wyjaśnia, że skalowanie cech jest również ważne podczas wykonywania zstępowania gradientu w celu dopasowania modelu regresji liniowej (https://www.coursera.org/learn/machine-learning/lecture/xx3Da/gradient-descent-w-praktyce-skalowanie-funkcji).
Neil G
2014-10-29 14:58:58 UTC
view on stackexchange narkive permalink

Powinieneś normalizować, gdy skala cechy jest nieistotna lub wprowadzająca w błąd, i nie normalizować, gdy skala jest znacząca.

K-oznacza uważa odległość euklidesową za znaczącą. Jeśli cecha ma dużą skalę w porównaniu z inną, ale pierwsza cecha naprawdę reprezentuje większą różnorodność, wówczas grupowanie w tym wymiarze powinno być karane.

W regresji, o ile masz uprzedzenia, nie ma to znaczenia jeśli normalizujesz lub nie, odkąd odkrywasz mapę afiniczną, a kompozycja transformacji skalującej i mapy afinicznej jest nadal afiniczna.

Gdy w grę wchodzą współczynniki uczenia się, np. kiedy wykonujesz opadanie gradientowe, skala wejściowa efektywnie skaluje gradienty, co może wymagać jakiejś metody drugiego rzędu, aby ustabilizować współczynniki uczenia się dla każdego parametru. Prawdopodobnie łatwiej jest znormalizować dane wejściowe, jeśli nie ma to znaczenia.

show_stopper
2014-10-29 14:49:07 UTC
view on stackexchange narkive permalink

Istnieje kilka metod normalizacji.

Jeśli chodzi o regresję, jeśli planujesz znormalizować cechę o jeden czynnik, nie ma takiej potrzeby. Powodem jest to, że normalizacja jednoczynnikowa, taka jak dzielenie lub mnożenie przez stałą, już jest dostosowywana w wagach (tj. Powiedzmy, że waga cechy wynosi 3, ale jeśli znormalizujemy wszystkie wartości cechy przez podzielenie przez 2, to nowa waga wyniesie 6, więc ogólnie efekt jest taki sam). W przeciwieństwie do tego, jeśli planujesz normalizować na myśli, to jest inna historia. Średnia normalizacja jest dobra, gdy występuje duża zmienność wartości cech (1 70 300 4). Również jeśli pojedyncza cecha może mieć zarówno pozytywny, jak i negatywny wpływ, dobrze jest znormalizować. Dzieje się tak, ponieważ gdy masz na myśli normalizację danego zestawu wartości dodatnich, wówczas wartości poniżej średniej stają się ujemne, a te powyżej średniej stają się dodatnie.

W odniesieniu do k-najbliższych sąsiadów normalizacja powinna być wykonywana cały czas. Dzieje się tak, ponieważ w KNN odległość między punktami powoduje tworzenie klastrów. Więc jeśli stosujesz KNN do problemu z 2 cechami, przy czym pierwsza cecha zawiera się w przedziale od 1 do 10, a druga od 1 do 1000, wówczas wszystkie klastry zostaną wygenerowane na podstawie drugiej cechy, ponieważ różnica między 1 a 10 wynosi małe w porównaniu do 1-1000 i dlatego wszystkie mogą być zgrupowane w jednej grupie

„… Jeśli pojedyncza cecha może mieć zarówno pozytywny, jak i negatywny wpływ, dobrze jest normalizować średnią. Dzieje się tak, ponieważ kiedy masz na myśli normalizację danego zestawu wartości dodatnich, wówczas wartości poniżej średniej stają się ujemne, a te powyżej średniej stają się dodatnie."- czy istnienie terminu nastawionego na odchylenie nie pozwoli, aby jakakolwiek cecha miała pozytywny lub negatywny wpływ pomimo dodatniego zakresu wartości?
cbeleites unhappy with SX
2015-10-04 17:00:37 UTC
view on stackexchange narkive permalink

Oto kolejny przykład zastosowania chemometrycznego, w którym skalowanie cech byłoby katastrofalne:

Istnieje wiele zadań klasyfikacyjnych (analizy jakościowej) w postaci „sprawdź, czy zawartość jakiejś analitu (= substancji będącej przedmiotem zainteresowania) znajduje się poniżej ( lub powyżej) określony próg (np. limit prawny) ”. W tym przypadku czujniki do generowania danych wejściowych dla klasyfikatora powinny mieć sygnał $$ = f (stężenie analitu) $$, najlepiej, aby $ f $ było funkcją stromą, a nawet liniową.

W tej sytuacji skalowanie funkcji zasadniczo usunie wszystkie istotne informacje z surowych danych.


Ogólnie, niektóre pytania, które pomagają zdecydować, czy skalowanie jest dobrym pomysłem:

  • Jak normalizacja wpływa na twoje dane wrt. rozwiązujesz zadanie? Czy powinno to stać się łatwiejsze, czy ryzykujesz usunięcie ważnych informacji?
  • Czy Twój algorytm / klasyfikator reaguje wrażliwie na (numeryczną) skalę danych? (zbieżność)
  • Czy na algorytm / klasyfikator w dużym stopniu wpływają różne skale różnych cech?
  • Jeśli tak, czy funkcje mają te same (lub porównywalne) skale, a nawet jednostki fizyczne?
  • Czy Twój klasyfikator / algorytm / rzeczywista implementacja przeprowadza własną normalizację?
RUser4512
2018-04-19 13:55:32 UTC
view on stackexchange narkive permalink

Wydaje się, że ten problem jest pomijany w wielu kursach / zasobach dotyczących uczenia maszynowego. Skończyło się na tym, że napisałem artykuł o skalowaniu na moim blogu.

Krótko mówiąc, istnieją niezmienne metody uczenia się "transformacji monotonicznej" (drzewa decyzyjne i wszystko, co z nich pochodzi), metody uczenia się niezmiennego translacji (kNN, SVM z jądrem RBF) i inne.

Oczywiście, metody uczenia się niezmiennicze transformacji monotonicznej są niezmienne translacji.

W przypadku pierwszej klasy nie musisz wykonywać żadnego centrowania / skalowania. Przy niezmiennych algorytmach translacji centrowanie jest bezużyteczne. W przypadku innych metod to naprawdę zależy od danych. Zwykle warto spróbować ze skalowaniem (zwłaszcza jeśli zmienne mają różne rzędy wielkości).

W ogólnym przypadku zalecałbym wypróbowanie różnych wstępnych procesów przetwarzania danych: bez skalowania, skalowania dzielenia przez odchylenie standardowe, skalowania dzielenia przez sumę wartości bezwzględnych danych (co sprawiłoby, że leżałyby one na simplex). Jeden z nich będzie działał lepiej niż inne, ale nie mogę powiedzieć, który z nich, dopóki nie spróbuję.



To pytanie i odpowiedź zostało automatycznie przetłumaczone z języka angielskiego.Oryginalna treść jest dostępna na stackexchange, za co dziękujemy za licencję cc by-sa 3.0, w ramach której jest rozpowszechniana.
Loading...