Random Forest Regression to wszechstronna technika uczenia maszynowego służąca do przewidywania wartości liczbowych. Łączy przewidywania wielu drzew decyzyjnych, aby ograniczyć nadmierne dopasowanie i poprawić dokładność. Pythona nauczanie maszynowe Biblioteki ułatwiają wdrożenie i optymalizację tego podejścia.
Nauka zespołowa
Uczenie się zespołowe to technika uczenia maszynowego, która łączy przewidywania z wielu modeli w celu stworzenia dokładniejszych i stabilnych przewidywań. Jest to podejście, które wykorzystuje zbiorową inteligencję wielu modeli w celu poprawy ogólnej wydajności systemu uczenia się.
Rodzaje metod zespołowych
Istnieją różne rodzaje metod uczenia się zespołowego, w tym:
- Pakowanie (agregacja Bootstrap): Metoda ta polega na szkoleniu wielu modeli na losowych podzbiorach danych uczących. Następnie łączy się przewidywania z poszczególnych modeli, zazwyczaj poprzez uśrednianie.
- Wzmocnienie: Metoda ta polega na uczeniu sekwencji modeli, przy czym każdy kolejny model koncentruje się na błędach popełnionych przez model poprzedni. Prognozy są łączone przy użyciu schematu głosowania ważonego.
- Układanie: Metoda ta polega na wykorzystaniu przewidywań z jednego zestawu modeli jako cech wejściowych dla innego modelu. Ostatecznej prognozy dokonuje model drugiego poziomu.
Losowy las
Las losowy to metoda uczenia się zespołowego, która łączy przewidywania z wielu drzew decyzyjnych w celu uzyskania dokładniejszych i stabilnych przewidywań. Jest to rodzaj algorytmu uczenia się nadzorowanego, którego można używać zarówno do zadań klasyfikacji, jak i regresji.
Każdy drzewo decyzyjne ma dużą wariancję, ale gdy połączymy je wszystkie równolegle, wynikowa wariancja jest niska, ponieważ każde drzewo decyzyjne zostaje doskonale przeszkolone na tych konkretnych przykładowych danych, a zatem wynik nie zależy od jednego drzewa decyzyjnego, ale od wielu drzew decyzyjnych. W przypadku problemu klasyfikacji ostateczny wynik jest uzyskiwany przy użyciu klasyfikatora z większością głosów. W przypadku problemu regresji wynik końcowy jest średnią wszystkich wyników. Ta część nazywa się Zbiór .

Działanie modelu regresji losowego lasu
Co to jest regresja losowego lasu?
Regresja losowego lasu w uczeniu maszynowym jest zestaw techniczny zdolny do wykonania obu regresja i klasyfikacja zadań z wykorzystaniem wielu drzew decyzyjnych oraz techniki zwanej Bootstrap i Agregacją, powszechnie znanej jako parcianka . Podstawową ideą jest połączenie wielu drzew decyzyjnych przy określaniu ostatecznego wyniku, zamiast polegania na pojedynczych drzewach decyzyjnych.
Random Forest ma wiele drzew decyzyjnych jako podstawowe modele uczenia się. Losowo przeprowadzamy próbkowanie wierszy i próbkowanie cech ze zbioru danych tworząc przykładowe zbiory danych dla każdego modelu. Ta część nazywa się Bootstrap.
Musimy podejść do techniki regresji Losowego Lasu jak do każdej innej nauczanie maszynowe technika.
- Zaprojektuj konkretne pytanie lub dane i uzyskaj źródło, aby określić wymagane dane.
- Upewnij się, że dane są w dostępnym formacie, w przeciwnym razie przekonwertuj je na wymagany format.
- Określ wszystkie zauważalne anomalie i brakujące punkty danych, które mogą być wymagane do uzyskania wymaganych danych.
- Utwórz model uczenia maszynowego.
- Ustaw model bazowy, który chcesz osiągnąć
- Trenuj model uczenia maszynowego danych.
- Zapewnij wgląd w model za pomocą danych testowych
- Teraz porównaj metryki wydajności zarówno danych testowych, jak i danych przewidywanych z modelu.
- Jeśli nie spełnia Twoich oczekiwań, możesz spróbować odpowiednio ulepszyć swój model, oznaczyć dane datami lub zastosować inną technikę modelowania danych.
- Na tym etapie interpretujesz uzyskane dane i odpowiednio je raportujesz.
Losowa regresja lasu w Pythonie
W poniższym przykładzie użyjemy podobnej techniki próbkowania. Poniżej znajduje się przykładowa implementacja Random Forest Regression krok po kroku na zbiorze danych, który można pobrać tutaj - https://bit.ly/417n3N5
Pyton biblioteki bardzo ułatwiają nam obsługę danych i wykonywanie typowych i złożonych zadań za pomocą jednej linii kodu.
- Pandy – Ta biblioteka pomaga załadować ramkę danych w formacie tablicy 2D i posiada wiele funkcji umożliwiających wykonywanie zadań analitycznych za jednym razem.
- Numpy – Tablice Numpy są bardzo szybkie i mogą wykonywać duże obliczenia w bardzo krótkim czasie.
- Matplotlib / Seaborn – Ta biblioteka służy do rysowania wizualizacji.
- Sklearn – moduł ten zawiera wiele bibliotek posiadających wstępnie zaimplementowane funkcje do wykonywania zadań, od wstępnego przetwarzania danych po opracowywanie i ocenę modelu.
- RandomForestRegressor – Jest to model regresji oparty na modelu Random Forest lub uczeniu zespołowym, którego będziemy używać w tym artykule przy użyciu biblioteki sklearn.
- sklear: Ta biblioteka jest podstawową biblioteką uczenia maszynowego w języku Python. Zapewnia szeroką gamę narzędzi do wstępnego przetwarzania, modelowania, oceny i wdrażania modeli uczenia maszynowego.
- Koder etykiety: Ta klasa służy do kodowania danych kategorycznych na wartości liczbowe.
- KNNImputer: Ta klasa służy do przypisywania brakujących wartości w zbiorze danych przy użyciu podejścia k-najbliższych sąsiadów.
- train_test_split: Ta funkcja służy do podziału zbioru danych na zbiory uczące i testujące.
- Standardowy skaler: Ta klasa służy do standaryzacji funkcji poprzez usunięcie średniej i skalowanie do wariancji jednostkowej.
- wynik f1: Ta funkcja służy do oceny wydajności modelu klasyfikacji przy użyciu wyniku F1.
- Losowy regresor leśny: Ta klasa służy do uczenia modelu regresji lasu losowego.
- cross_val_score: Ta funkcja służy do wykonywania k-krotnej walidacji krzyżowej w celu oceny wydajności modelu
Krok 1: Importuj biblioteki
Tutaj importujemy wszystkie niezbędne biblioteki.
Python3
import> pandas as pd> import> matplotlib.pyplot as plt> import> seaborn as sns> import> sklearn> import> warnings> from> sklearn.preprocessing>import> LabelEncoder> from> sklearn.impute>import> KNNImputer> from> sklearn.model_selection>import> train_test_split> from> sklearn.preprocessing>import> StandardScaler> from> sklearn.metrics>import> f1_score> from> sklearn.ensemble>import> RandomForestRegressor> from> sklearn.ensemble>import> RandomForestRegressor> from> sklearn.model_selection>import> cross_val_score> warnings.filterwarnings(>'ignore'>)> |
>
>
Krok 2: Importuj zbiór danych
Załadujmy teraz zbiór danych do ramki danych pandy. Dla lepszej obsługi danych i wykorzystania przydatnych funkcji do wykonywania złożonych zadań za jednym razem.
lista rzutek
Python3
df>=> pd.read_csv(>'Salaries.csv'>)> print>(df)> |
>
>
Wyjście:
Position Level Salary 0 Business Analyst 1 45000 1 Junior Consultant 2 50000 2 Senior Consultant 3 60000 3 Manager 4 80000 4 Country Manager 5 110000 5 Region Manager 6 150000 6 Partner 7 200000 7 Senior Partner 8 300000 8 C-level 9 500000 9 CEO 10 1000000>
Tutaj.info()>Metoda zapewnia szybki przegląd struktury, typów danych i wykorzystania pamięci zestawu danych.
Python3
df.info()> |
>
>
Wyjście:
RangeIndex: 10 entries, 0 to 9 Data columns (total 3 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 Position 10 non-null object 1 Level 10 non-null int64 2 Salary 10 non-null int64 dtypes: int64(2), object(1) memory usage: 372.0+ bytes>
Krok 3: Przygotowywanie danych
W tym przypadku kod wyodrębni dwa podzbiory danych ze zbioru danych i zapisze je w oddzielnych zmiennych.
- Wyodrębnianie funkcji: Wyodrębnia funkcje z ramki DataFrame i przechowuje je w zmiennej o nazwie
X>. - Wyodrębnianie zmiennej docelowej: Wyodrębnia zmienną docelową z ramki DataFrame i przechowuje ją w zmiennej o nazwie
y>.
Python3
# Assuming df is your DataFrame> X>=> df.iloc[:,>1>:>2>].values>#features> y>=> df.iloc[:,>2>].values># Target variable> |
>
indeks górny w ilustratorze
>
Krok 4: Model losowego regresora leśnego
Kod przetwarza dane kategoryczne poprzez kodowanie ich numerycznie, łączy przetworzone dane z danymi numerycznymi i trenuje model Random Forest Regression przy użyciu przygotowanych danych.
Python3
import> pandas as pd> from> sklearn.ensemble>import> RandomForestRegressor> from> sklearn.preprocessing>import> LabelEncoder> >Check>for> and> handle categorical variables> label_encoder>=> LabelEncoder()> x_categorical>=> df.select_dtypes(include>=>[>'object'>]).>apply>(label_encoder.fit_transform)> x_numerical>=> df.select_dtypes(exclude>=>[>'object'>]).values> x>=> pd.concat([pd.DataFrame(x_numerical), x_categorical], axis>=>1>).values> # Fitting Random Forest Regression to the dataset> regressor>=> RandomForestRegressor(n_estimators>=>10>, random_state>=>0>, oob_score>=>True>)> # Fit the regressor with x and y data> regressor.fit(x, y)> |
>
>
Krok 5: Przewiduj i oceniaj
Kod ocenia wytrenowany model regresji lasu losowego:
- wynik out-of-bag (OOB), który szacuje skuteczność generalizacji modelu.
- Tworzy przewidywania przy użyciu przeszkolonego modelu i przechowuje je w tablicy „predykcji”.
- Ocenia wydajność modelu przy użyciu wskaźników błędu średniokwadratowego (MSE) i kwadratu R (R2).
Wynik Out of Bag w RandomForest
Wynik worka lub Wynik OOB to rodzaj techniki walidacji stosowany głównie w algorytmach pakowania w celu sprawdzenia poprawności algorytmu pakowania. W tym przypadku niewielka część danych walidacyjnych jest pobierana z głównego nurtu danych, a przewidywania dotyczące poszczególnych danych walidacyjnych są porównywane z innymi wynikami.
Główną zaletą wyniku OOB jest to, że w tym przypadku dane walidacyjne nie są widoczne dla algorytmu pakowania i dlatego wyniki wyniku OOB są prawdziwymi wynikami, które wskazują rzeczywistą wydajność algorytmu pakowania.
Aby uzyskać wynik OOB konkretnego algorytmu Random Forest, należy ustawić wartość True dla parametru OOB_Score w algorytmie.
Python3
# Evaluating the model> from> sklearn.metrics>import> mean_squared_error, r2_score> # Access the OOB Score> oob_score>=> regressor.oob_score_> print>(f>'Out-of-Bag Score: {oob_score}'>)> # Making predictions on the same data or new data> predictions>=> regressor.predict(x)> # Evaluating the model> mse>=> mean_squared_error(y, predictions)> print>(f>'Mean Squared Error: {mse}'>)> r2>=> r2_score(y, predictions)> print>(f>'R-squared: {r2}'>)> |
>
>
javafx
Wyjście:
Out-of-Bag Score: 0.644879832593859 Mean Squared Error: 2647325000.0 R-squared: 0.9671801245316117>
Krok 6: Wizualizacja
Teraz zwizualizujmy wyniki uzyskane przy użyciu modelu regresji RandomForest na naszym zbiorze danych o wynagrodzeniach.
- Tworzy siatkę punktów predykcji obejmujących zakres wartości cech.
- Rysuje rzeczywiste punkty danych jako niebieskie punkty rozproszone.
- Rysuje przewidywane wartości dla siatki przewidywań jako zieloną linię.
- Dodaje etykiety i tytuł do fabuły dla lepszego zrozumienia.
Python3
import> numpy as np> X_grid>=> np.arange(>min>(X),>max>(X),>0.01>)> X_grid>=> X_grid.reshape(>len>(X_grid),>1>)> > plt.scatter(X,y, color>=>'blue'>)>#plotting real points> plt.plot(X_grid, regressor.predict(X_grid),color>=>'green'>)>#plotting for predict points> > plt.title(>'Random Forest Regression Results'>)> plt.xlabel(>'Position level'>)> plt.ylabel(>'Salary'>)> plt.show()> |
>
>
Wyjście:

Krok 7: Wizualizacja pojedynczego drzewa decyzyjnego na podstawie modelu lasu losowego
Kod wizualizuje jedno z drzew decyzyjnych z wyszkolonego modelu Random Forest. Rysuje wybrane drzewo decyzyjne, przedstawiając proces decyzyjny pojedynczego drzewa w zespole.
Python3
from> sklearn.tree>import> plot_tree> import> matplotlib.pyplot as plt> # Assuming regressor is your trained Random Forest model> # Pick one tree from the forest, e.g., the first tree (index 0)> tree_to_plot>=> regressor.estimators_[>0>]> # Plot the decision tree> plt.figure(figsize>=>(>20>,>10>))> plot_tree(tree_to_plot, feature_names>=>df.columns.tolist(), filled>=>True>, rounded>=>True>, fontsize>=>10>)> plt.title(>'Decision Tree from Random Forest'>)> plt.show()> |
Podstawowe informacje o kompilacji Ubuntu
>
>
Wyjście:
Zastosowania losowej regresji lasu
Regresja losowego lasu wiąże się z szeroką gamą problemów występujących w świecie rzeczywistym, w tym:
- Przewidywanie ciągłych wartości liczbowych: Przewidywanie cen domów, cen akcji lub wartości życiowej klienta.
- Identyfikacja czynników ryzyka: Wykrywanie czynników ryzyka chorób, kryzysów finansowych lub innych negatywnych zdarzeń.
- Obsługa danych wielowymiarowych: Analizowanie zbiorów danych z dużą liczbą cech wejściowych.
- Przechwytywanie złożonych relacji: Modelowanie złożonych relacji między cechami wejściowymi a zmienną docelową.
Zalety losowej regresji lasu
- Jest łatwy w użyciu i mniej wrażliwy na dane szkoleniowe w porównaniu do drzewa decyzyjnego.
- Jest dokładniejszy niż np drzewo decyzyjne algorytm.
- Jest skuteczny w obsłudze dużych zbiorów danych, które mają wiele atrybutów.
- Radzi sobie z brakującymi danymi, wartości odstające i hałaśliwe funkcje.
Wady losowej regresji lasu
- Model może być również trudny w interpretacji.
- Algorytm ten może wymagać pewnej wiedzy specjalistycznej w danej dziedzinie, aby wybrać odpowiednie parametry, takie jak liczba drzew decyzyjnych, maksymalna głębokość każdego drzewa i liczba cech do rozważenia przy każdym podziale.
- Jest to kosztowne obliczeniowo, szczególnie w przypadku dużych zbiorów danych.
- Może cierpieć nadmierne dopasowanie jeśli model jest zbyt złożony lub liczba drzew decyzyjnych jest zbyt duża.
Wniosek
Random Forest Regression stała się potężnym narzędziem do wykonywania zadań ciągłego przewidywania, mającym przewagę nad tradycyjnymi drzewami decyzyjnymi. Jego zdolność do obsługi danych wielowymiarowych, przechwytywania złożonych relacji i ograniczenia nadmiernego dopasowania sprawiła, że jest to popularny wybór w różnych zastosowaniach. Biblioteka scikit-learn języka Python umożliwia wdrażanie, optymalizację i ocenę modeli regresji lasu losowego, dzięki czemu jest przystępną i skuteczną techniką dla praktyków uczenia maszynowego.
Często zadawane pytania (FAQ)
1. Co to jest Python z regresją losowego lasu?
Random Forest Regression Python to metoda uczenia się zespołowego, która wykorzystuje wiele drzew decyzyjnych do przewidywania. Jest to potężny i wszechstronny algorytm, który dobrze nadaje się do zadań regresyjnych.
2. Jaki jest pożytek z losowej regresji lasu?
Random Forest Regression można wykorzystać do przewidywania różnych zmiennych docelowych, w tym cen, sprzedaży, rezygnacji klientów i innych. Jest to solidny algorytm, którego nie można łatwo przerobić, co czyni go dobrym wyborem do zastosowań w świecie rzeczywistym.
3. Jaka jest różnica pomiędzy lasem losowym a regresją?
Random Forest to metoda uczenia się zespołowego, natomiast regresja to rodzaj algorytmu uczenia się nadzorowanego. Random Forest wykorzystuje wiele drzew decyzyjnych do tworzenia prognoz, podczas gdy regresja wykorzystuje pojedynczy model do tworzenia prognoz.
4. Jak dostroić hiperparametry regresji losowego lasu?
Istnieje kilka metod dostrajania hiperparametrów regresji losowego lasu, takich jak:
- Wyszukiwanie siatki: Wyszukiwanie siatki polega na systematycznym wypróbowywaniu różnych kombinacji wartości hiperparametrów w celu znalezienia najlepszej kombinacji.
- Losowe wyszukiwanie: Wyszukiwanie losowe losowo pobiera różne kombinacje wartości hiperparametrów, aby znaleźć dobrą kombinację.
5. Dlaczego losowy las jest lepszy od regresji?
Random Forest jest ogólnie dokładniejszy i solidniejszy niż regresja. Jest także mniej podatny na nadmierne dopasowanie, co oznacza, że z większym prawdopodobieństwem dobrze uogólnia nowe dane.
Zastosowania losowej regresji lasu