Losowy klasyfikator lasów: przegląd, jak to działa, zalety i wady

Opublikowany: 2021-06-18

Czy kiedykolwiek zastanawiałeś się, w jaki sposób Netflix wybiera film do polecenia? Albo jak Amazon wybiera produkty do wyświetlenia w Twoim pliku danych?

Wszyscy używają systemów rekomendacji, technologii wykorzystującej losowy klasyfikator lasu.

Losowy klasyfikator lasu jest jednym z najpopularniejszych algorytmów klasyfikacji. Dzisiaj dowiemy się o tym solidnym algorytmie uczenia maszynowego i zobaczymy, jak to działa. Dowiesz się również o jego implementacji, ponieważ udostępnimy samouczek krok po kroku, jak używać losowego klasyfikatora lasu w prawdziwym problemie.

W kolejnych punktach omówimy zalety i wady losowego sklearnu lasu i wiele więcej.

Spis treści

Losowy klasyfikator lasu: wprowadzenie

Losowy klasyfikator lasu to nadzorowany algorytm uczenia, którego można używać do rozwiązywania problemów z regresją i klasyfikacją. Jest jednym z najpopularniejszych algorytmów uczenia maszynowego ze względu na dużą elastyczność i łatwość implementacji.

Dlaczego losowy klasyfikator lasu nazywa się losowym lasem?

Dzieje się tak, ponieważ składa się z wielu drzew decyzyjnych, tak jak las ma wiele drzew. Ponadto wykorzystuje losowość, aby zwiększyć swoją celność i zwalczać nadmierne dopasowanie, co może być ogromnym problemem dla tak wyrafinowanego algorytmu. Algorytmy te tworzą drzewa decyzyjne na podstawie losowego wyboru próbek danych i uzyskują predykcje z każdego drzewa. Następnie poprzez głosowania wybierają najlepsze realne rozwiązanie.

Ma wiele zastosowań w naszym codziennym życiu, takich jak selektory funkcji, systemy rekomendacji i klasyfikatory obrazów. Niektóre z jego rzeczywistych zastosowań obejmują wykrywanie oszustw, klasyfikację wniosków kredytowych i przewidywanie chorób. Stanowi podstawę algorytmu Boruta, który wybiera istotne cechy w zbiorze danych.

Jak to działa?

Zakładając, że Twój zbiór danych ma cechy „m”, losowy las losowo wybierze cechy „k”, gdzie k < m. Teraz algorytm obliczy węzeł główny spośród k cech, wybierając węzeł, który ma największy zysk informacyjny.

Następnie algorytm dzieli węzeł na węzły podrzędne i powtarza ten proces „n” razy. Teraz masz las z n drzewami. Na koniec wykonasz bootstrap, czyli połączysz wyniki wszystkich drzew decyzyjnych obecnych w twoim lesie.

Jest to z pewnością jeden z najbardziej wyrafinowanych algorytmów, ponieważ opiera się na funkcjonalności drzew decyzyjnych.

Technicznie jest to algorytm zespołowy. Algorytm generuje poszczególne drzewa decyzyjne poprzez wskazanie wyboru atrybutu. Każde drzewo opiera się na niezależnej losowej próbie. W zadaniu klasyfikacyjnym każde drzewo głosuje i najpopularniejsza klasa jest wynikiem końcowym. Z drugiej strony, w zadaniu regresji obliczysz średnią wszystkich wyników drzewa i to będzie twój wynik końcowy.

Implementacja losowego lasu w Pythonie jest znacznie prostsza i niezawodna niż inne nieliniowe algorytmy używane do rozwiązywania problemów z klasyfikacją.

Poniższy przykład pomoże ci zrozumieć, w jaki sposób używasz losowego klasyfikatora lasu w codziennym życiu:

Przykład

Załóżmy, że chcesz kupić nowy samochód i pytasz swojego najlepszego przyjaciela Supratika o jego rekomendacje. Zapytałby Cię o Twoje preferencje, budżet i wymagania, a także podzieliłby się swoimi przeszłymi doświadczeniami ze swoim samochodem, aby dać Ci rekomendację.

Tutaj Supratik używa metody Drzewa Decyzyjnego, aby przekazać Ci informacje zwrotne na podstawie Twojej odpowiedzi. Po jego sugestiach czujesz się niepewnie, jeśli chodzi o jego rady, więc pytasz Adityę o jego zalecenia, a on również pyta o twoje preferencje i inne wymagania.

Załóżmy, że powtarzasz ten proces i zadajesz to pytanie znajomym. Teraz masz do wyboru kilka samochodów. Zbierasz wszystkie głosy od znajomych i decydujesz się na zakup samochodu, który ma najwięcej głosów. Użyłeś teraz metody losowego lasu, aby wybrać samochód do kupienia.

Jednak im więcej będziesz powtarzać ten proces, tym bardziej jesteś podatny na przeciążenie. Dzieje się tak, ponieważ Twój zbiór danych w drzewach decyzyjnych będzie coraz bardziej szczegółowy. Losowy las rozwiązuje ten problem za pomocą losowości.

Plusy i minusy losowego klasyfikatora lasu

Każdy algorytm uczenia maszynowego ma swoje zalety i wady. Poniżej przedstawiono zalety i wady algorytmu losowej klasyfikacji lasów:

Zalety

  • Algorytm losowego lasu jest znacznie dokładniejszy niż większość nieliniowych klasyfikatorów.
  • Algorytm ten jest również bardzo niezawodny, ponieważ do uzyskania wyniku wykorzystuje wiele drzew decyzyjnych.
  • Losowy klasyfikator lasu nie napotyka problemu przepełnienia, ponieważ pobiera średnią ze wszystkich przewidywań, eliminując odchylenia, a tym samym rozwiązując problem przepełnienia.
  • Możesz użyć tego algorytmu zarówno do problemów z regresją, jak i klasyfikacją, co czyni go wysoce wszechstronnym algorytmem.
  • Losowe lasy nie pozwalają, aby brakujące wartości powodowały problem. Aby rozwiązać ten problem, mogą wykorzystać wartości mediany do zastąpienia zmiennych ciągłych lub obliczyć średnią ważoną zbliżoną brakujących wartości.
  • Algorytm ten zapewnia względną wagę funkcji, która pozwala łatwo wybrać najbardziej przyczyniające się funkcje do Twojego klasyfikatora.

Niedogodności

  • Algorytm ten jest znacznie wolniejszy niż inne algorytmy klasyfikacji, ponieważ do przewidywania używa wielu drzew decyzyjnych. Kiedy losowy klasyfikator lasu dokonuje prognozy, każde drzewo w lesie musi przewidzieć te same dane wejściowe i zagłosować na to samo. Ten proces może być bardzo czasochłonny.
  • Ze względu na wolne tempo losowe klasyfikatory lasów mogą nie nadawać się do prognozowania w czasie rzeczywistym.
  • Model może być dość trudny do zinterpretowania w porównaniu z drzewem decyzyjnym, ponieważ możesz dokonać wyboru, podążając ścieżką drzewa. Nie jest to jednak możliwe w losowym lesie, ponieważ ma wiele drzew decyzyjnych.

Różnica między losowym lasem a drzewami decyzyjnymi

Drzewo decyzyjne, jak sama nazwa wskazuje, jest podobnym do drzewa schematem blokowym z gałęziami i węzłami. Algorytm dzieli dane na podstawie cech wejściowych w każdym węźle i generuje wiele gałęzi jako dane wyjściowe. Jest to proces iteracyjny, zwiększający liczbę tworzonych gałęzi (wyjście) oraz zróżnicowanie danych. Proces ten powtarza się, dopóki nie zostanie utworzony węzeł, w którym prawie wszystkie dane należą do tej samej klasy, a więcej gałęzi lub podziałów nie jest możliwych.

Z drugiej strony losowy las wykorzystuje wiele drzew decyzyjnych, stąd nazwa „las”. Gromadzi głosy z różnych drzew decyzyjnych, których użył do dokonania wymaganej prognozy.

W związku z tym podstawowa różnica między losowym klasyfikatorem lasu a drzewem decyzyjnym polega na tym, że pierwszy używa kolekcji drugiego. Oto kilka dodatkowych różnic między nimi:

  • Drzewa decyzyjne borykają się z problemem nadmiernego dopasowania, ale losowe lasy nie. Dzieje się tak, ponieważ losowe klasyfikatory lasów używają losowych podzbiorów, aby przeciwdziałać temu problemowi.
  • Drzewa decyzyjne są szybsze niż losowe lasy. Lasy losowe wykorzystują wiele drzew decyzyjnych, co wymaga dużej mocy obliczeniowej, a tym samym więcej czasu.
  • Drzewa decyzyjne są łatwiejsze do zinterpretowania niż losowe lasy i można je łatwo przekonwertować zgodnie z zasadami, ale raczej trudno jest zrobić to samo w przypadku tych drugich.

Budowanie algorytmu (losowy las Sklearn)

W poniższym przykładzie wykonaliśmy losową implementację lasu Python przy użyciu biblioteki scikit-learn. Możesz postępować zgodnie z krokami tego samouczka, aby zbudować własny losowy klasyfikator lasu.

Chociaż 80% każdego zadania analizy danych wymaga optymalizacji danych, co obejmuje czyszczenie danych, czyszczenie, naprawianie brakujących wartości i wiele więcej. Jednak w tym przykładzie skupimy się wyłącznie na implementacji naszego algorytmu.

Pierwszy krok: zaimportuj biblioteki i załaduj zestaw danych

Najpierw musimy zaimportować wymagane biblioteki i załadować nasz zestaw danych do ramki danych.

Wejście:

#Importowanie wymaganych bibliotek

importuj pandy jako PD

importuj numer jako np

importuj matplotlib.pyplot jako plt

#Importowanie zbioru danych

ze sklearn.datasets importuj load_iris
zbiór danych = load_iris ()

Drugi krok: Podziel zbiór danych na zbiór treningowy i zbiór testowy

Po zaimportowaniu niezbędnych bibliotek i załadowaniu danych, musimy podzielić nasz zbiór danych na zestaw uczący i zestaw testowy. Zbiór uczący pomoże nam wytrenować model, a zestaw testowy pomoże nam określić, jak dokładny jest nasz model.

Wejście:

# Dopasuj klasyfikator do zestawu treningowego

ze sklearn.tree importuj DecisionTreeClassifier

model = DecisionTreeClassifier(kryterium = 'entropia' , splitter = 'best' , random_state = 0)

model.fit(X_train, y_train)

Wyjście:

DecisionTreeClassifier(class_weight=Brak, kryterium='entropia' , max_depth=Brak,
max_features=Brak, max_leaf_nodes=Brak,
min_impurity_decrease=0.0, min_impurity_split=Brak,
min_samples_leaf=1, min_samples_split=2,
min_weight_fraction_leaf=0.0, presort=False, random_state=0,

splitter='najlepszy')

Trzeci krok: Utwórz losowy klasyfikator lasu

Teraz utworzymy nasz losowy klasyfikator lasu za pomocą Pythona i scikit-learn.

Wejście:

#Dopasowanie klasyfikatora do zestawu treningowego

z sklearn.ensemble import RandomForestClassifier

model = RandomForestClassifier(n_estimators=100, kryterium-'entropia', random_state = 0)

model.fit(X_train, y_train)

Wyjście:

RandomForestClassifier(bootstrap=True, class_weight=Brak, kryterium='entropia',

max_depth=Brak, max_features='auto', max_leaf_nodes=Brak,

min_impurity_decrease=0.0, min_impurity_split=Brak,

min_samples_leaf=1, min_sampes_split=2,

min_weight_fraction_leaf=0.0, n_estymatorów=100, n_jobs=Brak,

oob_score=False, random_state=0, verbose=0, warm_start=False)

Czwarty krok: Przewiduj wyniki i utwórz macierz pomyłek

Po utworzeniu naszego klasyfikatora możemy przewidzieć wyniki, używając go w zbiorze testowym i utworzyć macierz pomyłek i uzyskać ich wynik dokładności dla modelu. Im wyższy wynik, tym dokładniejszy jest nasz model.

Wejście:

#Przewiduj wyniki zestawu testowego

y_pred = tryb.predict(X_test)

#Utwórz macierz pomyłek

ze sklearn.metrics importuj pomyłkę_macierzy

cm = pomyłka_macierz(y_test, y_pred)

cm

Wyjście :

tablica ([[16, 0, 0]

[0, 17, 1]

[0, 0, 11]])

Wejście :

#Zdobądź ocenę swojego modelu

model.score(X_test, y_test)

Wyjście :

0.9777777777777777

Wniosek

Losowe klasyfikatory lasu mają wiele zastosowań. Są jednymi z najbardziej niezawodnych algorytmów uczenia maszynowego i są niezbędne dla każdego profesjonalisty AI i ML.

Jeśli chcesz dowiedzieć się więcej o sztucznej inteligencji, sprawdź program PG dla kadry kierowniczej w zakresie uczenia maszynowego i sztucznej inteligencji IIIT-B i upGrad, który jest przeznaczony dla pracujących profesjonalistów i oferuje ponad 450 godzin rygorystycznych szkoleń, ponad 30 studiów przypadków i zadań, IIIT -B Status absolwenta, ponad 5 praktycznych praktycznych projektów zwieńczenia i pomoc w pracy z najlepszymi firmami.

Czym jest Random Forest w uczeniu maszynowym?

Random Forest to metoda uczenia zespołowego, która może dawać dokładniejsze prognozy niż większość innych algorytmów uczenia maszynowego. Jest powszechnie stosowany w nauce drzew decyzyjnych. Las jest tworzony przy użyciu drzew decyzyjnych, każde drzewo decyzyjne jest samo w sobie silnym klasyfikatorem. Te drzewa decyzyjne służą do tworzenia lasu silnych klasyfikatorów. Ten las silnych klasyfikatorów daje lepsze przewidywania niż drzewa decyzyjne lub inne algorytmy uczenia maszynowego.

Jakie są różnice między losowym lasem a drzewami decyzyjnymi?

Drzewo decyzyjne to schemat blokowy opisujący proces analizy danego problemu. Najczęściej używamy ich do problemów z klasyfikacją. Drzewo decyzyjne opisuje proces eliminacji niezbędny do dokonania klasyfikacji. W przeciwieństwie do drzewa decyzyjnego, losowy las opiera się na zespole drzew, a wiele badań pokazuje, że jest silniejszy niż ogólnie drzewo decyzyjne. Ponadto losowy las jest bardziej odporny na overfitting i jest bardziej stabilny, gdy brakuje danych.

Jakie są wady losowego lasu?

Random Forest to nieco skomplikowany model. Nie jest to model czarnoskrzynkowy i nie jest łatwo zinterpretować wyniki. Jest wolniejszy niż inne modele uczenia maszynowego. Aby uzyskać dobrą dokładność, wymagana jest duża liczba funkcji. Lasy losowe są rodzajem metody uczenia zespołowego, podobnie jak inne metody zespołowe, takie jak pakowanie, wzmacnianie lub układanie w stosy. Metody te są zwykle niestabilne, co oznacza, że ​​jeśli dane uczące się zmienią, ostateczny model może ulec drastycznej zmianie.