Algorytmy klasyfikacji - losowy las

Wprowadzenie

Losowy las to nadzorowany algorytm uczenia się, który jest używany zarówno do klasyfikacji, jak i regresji. Jednak jest używany głównie do rozwiązywania problemów klasyfikacyjnych. Jak wiemy, las składa się z drzew, a więcej drzew oznacza bardziej wytrzymały las. Podobnie, algorytm losowego lasu tworzy drzewa decyzyjne na próbkach danych, a następnie pobiera prognozę z każdej z nich i ostatecznie wybiera najlepsze rozwiązanie w drodze głosowania. Jest to metoda zespołowa, która jest lepsza niż pojedyncze drzewo decyzyjne, ponieważ zmniejsza nadmierne dopasowanie poprzez uśrednienie wyniku.

Działanie algorytmu losowego lasu

Możemy zrozumieć działanie algorytmu Random Forest za pomocą następujących kroków -

  • Step 1 - Najpierw zacznij od wyboru losowych próbek z danego zbioru danych.

  • Step 2- Następnie algorytm skonstruuje drzewo decyzyjne dla każdej próbki. Wtedy otrzyma wynik prognozy z każdego drzewa decyzyjnego.

  • Step 3 - Na tym etapie głosowanie zostanie przeprowadzone dla każdego przewidywanego wyniku.

  • Step 4 - Na koniec wybierz najczęściej głosowany wynik prognozy jako ostateczny wynik prognozy.

Poniższy diagram ilustruje jego działanie -

Implementacja w Pythonie

Najpierw zacznij od zaimportowania niezbędnych pakietów Pythona -

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

Następnie pobierz zestaw danych tęczówki z łącza internetowego w następujący sposób -

path = "https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data"

Następnie musimy przypisać nazwy kolumn do zestawu danych w następujący sposób -

headernames = ['sepal-length', 'sepal-width', 'petal-length', 'petal-width', 'Class']

Teraz musimy odczytać zbiór danych do pandy dataframe w następujący sposób -

dataset = pd.read_csv(path, names=headernames)
dataset.head()
długość działki sepal-width długość płatka szerokość płatka Klasa
0 5.1 3.5 1.4 0,2 Iris-setosa
1 4.9 3.0 1.4 0,2 Iris-setosa
2 4.7 3.2 1.3 0,2 Iris-setosa
3 4.6 3.1 1.5 0,2 Iris-setosa
4 5.0 3.6 1.4 0,2 Iris-setosa

Wstępne przetwarzanie danych zostanie wykonane za pomocą następujących wierszy skryptu -

X = dataset.iloc[:, :-1].values
y = dataset.iloc[:, 4].values

Następnie podzielimy dane na podział na pociąg i test. Poniższy kod podzieli zbiór danych na 70% danych szkoleniowych i 30% danych testowych -

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.30)

Następnie wytrenuj model za pomocą klasy sklearn RandomForestClassifier w następujący sposób -

from sklearn.ensemble import RandomForestClassifier
classifier = RandomForestClassifier(n_estimators=50)
classifier.fit(X_train, y_train)

W końcu musimy przewidzieć. Można to zrobić za pomocą następującego skryptu -

y_pred = classifier.predict(X_test)

Następnie wydrukuj wyniki w następujący sposób -

from sklearn.metrics import classification_report, confusion_matrix, accuracy_score
result = confusion_matrix(y_test, y_pred)
print("Confusion Matrix:")
print(result)
result1 = classification_report(y_test, y_pred)
print("Classification Report:",)
print (result1)
result2 = accuracy_score(y_test,y_pred)
print("Accuracy:",result2)

Wynik

Confusion Matrix:
[
   [14 0 0]
   [ 0 18 1]
   [ 0 0 12]
]
Classification Report:
               precision       recall     f1-score       support
Iris-setosa        1.00         1.00        1.00         14
Iris-versicolor    1.00         0.95        0.97         19
Iris-virginica     0.92         1.00        0.96         12
micro avg          0.98         0.98        0.98         45
macro avg          0.97         0.98        0.98         45
weighted avg       0.98         0.98        0.98         45

Accuracy: 0.9777777777777777

Plusy i minusy Random Forest

Plusy

Oto zalety algorytmu Random Forest -

  • Rozwiązuje problem nadmiernego dopasowania poprzez uśrednianie lub łączenie wyników różnych drzew decyzyjnych.

  • Lasy losowe działają dobrze w przypadku dużego zakresu elementów danych niż pojedyncze drzewo decyzyjne.

  • Las losowy ma mniej wariancji niż pojedyncze drzewo decyzyjne.

  • Losowe lasy są bardzo elastyczne i mają bardzo dużą dokładność.

  • Skalowanie danych nie wymaga algorytmu losowego lasu. Zachowuje dobrą dokładność nawet po dostarczeniu danych bez skalowania.

  • Skalowanie danych nie wymaga algorytmu losowego lasu. Zachowuje dobrą dokładność nawet po dostarczeniu danych bez skalowania.

Cons

Poniżej przedstawiono wady algorytmu Random Forest -

  • Złożoność jest główną wadą algorytmów Random Forest.

  • Budowa lasów losowych jest znacznie trudniejsza i bardziej czasochłonna niż drzew decyzyjnych.

  • Do zaimplementowania algorytmu Random Forest potrzeba więcej zasobów obliczeniowych.

  • Jest to mniej intuicyjne w przypadku, gdy mamy duży zbiór drzew decyzyjnych.

  • Proces przewidywania przy użyciu losowych lasów jest bardzo czasochłonny w porównaniu z innymi algorytmami.