Widzę, że wiele algorytmów uczenia maszynowego działa lepiej przy średnim anulowaniu i wyrównaniu kowariancji. Na przykład sieci neuronowe mają tendencję do szybszego konwergencji, a K-Means zazwyczaj zapewnia lepszą klastrowanie z wstępnie przetworzonymi funkcjami. Nie widzę intuicji za tymi krokami wstępnego przetwarzania, które prowadzą do poprawy wydajności. Czy ktoś może mi to wyjaśnić?
61
To prawda, że przetwarzanie wstępne w uczeniu maszynowym jest nieco czarną sztuką. W dokumentach nie jest zapisane, dlaczego kilka etapów wstępnego przetwarzania jest niezbędnych, aby działało. Nie jestem również pewien, czy jest to rozumiane w każdym przypadku. Aby skomplikować sprawę, zależy to w dużej mierze od metody, której używasz, a także od domeny problemu.
Niektóre metody, np. Niezmienne transformacji afinicznej. Jeśli masz sieć neuronową i po prostu zastosujesz transformację afiniczną do swoich danych, sieć nie straci ani nie zyska w teorii. W praktyce jednak sieć neuronowa działa najlepiej, jeśli wejścia są wyśrodkowane i białe. Oznacza to, że ich kowariancja jest przekątna, a średnia to wektor zerowy. Dlaczego to poprawia rzeczy? Dzieje się tak tylko dlatego, że optymalizacja sieci neuronowej działa z wdziękiem, ponieważ ukryte funkcje aktywacyjne nie nasycają się tak szybko, a zatem nie dają prawie zerowych gradientów na początku nauki.
Inne metody, np. K-Means, mogą dać ci zupełnie różne rozwiązania w zależności od przetwarzania wstępnego. Jest tak, ponieważ transformacja afiniczna implikuje zmianę w przestrzeni metrycznej: odległość euklidesowa między dwiema próbkami będzie inna po tej transformacji.
Na koniec dnia chcesz zrozumieć, co robisz z danymi. Np. Wybielanie w wizji komputerowej i normalizacja próbek to coś, co mózg ludzki robi również w swoim strumieniu widzenia.
źródło
Kilka pomysłów, odniesień i wykresów wyjaśniających, dlaczego normalizacja danych wejściowych może być użyteczna dla ANN i k-średnich:
K oznacza :
Przykład w Matlabie:
(FYI: Jak mogę wykryć, czy mój zestaw danych jest klastrowany czy nieklastrowany (tj. Tworzy jeden klaster )
Klaster rozproszony :
Sztuczna sieć neuronowa (wejścia) :
Sztuczna sieć neuronowa (wejścia / wyjścia)
Co ciekawe, zmiana jednostek miary może nawet doprowadzić do powstania zupełnie innej struktury klastrowania: Kaufman, Leonard i Peter J. Rousseeuw .. „Znajdowanie grup w danych: wprowadzenie do analizy skupień”. (2005).
Kaufman i in. kontynuuje kilka interesujących uwag (strona 11):
źródło
Dlaczego działa skalowanie funkcji? Mogę dać ci przykład (z Quora )
źródło
Istnieją dwa oddzielne problemy:
a) nauczenie się właściwej funkcji, np. k-średnich: skala wejściowa zasadniczo określa podobieństwo, więc znalezione klastry zależą od skalowania. regularyzacja - np. regularyzacja wag l2 - zakładasz, że każda waga powinna być „równie mała” - jeśli twoje dane nie są skalowane „odpowiednio”, nie będzie tak
b) optymalizacja, a mianowicie opadanie gradientu (np. większość sieci neuronowych). W przypadku spadku gradientu musisz wybrać współczynnik uczenia się ... ale dobry wskaźnik uczenia się (przynajmniej na 1. ukrytej warstwie) zależy od skalowania danych wejściowych: małe [odpowiednie] dane wejściowe zwykle wymagają większych obciążeń, więc chcesz uzyskać większą naukę szybkość dla tych ciężarów (aby dostać się tam szybciej) i vv dla dużych nakładów ... ponieważ chcesz użyć tylko jednego tempa uczenia się, przeskalowujesz swoje nakłady. (a wybielanie, tj. dekorelacja, jest również ważne z tego samego powodu)
źródło
Kończę Sieci neuronowe Geoffreya Hintona do uczenia maszynowego na Coursera, a on wyjaśnia to w wykładzie 6b: „Worek sztuczek do zejścia gradientowego w małych partiach”. Możesz wyświetlić podgląd wideo bez rejestracji lub logowania.
źródło
Ten artykuł mówi tylko o środkach k, ale dość dobrze wyjaśnia i udowadnia konieczność wstępnego przetwarzania danych.
.
.
Źródło: http://maxwellsci.com/print/rjaset/v6-3299-3303.pdf
źródło
Przetwarzanie wstępne często działa, ponieważ usuwa funkcje danych niezwiązane z problemem klasyfikacji, który próbujesz rozwiązać. Pomyśl na przykład o klasyfikacji danych dźwiękowych z różnych głośników. Wahania głośności (amplitudy) mogą być nieistotne, podczas gdy spektrum częstotliwości jest naprawdę istotnym aspektem. Tak więc w tym przypadku normalizacja amplitudy będzie naprawdę pomocna dla większości algorytmów ML, ponieważ usuwa aspekt danych, który jest nieistotny i spowodowałby, że sieć neuronowa nie pasowałaby do fałszywych wzorców.
źródło
Myślę, że dzieje się tak po prostu, aby funkcja o większej wartości nie przesłaniała efektów funkcji o mniejszej wartości podczas uczenia się klasyfikatora. Staje się to szczególnie ważne, jeśli funkcja o mniejszych wartościach faktycznie przyczynia się do separacji klas. Klasyfikatorzy, tacy jak regresja logistyczna, mieliby trudności z poznaniem granicy decyzji, na przykład, jeśli istnieje ona na poziomie mikro cechy, a mamy inne cechy rzędu milionów . Pomaga również algorytmowi w lepszej konwergencji. Dlatego nie ryzykujemy, kodując je w naszych algorytmach. Klasyfikatorowi znacznie łatwiej jest poznać wkład (wagi) funkcji w ten sposób. Dotyczy to również K, gdy stosuje się normy euklidesowe (zamieszanie z powodu skali). Niektóre algorytmy mogą również działać bez normalizacji.
źródło