Wszechstronny przewodnik po ulepszaniu algorytmów uczenia maszynowego



Ten blog w całości koncentruje się na tym, jak działa Boosting Machine Learning i jak można je wdrożyć w celu zwiększenia wydajności modeli Machine Learning.

Przy tak wielu postępach w dziedzinie opieki zdrowotnej, marketingu, biznesu itp., Konieczne stało się opracowanie bardziej zaawansowanych i złożonych . Wspieranie uczenia maszynowego jest jedną z takich technik, które można wykorzystać do rozwiązywania złożonych, opartych na danych, rzeczywistych problemów. Ten blog jest całkowicie poświęcony temu, jak działa Boosting Machine Learning i jak można go wdrożyć, aby zwiększyć wydajność modeli Machine Learning.

Aby uzyskać dogłębną wiedzę na temat sztucznej inteligencji i uczenia maszynowego, możesz zarejestrować się na żywo by Edureka z całodobowym wsparciem i dożywotnim dostępem.





Oto lista tematów, które zostaną omówione na tym blogu:

  1. Dlaczego Boosting jest używany?
  2. Co to jest wzmocnienie?
  3. Jak działa algorytm wzmacniający?
  4. Rodzaje wzmocnienia
  5. Próbny

Dlaczego stosuje się Boosting?

Aby rozwiązać zawiłe problemy, potrzebujemy bardziej zaawansowanych technik. Załóżmy, że mając zbiór danych zawierających obrazy kotów i psów, poproszono Cię o zbudowanie modelu, który może sklasyfikować te obrazy w dwóch oddzielnych klasach. Jak każda inna osoba, zaczniesz od zidentyfikowania obrazów, stosując kilka zasad, takich jak podane poniżej:



  1. Obraz ma spiczaste uszy: Cat

  2. Obraz ma oczy w kształcie kota: Cat

  3. Na zdjęciu większe kończyny: Pies



  4. Na obrazku zaostrzone pazury: Cat

  5. Obraz ma szerszą strukturę ust: Pies

Wszystkie te zasady pomagają nam zidentyfikować, czy obraz jest psem czy kotem, jednak gdybyśmy klasyfikowali obraz na podstawie indywidualnej (pojedynczej) reguły, przewidywanie byłoby błędne. Każda z tych reguł, z osobna, nazywana jest słabymi uczniami, ponieważ nie są one wystarczająco silne, aby zaklasyfikować obraz jako kota lub psa.

Dlatego, aby upewnić się, że nasze przewidywania są dokładniejsze, możemy połączyć prognozy od każdego z tych słabych uczniów, używając reguły większości lub średniej ważonej. To tworzy silny model ucznia.

W powyższym przykładzie zdefiniowaliśmy 5 słabych uczniów, a większość z tych reguł (tj. 3 na 5 uczniów przewiduje obraz jako kota) daje nam prognozę że obraz przedstawia kota. Dlatego naszym ostatecznym produktem jest kot.

To prowadzi nas do pytania,

Co to jest wzmocnienie?

Boosting to technika uczenia się zespołowego, która wykorzystuje zestaw algorytmów uczenia maszynowego do przekształcania słabego ucznia w silnego ucznia w celu zwiększenia dokładności modelu.

What-Is-Boosting-Boosting-Machine-Learning-Edureka

Co przyspiesza - przyspieszanie uczenia maszynowego - Edureka

Jak wspomniałem, Boosting to metoda uczenia się zespołowego, ale czym właściwie jest uczenie się zespołowe?

Co to jest zespół w uczeniu maszynowym?

Uczenie zespołowe to metoda używana do zwiększania wydajności modelu uczenia maszynowego poprzez łączenie kilku uczniów. W porównaniu z pojedynczym modelem ten rodzaj uczenia się tworzy modele o zwiększonej wydajności i dokładności. Właśnie dlatego metody zespołowe są wykorzystywane do wygrywania wiodących na rynku konkursów, takich jak konkurs rekomendacji Netflix, konkursy Kaggle i tak dalej.

Co to jest uczenie zespołowe - przyspieszanie uczenia maszynowego - Edureka

Poniżej omówiłem również różnicę między Boostingiem a Baggingiem.

Zwiększanie vs Pakowanie

Uczenie się zespołowe można przeprowadzić na dwa sposoby:

  1. Zespół sekwencyjny, popularnie znany jako pobudzanie , tutaj słabi uczniowie są kolejno produkowani podczas fazy szkolenia. Wydajność modelu poprawia się poprzez przypisanie większej wagi poprzednim, nieprawidłowo sklasyfikowanym próbkom. Przykładem boostingu jest algorytm AdaBoost.

    java konwertując double na int
  2. Zestaw równoległy , popularnie znany jako parcianka , tutaj słabi uczniowie są przygotowywani równolegle podczas fazy szkolenia. Wydajność modelu można zwiększyć poprzez równoległe szkolenie wielu słabych uczniów na zestawach danych bootstrap. Przykładem pakowania jest Losowy Las algorytm.

W tym blogu skupię się na metodzie Boosting, więc w poniższej sekcji dowiemy się, jak działa algorytm wzmacniający.

Jak działa algorytm wzmacniający?

Podstawową zasadą działania algorytmu wzmacniającego jest generowanie wielu słabych uczniów i łączenie ich przewidywań w jedną silną regułę. Te słabe reguły są generowane przez zastosowanie podstawowych algorytmów uczenia maszynowego na różnych rozkładach zestawu danych. Te algorytmy generują słabe reguły dla każdej iteracji. Po wielu iteracjach słabi uczniowie są łączeni w silnego ucznia, który przewiduje dokładniejszy wynik.

Jak działa Boosting Algorithm - Boosting Machine Learning - Edureka

Oto jak działa algorytm:

Krok 1: Podstawowy algorytm odczytuje dane i przypisuje równą wagę każdej obserwacji próbki.

Krok 2: Identyfikowane są fałszywe przewidywania dokonane przez podstawowego ucznia. W następnej iteracji te fałszywe przewidywania są przypisywane do następnego podstawowego ucznia z wyższą wagą tych nieprawidłowych przewidywań.

Krok 3: Powtarzaj krok 2, aż algorytm będzie mógł poprawnie sklasyfikować dane wyjściowe.

Dlatego głównym celem Boostingu jest skupić się bardziej na prognozach błędnie sklasyfikowanych.

Skoro już wiemy, jak działa algorytm wzmacniający, przyjrzyjmy się różnym typom technik wzmacniających.

Rodzaje wzmocnienia

Istnieją trzy główne sposoby, za pomocą których można przeprowadzić wzmocnienie:

  1. Adaptive Boosting lub AdaBoost

  2. Gradient Boosting

  3. XGBoost

Omówię podstawy każdego z tych typów.

Adaptive Boosting

  • AdaBoost jest wdrażany poprzez połączenie kilku słabych uczniów w jednego silnego ucznia.

  • Słabi uczący się w AdaBoost biorą pod uwagę jedną funkcję wejściową i rysują pojedyncze podzielone drzewo decyzyjne zwane pniem decyzji. Podczas wyciągania pierwszego pnia decyzyjnego każda obserwacja jest jednakowo ważona.

  • Wyniki z pierwszego pnia decyzyjnego są analizowane i jeśli jakiekolwiek obserwacje są błędnie sklasyfikowane, przypisuje się im wyższe wagi.

  • Po tym, nowy fragment decyzji jest rysowany, biorąc pod uwagę obserwacje z wyższymi wagami jako bardziej znaczące.

  • Ponownie, jeśli jakiekolwiek obserwacje są błędnie sklasyfikowane, przypisuje się im większą wagę i proces ten trwa do momentu, gdy wszystkie obserwacje znajdą się we właściwej klasie.

  • Adaboost może być używany zarówno w przypadku problemów klasyfikacyjnych, jak i opartych na regresji, jednak jest on częściej używany do celów klasyfikacyjnych.

Gradient Boosting

Gradient Boosting jest również oparty na sekwencyjnym uczeniu się zespołu. Tutaj podstawowi uczniowie są generowani sekwencyjnie w taki sposób, że obecny podstawowy uczeń jest zawsze bardziej skuteczny niż poprzedni, tj. Ogólny model poprawia się sekwencyjnie z każdą iteracją.

Różnica w tego typu wzmocnieniu polega na tym, że wagi dla źle sklasyfikowanych wyników nie są zwiększane, zamiast tego metoda Gradient Boosting próbuje zoptymalizować funkcję straty poprzedniego ucznia, dodając nowy model, który dodaje słabych uczniów w celu zmniejszenia funkcji straty.

regresja logistyczna na przykładzie Pythona

Główną ideą jest tutaj przezwyciężenie błędów w przewidywaniach poprzedniego ucznia. Ten rodzaj wzmocnienia składa się z trzech głównych elementów:

  1. Funkcja strat to wymaga poprawy.

  2. Słaby uczeń do obliczania prognoz i kształtowania silnych uczniów.

  3. Na Model addytywny które uregulują funkcję straty.

Podobnie jak AdaBoost, Gradient Boosting może być również używany do rozwiązywania problemów z klasyfikacją i regresją.

XGBoost

XGBoost to zaawansowana wersja metody Gradient Boosting, dosłownie oznacza eXtreme Gradient Boosting. XGBoost opracowany przez Tianqi Chen należy do kategorii Distributed Machine Learning Community (DMLC).

Głównym celem tego algorytmu jest zwiększenie szybkości i wydajności obliczeń. Algorytm Gradient Descent Boosting oblicza dane wyjściowe w wolniejszym tempie, ponieważ sekwencyjnie analizuje zestaw danych, dlatego XGBoost służy do zwiększania lub ekstremalnego zwiększania wydajności modelu.

XGBoost - przyspieszenie uczenia maszynowego - Edureka

XGBoost został zaprojektowany z myślą o szybkości obliczeniowej i wydajności modelu. Główne funkcje oferowane przez XGBoost to:

  • Równolegle tworzy drzewa decyzyjne.

  • Wdrażanie rozproszonych metod obliczeniowych do oceny dużych i złożonych modeli.

  • Korzystanie z obliczeń poza rdzeniem do analizowania ogromnych zbiorów danych.

  • Wdrażanie optymalizacji pamięci podręcznej w celu jak najlepszego wykorzystania zasobów.

Więc to byłyróżne typy algorytmów wspomagania uczenia maszynowego. Aby było ciekawie, w poniższej sekcji uruchomimy demo, aby zobaczyć, jak algorytmy zwiększające można zaimplementować w Pythonie.

Zwiększenie uczenia maszynowego w Pythonie

Krótkie zastrzeżenie: będę używać Pythona do uruchomienia tego demo, więc jeśli nie znasz Pythona, możesz przejść przez następujące blogi:

  1. Jak uczyć się Pythona 3 od podstaw - przewodnik dla początkujących

Czas zabrudzić sobie ręce i zacząć programować.

Oświadczenie dotyczące problemu: Zbadanie zbioru danych o grzybach i zbudowanie modelu uczenia maszynowego, który może sklasyfikować grzyby jako trujące lub nie, poprzez analizę jego cech.

Opis zbioru danych: Ten zestaw danych zawiera szczegółowy opis hipotetycznych próbek w odniesieniu do 23 gatunków grzybów skrzelowych. Każdy gatunek jest klasyfikowany jako grzyby jadalne lub niejadalne (trujące).

Logika: Zbudowanie modelu uczenia maszynowego przy użyciu jednego z algorytmów wspomagających w celu przewidzenia, czy grzyb jest jadalny, czy nie.

Krok 1: Zaimportuj wymagane pakiety

from sklearn.ensemble import AdaBoostClassifier from sklearn.preprocessing import LabelEncoder from sklearn.tree import DecisionTreeClassifier import pandas as pd # Import train_test_split function from sklearn.model_selection import train_test_split #Import scikit-Learn metrics module do obliczania dokładności

Krok 2: Zaimportuj zestaw danych

# Load in the data dataset = pd.read_csv ('C: //Users//NeelTemp//Desktop//mushroomsdataset.csv')

Krok 3: Przetwarzanie danych

# Zdefiniuj nazwy kolumn dataset.columns = ['target', 'cap-shape', 'cap-surface', 'cap-color', 'bruises', 'odor', 'gill-attach', 'gill-spacing ',' wielkość skrzeli ',' kolor skrzeli ',' kształt łodygi ',' korzeń łodygi ',' powierzchnia łodygi nad pierścieniem ',' powierzchnia łodygi poniżej pierścienia ',' kolor łodygi -nad pierścieniem ”,„ kolor łodygi-poniżej pierścienia ”,„ typ zasnówki ”,„ kolor zasłony ”,„ numer pierścienia ”,„ typ pierścienia ”,„ kolor odcisku zarodników ”,„ populacja ',' habitat '] dla etykiety w dataset.columns: dataset [label] = LabelEncoder (). fit (dataset [etykieta]). transform (dataset [etykieta]) #Wyświetl informacje o zestawie danych print (dataset.info ( )) Int64Index: 8124 wpisy, od 6074 do 686 Kolumny danych (łącznie 23 kolumny): docelowy 8124 niezerowy int32 kształt czapki 8124 niezerowy int32 cap-surface 8124 niezerowy int32 cap-color 8124 niezerowy int32 siniaki 8124 niezerowy int32 zapach 8124 niezerowy int32 mocowanie skrzelowe 8124 niezerowy int32 odstęp między skrzelami 8124 niezerowy int32 rozmiar skrzeli 8124 niezerowy int32 kolor blaszek 8124 niezerowy int32 kształt łodygi 8124 niezerowy int32 stalk-root 8124 non-null int32 powierzchnia łodygi nad pierścieniem 8124 niezerowa int32 powierzchnia łodygi poniżej pierścienia 8124 niezerowa int32 kolor łodygi nad pierścieniem 8124 niezerowa int32 kolor łodygi poniżej pierścienia 8124 niezerowa int32 zasłona typ 8124 niezerowy int32 kolor welonu 8124 niezerowy int32 numer pierścienia 8124 niezerowy int32 typ pierścienia 8124 niezerowy int32 odcisk zarodnika kolor 8124 niezerowa populacja int32 8124 niezerowa int32 siedlisko 8124 nie- null int32 dtypes: int32 (23) użycie pamięci: 793,4 KB

Krok 4: Łączenie danych

X = dataset.drop (['target'], axis = 1) Y = dataset ['target'] X_train, X_test, Y_train, Y_test = train_test_split (X, Y, test_size = 0,3)

Krok 5: Zbuduj model

model = DecisionTreeClassifier (kryterium = 'entropia', max_depth = 1) AdaBoost = AdaBoostClassifier (base_estimator = model, n_estimators = 400, learning_rate = 1)

W powyższym fragmencie kodu zaimplementowaliśmy algorytm AdaBoost. Funkcja „AdaBoostClassifier” przyjmuje trzy ważne parametry:

  • base_estimator: Estymator podstawowy (słaby uczeń) to domyślnie drzewa decyzyjne
  • n_estimator: To pole określa liczbę podstawowych uczniów do wykorzystania.
  • learning_rate: To pole określa współczynnik uczenia się, który ustawiliśmy na wartość domyślną, czyli 1.
# Dopasuj model z danymi treningowymi boostmodel = AdaBoost.fit (X_train, Y_train)

Krok 6: Ocena modelu

# Oceń dokładność modelu y_pred = boostmodel.predict (X_test) Predictions = metrics.accuracy_score (Y_test, y_pred) # Obliczanie dokładności w druku procentowym ('Dokładność wynosi:', prognozy * 100, '%') Dokładność wynosi: 100,0%

Otrzymaliśmy dokładność 100%, która jest doskonała!

Tak więc kończymy ten blog dotyczący ulepszania uczenia maszynowego. Jeśli chcesz dowiedzieć się więcej o uczeniu maszynowym, możesz przeczytać te blogi:

Jeśli chcesz zapisać się na pełny kurs sztucznej inteligencji i uczenia maszynowego, Edureka ma specjalnie wyselekcjonowany kurs to sprawi, że będziesz biegły w technikach, takich jak uczenie się nadzorowane, uczenie się bez nadzoru i przetwarzanie języka naturalnego. Obejmuje szkolenia dotyczące najnowszych osiągnięć i podejść technicznych w dziedzinie sztucznej inteligencji i uczenia maszynowego, takich jak uczenie głębokie, modele graficzne i uczenie się ze wzmocnieniem.