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.