Uczenie maszynowe bez Pythona, Anacondy i innych gadów

Nie, cóż, oczywiście, nie mówię poważnie. Musi istnieć granica zakresu, w jakim możliwe jest uproszczenie przedmiotu. Ale na pierwsze etapy, zrozumienie podstawowych pojęć i szybkie „wejście” w temat, może być do przyjęcia. O tym jak poprawnie nazwać ten materiał (opcje: „Uczenie maszynowe dla manekinów”, „Analiza danych z pieluszek”, „Algorytmy dla najmłodszych”) porozmawiamy na koniec.

Do momentu. Napisał kilka programów aplikacyjnych w MS Excel do wizualizacji i wizualnej reprezentacji procesów zachodzących w różnych metodach uczenia maszynowego podczas analizy danych. W końcu zobaczyć znaczy uwierzyć, jak mówią przedstawiciele kultury, która rozwinęła większość tych metod (swoją drogą, nie wszystkie. Najpotężniejszą „maszyną wektorów nośnych”, czyli SVM, maszyną wektorów nośnych jest wynalazek nasz rodak Władimir Wapnik, Moskiewski Instytut Zarządzania, notabene 1963! Teraz jednak wykłada i pracuje w USA).

Trzy pliki do recenzji

1. Grupowanie K-oznaczeń

Problemy tego typu odnoszą się do „uczenia się bez nadzoru”, gdy musimy podzielić dane wyjściowe na pewną liczbę znanych z góry kategorii, ale nie mamy żadnej liczby „poprawnych odpowiedzi”; musimy je wydobyć z samych danych . Zasadniczy, klasyczny problem znalezienia podgatunków kwiatów irysa (Ronald Fisher, 1936!), uważany za pierwszy przejaw tej dziedziny wiedzy, ma właśnie taki charakter.

Metoda jest dość prosta. Mamy zbiór obiektów reprezentowanych jako wektory (zbiory N liczb). W irysach są to zestawy 4 liczb charakteryzujących kwiat: odpowiednio długość i szerokość zewnętrznych i wewnętrznych płatków okwiatu (Tęczówki Fischera – Wikipedia). Jako odległość lub miarę bliskości między obiektami wybiera się zwykłą metrykę kartezjańską.

Następnie środki skupień są wybierane losowo (lub nie losowo, patrz poniżej) i obliczane są odległości od każdego obiektu do środków skupień. Każdy obiekt na danym etapie iteracji jest oznaczany jako należący do najbliższego środka. Następnie środek każdego klastra przenosi się na średnią arytmetyczną współrzędnych jego elementów (przez analogię z fizyką nazywany jest także „środkiem masy”) i procedura się powtarza.

Proces zbiega się dość szybko. Na zdjęciach w dwóch wymiarach wygląda to tak:

1. Początkowy losowy rozkład punktów na płaszczyźnie i liczba skupień

Uczenie maszynowe bez Pythona, Anacondy i innych gadów

2. Wyznaczanie ośrodków skupień i przypisywanie punktów do ich skupień

Uczenie maszynowe bez Pythona, Anacondy i innych gadów

3. Przeniesienie współrzędnych ośrodków skupień, przeliczenie przynależności punktów do czasu ustabilizowania się ośrodków. Widoczna jest trajektoria przemieszczania się środka gromady do ostatecznej pozycji.

Uczenie maszynowe bez Pythona, Anacondy i innych gadów

W każdej chwili możesz wyznaczyć nowe centra klastrów (bez generowania nowego podziału punktów!) i przekonać się, że proces podziału nie zawsze jest jednoznaczny. Matematycznie oznacza to, że dla optymalizowanej funkcji (suma kwadratów odległości punktów od środków ich skupień) znajdujemy nie minimum globalne, ale lokalne. Problem ten można przezwyciężyć albo poprzez nielosowy wybór początkowych centrów skupień, albo wyliczenie możliwych ośrodków (czasami warto umieścić je dokładnie w jednym z punktów, wtedy przynajmniej mamy gwarancję, że nie zostaniemy puste) klastry). W każdym razie zbiór skończony zawsze ma infimum.

Możesz grać z tym plikiem pod tym linkiem (nie zapomnij włączyć obsługi makr. Pliki zostały przeskanowane w poszukiwaniu wirusów)

Opis metody w Wikipedii - metoda k-średnich

2. Aproksymacja wielomianami i podział danych. Przekwalifikowanie

Wybitny naukowiec i popularyzator data science K.V. Woroncow krótko opisuje metody uczenia maszynowego jako „naukę rysowania krzywych przez punkty”. W tym przykładzie odnajdziemy wzór w danych metodą najmniejszych kwadratów.

Pokazano technikę podziału danych źródłowych na „trenujące” i „kontrolne”, a także takie zjawisko, jak przekwalifikowanie, czyli „ponowne dopasowywanie” do danych. Przy prawidłowym przybliżeniu będziemy mieli pewien błąd na danych uczących i nieco większy błąd na danych kontrolnych. Jeśli jest niepoprawna, skutkuje to precyzyjnym dopasowaniem do danych treningowych i ogromnym błędem na danych testowych.

(Wiadomo, że przez N punktów można narysować pojedynczą krzywą stopnia N-1, a metoda ta w ogólnym przypadku nie daje pożądanego rezultatu. Wielomian interpolacji Lagrange'a w Wikipedii)

1. Ustaw rozkład początkowy

Uczenie maszynowe bez Pythona, Anacondy i innych gadów

2. Punkty dzielimy na „trening” i „kontrolę” w stosunku 70 do 30.

Uczenie maszynowe bez Pythona, Anacondy i innych gadów

3. Rysujemy krzywą aproksymującą wzdłuż punktów treningowych, widzimy błąd jaki daje na danych kontrolnych

Uczenie maszynowe bez Pythona, Anacondy i innych gadów

4. Rysujemy dokładną krzywą przez punkty treningowe i widzimy potworny błąd w danych kontrolnych (i zero w danych treningowych, ale po co?).

Uczenie maszynowe bez Pythona, Anacondy i innych gadów

Pokazano oczywiście najprostszą opcję z pojedynczym podziałem na podzbiór „trenujący” i „kontrolujący”, w ogólnym przypadku robi się to wielokrotnie, aby jak najlepiej dopasować współczynniki.

Plik jest dostępny tutaj, przeskanowany przez program antywirusowy. Włącz makra dla poprawnego działania

3. Zejście gradientowe i dynamika zmiany błędu

Będzie przypadek 4-wymiarowy i regresja liniowa. Współczynniki regresji liniowej będą wyznaczane krok po kroku metodą gradientu opadania, początkowo wszystkie współczynniki wynoszą zero. Oddzielny wykres przedstawia dynamikę redukcji błędów w miarę coraz dokładniejszego dopasowywania współczynników. Możliwe jest oglądanie wszystkich czterech projekcji dwuwymiarowych.

Jeśli ustawimy krok gradientu zejścia na zbyt duży, widać, że za każdym razem pominiemy minimum i dotrzemy do wyniku w większej liczbie kroków, chociaż w końcu i tak dotrzemy (chyba że opóźnimy też krok zejścia dużo - wtedy algorytm pójdzie „w pikach”). A wykres błędu w zależności od kroku iteracji nie będzie gładki, ale „szarpany”.

1. Wygeneruj dane, ustaw stopień opadania gradientu

Uczenie maszynowe bez Pythona, Anacondy i innych gadów

2. Przy odpowiednim dobraniu stopnia zejścia gradientowego płynnie i szybko dochodzimy do minimum

Uczenie maszynowe bez Pythona, Anacondy i innych gadów

3. Jeśli krok opadania gradientu zostanie źle wybrany, przekroczymy maksimum, wykres błędów jest „szarpany”, zbieżność wymaga większej liczby kroków

Uczenie maszynowe bez Pythona, Anacondy i innych gadów
и

Uczenie maszynowe bez Pythona, Anacondy i innych gadów

4. Jeśli całkowicie błędnie dobierzemy stopień opadania gradientowego, odchodzimy od minimum

Uczenie maszynowe bez Pythona, Anacondy i innych gadów

(Aby odtworzyć proces wykorzystując wartości kroku opadania gradientu pokazane na ilustracjach, zaznacz pole „dane referencyjne”).

Plik jest pod tym linkiem, trzeba włączyć makra, nie ma wirusów.

Czy zdaniem szanownego środowiska takie uproszczenie i sposób prezentacji materiału jest dopuszczalne? Czy warto przetłumaczyć artykuł na język angielski?

Źródło: www.habr.com

Dodaj komentarz