Wyjaśnienie algorytmów uczenia maszynowego

Uczenie maszynowe i uczenie głębokie zostały szeroko przyjęte, a jeszcze szerzej źle zrozumiane. W tym artykule chciałbym cofnąć się i wyjaśnić zarówno uczenie maszynowe, jak i głębokie uczenie się w podstawowych terminach, omówić niektóre z najpopularniejszych algorytmów uczenia maszynowego oraz wyjaśnić, jak te algorytmy odnoszą się do innych elementów układanki tworzenia modeli predykcyjnych z danych historycznych.

Co to są algorytmy uczenia maszynowego?

Przypomnijmy, że uczenie maszynowe to klasa metod do automatycznego tworzenia modeli z danych. Algorytmy uczenia maszynowego są silnikami uczenia maszynowego, co oznacza, że ​​to algorytmy przekształcają zestaw danych w model. To, który rodzaj algorytmu działa najlepiej (nadzorowany, nienadzorowany, klasyfikacja, regresja itp.) Zależy od rodzaju problemu, który rozwiązujesz, dostępnych zasobów obliczeniowych i charakteru danych.

Jak działa uczenie maszynowe

Zwykłe algorytmy programowania mówią komputerowi, co ma robić w prosty sposób. Na przykład algorytmy sortowania zamieniają nieuporządkowane dane w dane uporządkowane według pewnych kryteriów, często według kolejności numerycznej lub alfabetycznej jednego lub większej liczby pól w danych.

Algorytmy regresji liniowej dopasowują linię prostą lub inną funkcję, która jest liniowa w swoich parametrach, takich jak wielomian, do danych numerycznych, zwykle wykonując odwrócenie macierzy w celu zminimalizowania błędu kwadratu między linią a danymi. Kwadratowy błąd jest używany jako metryka, ponieważ nie ma znaczenia, czy linia regresji znajduje się powyżej czy poniżej punktów danych; dbasz tylko o odległość między linią a punktami.

Algorytmy regresji nieliniowej, które dopasowują krzywe o nieliniowych parametrach do danych , są nieco bardziej skomplikowane, ponieważ w przeciwieństwie do problemów z regresją liniową nie można ich rozwiązać metodą deterministyczną. Zamiast tego, algorytmy regresji nieliniowej implementują pewien rodzaj iteracyjnego procesu minimalizacji, często pewną odmianę metody najbardziej stromego spadku.    

Najbardziej strome zejście w zasadzie oblicza kwadratowy błąd i jego gradient przy bieżących wartościach parametrów, wybiera rozmiar kroku (inaczej szybkość uczenia się), podąża za kierunkiem gradientu „w dół wzgórza”, a następnie ponownie oblicza kwadrat błędu i jego gradient w nowym wartości parametrów. W końcu, przy odrobinie szczęścia, proces się zbiega. Warianty na najbardziej stromym zejściu próbują poprawić właściwości zbieżności.

Algorytmy uczenia maszynowego są jeszcze mniej proste niż regresja nieliniowa, częściowo dlatego, że uczenie maszynowe rezygnuje z ograniczenia dopasowania do określonej funkcji matematycznej, takiej jak wielomian. Istnieją dwie główne kategorie problemów, które często są rozwiązywane przez uczenie maszynowe: regresja i klasyfikacja. Regresja dotyczy danych liczbowych (np. Jaki jest prawdopodobny dochód osoby o podanym adresie i zawodzie?), A klasyfikacja dotyczy danych nienumerycznych (np. Czy wnioskodawca nie spłaci tej pożyczki?).

Problemy z prognozami (np. Jaka będzie jutro cena otwarcia akcji Microsoft?) To podzbiór problemów regresyjnych dla danych szeregów czasowych. Problemy klasyfikacyjne są czasami podzielone na problemy binarne (tak lub nie) i problemy wielu kategorii (zwierzęce, roślinne lub mineralne).

Uczenie się nadzorowane a uczenie się nienadzorowane

Niezależnie od tych podziałów istnieją jeszcze dwa rodzaje algorytmów uczenia maszynowego: nadzorowane i nienadzorowane. W uczeniu nadzorowanym dostarczasz zestaw danych szkoleniowych z odpowiedziami, na przykład zestaw zdjęć zwierząt wraz z nazwami zwierząt. Celem tego szkolenia byłby model, który mógłby poprawnie zidentyfikować obraz (rodzaju zwierzęcia, które było zawarte w zestawie szkoleniowym), którego wcześniej nie widział.

W uczeniu się bez nadzoru algorytm samodzielnie analizuje dane i próbuje uzyskać znaczące wyniki. Wynikiem może być na przykład zestaw klastrów punktów danych, które mogą być powiązane w każdym klastrze. Działa to lepiej, gdy klastry się nie pokrywają.

Trening i ocena przekształcają nadzorowane algorytmy uczenia się w modele poprzez optymalizację ich parametrów w celu znalezienia zestawu wartości, który najlepiej pasuje do rzeczywistej prawdziwości danych. Algorytmy często opierają się na wariantach najbardziej stromego spadku dla swoich optymalizatorów, na przykład stochastyczne zejście gradientowe (SGD), które jest zasadniczo najbardziej stromym zejściem wykonywanym wielokrotnie z losowych punktów początkowych. Typowe udoskonalenia SGD dodają czynniki, które korygują kierunek gradientu na podstawie pędu lub dostosowują tempo uczenia się na podstawie postępu od jednego przejścia przez dane (zwanego epoką) do następnego.

Czyszczenie danych na potrzeby uczenia maszynowego

Na wolności nie ma czegoś takiego jak czyste dane. Aby dane były przydatne w uczeniu maszynowym, muszą być agresywnie filtrowane. Na przykład będziesz chciał:

  1. Przejrzyj dane i wyklucz wszystkie kolumny, w których brakuje wielu danych.
  2. Spójrz ponownie na dane i wybierz kolumny, których chcesz użyć w prognozie. (To jest coś, co możesz chcieć zmienić podczas iteracji).
  3. Wyklucz wszystkie wiersze, w których nadal brakuje danych w pozostałych kolumnach.
  4. Popraw oczywiste literówki i połącz równoważne odpowiedzi. Na przykład Stany Zjednoczone, Stany Zjednoczone, Stany Zjednoczone i Ameryka powinny zostać połączone w jedną kategorię.
  5. Wyklucz wiersze zawierające dane spoza zakresu. Na przykład, jeśli analizujesz podróże taksówką w Nowym Jorku, będziesz chciał odfiltrować wiersze z szerokościami geograficznymi i długościami odbioru lub odjazdu, które znajdują się poza polem ograniczającym obszar metropolitalny.

Możesz zrobić o wiele więcej, ale będzie to zależeć od zebranych danych. Może to być żmudne, ale jeśli skonfigurujesz krok czyszczenia danych w potoku uczenia maszynowego, możesz go modyfikować i powtarzać w dowolnym momencie.

Kodowanie i normalizacja danych na potrzeby uczenia maszynowego

Aby użyć danych kategorialnych do klasyfikacji maszyn, należy zakodować etykiety tekstowe w innym formularzu. Istnieją dwa popularne kodowania.

Jednym z nich jest kodowanie etykiet , co oznacza, że ​​każda wartość etykiety tekstowej jest zastępowana liczbą. Drugi to kodowanie na gorąco , co oznacza, że ​​każda wartość etykiety tekstowej jest zamieniana na kolumnę z wartością binarną (1 lub 0). Większość platform uczenia maszynowego ma funkcje, które wykonują konwersję za Ciebie. Ogólnie preferowane jest kodowanie typu one-hot, ponieważ kodowanie etykiet może czasami mylić algorytm uczenia maszynowego z myślą, że zakodowana kolumna jest uporządkowana.

Aby użyć danych liczbowych do regresji maszynowej, zwykle trzeba znormalizować dane. W przeciwnym razie liczby z większymi zakresami mogą mieć tendencję do dominowania odległości euklidesowej między wektorami cech , ich efekty można zwiększyć kosztem innych pól, a optymalizacja najbardziej stromego spadku może mieć trudności ze zbieżnością. Istnieje wiele sposobów normalizacji i standaryzacji danych dla ML, w tym normalizacji min-max, normalizacji średniej, standaryzacji i skalowania do długości jednostki. Ten proces jest często nazywany skalowaniem funkcji .

Co to są funkcje uczenia maszynowego?

Ponieważ wspomniałem o wektorach cech w poprzedniej sekcji, powinienem wyjaśnić, czym one są. Cecha to przede wszystkim indywidualna mierzalna właściwość lub cecha charakterystyczna obserwowanego zjawiska. Pojęcie „cechy” jest powiązane z pojęciem zmiennej objaśniającej, która jest używana w technikach statystycznych, takich jak regresja liniowa. Wektory cech łączą wszystkie cechy z jednego wiersza w wektor numeryczny.

Częścią sztuki wybierania cech jest wybranie minimalnego zestawu niezależnych zmiennych, które wyjaśniają problem. Jeśli dwie zmienne są silnie skorelowane, albo trzeba je połączyć w jedną cechę, albo jedną należy usunąć. Czasami ludzie wykonują analizę składowych głównych, aby przekształcić skorelowane zmienne w zbiór liniowo nieskorelowanych zmiennych.

Niektóre transformacje, których ludzie używają do konstruowania nowych funkcji lub zmniejszania wymiarowości wektorów cech, są proste. Na przykład odejmij Year of Birthod Year of Deathi skonstruuj Age at Death, która jest główną zmienną niezależną do analizy czasu życia i śmiertelności. W innych przypadkach konstrukcja funkcji może nie być tak oczywista.

Typowe algorytmy uczenia maszynowego

Istnieją dziesiątki algorytmów uczenia maszynowego o różnym stopniu złożoności, od regresji liniowej i regresji logistycznej po głębokie sieci neuronowe i zespoły (kombinacje innych modeli). Jednak niektóre z najpopularniejszych algorytmów obejmują:

  • Regresja liniowa, czyli regresja metodą najmniejszych kwadratów (dla danych liczbowych)
  • Regresja logistyczna (dla klasyfikacji binarnej)
  • Liniowa analiza dyskryminacyjna (dla klasyfikacji wielu kategorii)
  • Drzewa decyzyjne (zarówno dla klasyfikacji, jak i regresji)
  • Naïve Bayes (zarówno dla klasyfikacji, jak i regresji)
  • K-Nearest Neighbours, czyli KNN (zarówno dla klasyfikacji, jak i regresji)
  • Nauka kwantyzacji wektorów, czyli LVQ (zarówno dla klasyfikacji, jak i regresji)
  • Support Vector Machines, aka SVM (do klasyfikacji binarnej)
  • Random Forests, rodzaj algorytmu zbiorczego „workowania” (zarówno dla klasyfikacji, jak i regresji)
  • Metody wspomagające, w tym AdaBoost i XGBoost, to algorytmy zespołowe, które tworzą serię modeli, w których każdy nowy model próbuje skorygować błędy z poprzedniego modelu (zarówno dla klasyfikacji, jak i regresji)

Gdzie są sieci neuronowe i głębokie sieci neuronowe, o których tak dużo słyszymy? Zwykle wymagają dużej mocy obliczeniowej do tego stopnia, że ​​wymagają procesorów graficznych lub innego specjalistycznego sprzętu, dlatego należy ich używać tylko w przypadku specjalistycznych problemów, takich jak klasyfikacja obrazu i rozpoznawanie mowy, które nie są dobrze dostosowane do prostszych algorytmów. Zwróć uwagę, że „głęboka” oznacza, że ​​w sieci neuronowej jest wiele ukrytych warstw.

Więcej informacji na temat sieci neuronowych i uczenia głębokiego można znaleźć w artykule „Co naprawdę oznacza uczenie głębokie”.

Hiperparametry dla algorytmów uczenia maszynowego

Algorytmy uczenia maszynowego uczą się na danych, aby znaleźć najlepszy zestaw wag dla każdej zmiennej niezależnej, która ma wpływ na przewidywaną wartość lub klasę. Same algorytmy mają zmienne, zwane hiperparametrami. Nazywa się je hiperparametrami, w przeciwieństwie do parametrów, ponieważ kontrolują one działanie algorytmu, a nie określane wagi.

Najważniejszym hiperparametrem jest często szybkość uczenia się, która określa wielkość kroku używanego podczas znajdowania następnego zestawu wag do wypróbowania podczas optymalizacji. Jeśli tempo uczenia się jest zbyt wysokie, spadek gradientu może szybko zbiegać się w plateau lub w punkcie nieoptymalnym. Jeśli tempo uczenia się jest zbyt niskie, opadanie gradientu może się zatrzymać i nigdy nie zbiegnie się całkowicie.

Wiele innych popularnych hiperparametrów zależy od zastosowanych algorytmów. Większość algorytmów ma parametry zatrzymujące, takie jak maksymalna liczba epok, maksymalny czas działania lub minimalna poprawa z epoki na epokę. Określone algorytmy mają hiperparametry, które kontrolują kształt ich wyszukiwania. Na przykład, Losowy Klasyfikator Leśny ma hiperparametry dla minimalnej liczby próbek na liść, maksymalnej głębokości, minimalnych próbek przy podziale, minimalnej frakcji wagi dla liścia i około 8 innych.

Strojenie hiperparametrów

Kilka produkcyjnych platform uczenia maszynowego oferuje teraz automatyczne dostrajanie hiperparametrów. Zasadniczo mówisz systemowi, jakie hiperparametry chcesz zmieniać i być może jaką metrykę chcesz zoptymalizować, a system analizuje te hiperparametry na tyle przebiegów, ile pozwolisz. (Dostrajanie hiperparametrów Google Cloud wyodrębnia odpowiednią metrykę z modelu TensorFlow, więc nie musisz jej określać).

Istnieją trzy algorytmy wyszukiwania dla szerokich hiperparametrów: optymalizacja bayesowska, wyszukiwanie siatkowe i wyszukiwanie losowe. Optymalizacja bayesowska wydaje się być najbardziej wydajna.

Można by pomyśleć, że dostrojenie jak największej liczby hiperparametrów zapewni najlepszą odpowiedź. Jednak jeśli nie korzystasz z własnego sprzętu, może to być bardzo kosztowne. W każdym razie zwroty są coraz mniejsze. Dzięki doświadczeniu odkryjesz, które hiperparametry mają największe znaczenie dla Twoich danych i doboru algorytmów.

Zautomatyzowane uczenie maszynowe

Mówiąc o wyborze algorytmów, jest tylko jeden sposób, aby dowiedzieć się, który algorytm lub zespół algorytmów da ci najlepszy model dla twoich danych, a jest to wypróbowanie ich wszystkich. Jeśli spróbujesz również wszystkich możliwych normalizacji i wyborów funkcji, staniesz w obliczu eksplozji kombinatorycznej.

Ręczne wypróbowywanie wszystkiego jest niepraktyczne, więc oczywiście dostawcy narzędzi do uczenia maszynowego włożyli wiele wysiłku w wydanie systemów AutoML. Najlepsze z nich łączą inżynierię cech z przemiataniem algorytmów i normalizacjami. Strojenie hiperparametrów najlepszego modelu lub modeli jest często pozostawione na później. Inżynieria funkcji jest jednak trudnym problemem do zautomatyzowania i nie wszystkie systemy AutoML sobie z tym radzą.

Podsumowując, algorytmy uczenia maszynowego to tylko jeden element układanki uczenia maszynowego. Oprócz wyboru algorytmu (ręcznego lub automatycznego) będziesz musiał zajmować się optymalizatorami, czyszczeniem danych, wyborem funkcji, normalizacją funkcji i (opcjonalnie) dostrajaniem hiperparametrów.

Kiedy już to wszystko załatwisz i zbudujesz model, który będzie działał dla twoich danych, nadejdzie czas na wdrożenie modelu, a następnie zaktualizowanie go w miarę zmiany warunków. Zarządzanie modelami uczenia maszynowego w produkcji to jednak zupełnie inna puszka robaków.