Алгоритмы классификации - случайный лес
Введение
Случайный лес - это алгоритм обучения с учителем, который используется как для классификации, так и для регрессии. Но, тем не менее, он в основном используется для задач классификации. Как мы знаем, лес состоит из деревьев, и чем больше деревьев, тем крепче лес. Точно так же алгоритм случайного леса создает деревья решений на выборках данных, затем получает предсказание от каждого из них и, наконец, выбирает лучшее решение посредством голосования. Это метод ансамбля, который лучше, чем единичное дерево решений, потому что он уменьшает чрезмерную подгонку за счет усреднения результата.
Работа алгоритма случайного леса
Мы можем понять работу алгоритма случайного леса с помощью следующих шагов:
Step 1 - Во-первых, начните с выбора случайных выборок из заданного набора данных.
Step 2- Затем этот алгоритм построит дерево решений для каждой выборки. Затем он получит результат прогноза из каждого дерева решений.
Step 3 - На этом этапе голосование будет проводиться для каждого предсказанного результата.
Step 4 - Наконец, выберите результат прогноза с наибольшим количеством голосов в качестве окончательного результата прогноза.
Следующая диаграмма проиллюстрирует его работу -
Реализация на Python
Во-первых, начните с импорта необходимых пакетов Python -
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
Затем загрузите набор данных iris по его веб-ссылке следующим образом:
path = "https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data"
Затем нам нужно назначить имена столбцов набору данных следующим образом:
headernames = ['sepal-length', 'sepal-width', 'petal-length', 'petal-width', 'Class']
Теперь нам нужно прочитать набор данных в фреймворке pandas следующим образом:
dataset = pd.read_csv(path, names=headernames)
dataset.head()
длина чашелистика | ширина чашелистика | длина лепестка | ширина лепестка | Класс | |
---|---|---|---|---|---|
0 | 5.1 | 3.5 | 1.4 | 0,2 | Ирис-сетоса |
1 | 4.9 | 3.0 | 1.4 | 0,2 | Ирис-сетоса |
2 | 4,7 | 3.2 | 1.3 | 0,2 | Ирис-сетоса |
3 | 4.6 | 3.1 | 1.5 | 0,2 | Ирис-сетоса |
4 | 5.0 | 3,6 | 1.4 | 0,2 | Ирис-сетоса |
Предварительная обработка данных будет выполняться с помощью следующих строк скрипта -
X = dataset.iloc[:, :-1].values
y = dataset.iloc[:, 4].values
Далее мы разделим данные на тренировочную и тестовую. Следующий код разделит набор данных на 70% данных обучения и 30% данных тестирования.
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)
Затем обучите модель с помощью класса sklearn RandomForestClassifier следующим образом:
from sklearn.ensemble import RandomForestClassifier
classifier = RandomForestClassifier(n_estimators=50)
classifier.fit(X_train, y_train)
Наконец, нам нужно сделать прогноз. Это можно сделать с помощью следующего скрипта -
y_pred = classifier.predict(X_test)
Затем распечатайте результаты следующим образом -
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)
Вывод
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
Плюсы и минусы случайного леса
Плюсы
Ниже приведены преимущества алгоритма случайного леса:
Он преодолевает проблему переобучения за счет усреднения или комбинирования результатов различных деревьев решений.
Случайные леса лучше работают для большого диапазона элементов данных, чем одно дерево решений.
Случайный лес имеет меньшую дисперсию, чем одно дерево решений.
Случайные леса очень гибкие и обладают очень высокой точностью.
В алгоритме случайного леса масштабирование данных не требуется. Он сохраняет хорошую точность даже после предоставления данных без масштабирования.
В алгоритме случайного леса масштабирование данных не требуется. Он сохраняет хорошую точность даже после предоставления данных без масштабирования.
Минусы
Ниже приведены недостатки алгоритма случайного леса:
Сложность - главный недостаток алгоритмов случайного леса.
Построение случайных лесов намного сложнее и требует много времени, чем деревья решений.
Для реализации алгоритма случайного леса требуется больше вычислительных ресурсов.
Это менее интуитивно понятно, если у нас большой набор деревьев решений.
Процесс прогнозирования с использованием случайных лесов занимает очень много времени по сравнению с другими алгоритмами.