На предыдущем уроке мы обсудили деревья решений и их реализацию на Python. Мы также упомянули обратную сторону использования деревьев решений - их склонность к переобучению, поскольку они очень чувствительны к небольшим изменениям данных.

В этом уроке мы узнаем о случайных лесах, которые, по сути, представляют собой набор множества деревьев решений. Случайные леса или леса случайных решений - это метод ансамблевого обучения, который использует несколько алгоритмов обучения для получения более высокой прогнозирующей способности, чем можно было бы получить с помощью любого из составляющих алгоритмов обучения, в основном для решения задач классификации и регрессии.

Следовательно, это один из самых мощных алгоритмов машинного обучения, который обычно используется для различных задач и типов данных. Случайный лес работает путем построения множества деревьев решений во время обучения и вывода класса, который является режимом классов (классификация) или средним прогнозом (регрессия) отдельных деревьев.

Что такое регрессия случайного леса?

Алгоритмы регрессии случайного леса - это класс алгоритмов машинного обучения, в которых используется комбинация нескольких деревьев случайных решений, каждое из которых обучается на подмножестве данных. Использование нескольких деревьев дает стабильность алгоритму и снижает дисперсию. Алгоритм регрессии случайного леса является широко используемой моделью из-за его способности хорошо работать с большими и большинством типов данных.

Алгоритм создает каждое дерево из разных выборок входных данных. В каждом узле для разделения выбирается различная выборка объектов, и деревья работают параллельно без какого-либо взаимодействия. Прогнозы для каждого из деревьев затем усредняются для получения единственного результата, который является предсказанием случайного леса.

Регрессия случайного леса в Python

В этом разделе вы познакомитесь с пошаговой реализацией Python процесса прогнозирования случайного леса, который мы только что обсудили.

1. Импорт необходимых библиотек

Во-первых, давайте импортируем некоторые важные библиотеки Python.

# Importing the libraries
import numpy as np # for array operations
import pandas as pd # for working with DataFrames
import requests, io # for HTTP requests and I/O commands
import matplotlib.pyplot as plt # for data visualization
%matplotlib inline

# scikit-learn modules
from sklearn.model_selection import train_test_split # for splitting the data
from sklearn.metrics import mean_squared_error # for calculating the cost function
from sklearn.ensemble import RandomForestRegressor # for building the model

2. Импорт набора данных

Для этой проблемы мы будем загружать набор данных CSV через HTTP-запрос (вы также можете загрузить набор данных здесь).

Набор данных состоит из данных, связанных с потреблением бензина (в миллионах галлонов) для 48 штатов США. Это значение основано на нескольких характеристиках, таких как налог на бензин (в центах), средний доход (в долларах), дороги с твердым покрытием (в милях) и доля населения, имеющего водительские права. Мы будем загружать набор данных с помощью функции read_csv () из модуля pandas и сохранять его как объект DataFrame pandas.

# Importing the dataset from the url of the data set
url = "https://drive.google.com/u/0/uc?id=1mVmGNx6cbfvRHC_DvF12ZL3wGLSHD9f_&export=download"
data = requests.get(url).content
# Reading the data
dataset = pd.read_csv(io.StringIO(data.decode('utf-8')))
dataset.head()

3. Разделение функций и целевой переменной

После загрузки набора данных необходимо разделить независимую переменную и зависимую переменную. Наша задача - смоделировать отношения между характеристиками (Petrol_tax, Average_income и т. Д.) И целевой переменной (Petrol_consuming) в наборе данных.

x = dataset.drop('Petrol_Consumption', axis = 1) # Features
y = dataset['Petrol_Consumption']  # Target

4. Разделение данных на набор поездов и набор тестов.

Мы используем модуль train_test_split () в scikit-learn для разделения данных на набор поездов и набор тестов. Мы будем использовать 20% доступных данных в качестве набора для тестирования, а остальные данные - в качестве набора для обучения.

# Splitting the dataset into training and testing set (80/20)
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size = 0.2, random_state = 28)

5. Подгонка модели к набору обучающих данных.

После разделения данных давайте инициализируем модель регрессии случайного леса и подгоним ее под данные обучения. Это делается с помощью модуля RandomForestRegressor () программы scikit-learn.

# Initializing the Random Forest Regression model with 10 decision trees
model = RandomForestRegressor(n_estimators = 10, random_state = 0)

# Fitting the Random Forest Regression model to the data
model.fit(x_train, y_train)

6. Расчет потерь после тренировки

Давайте теперь вычислим потерю между фактическими целевыми значениями в тестовой выборке и значениями, предсказанными моделью, с использованием функции стоимости, называемой Среднеквадратичная ошибка (RMSE).

RMSE модели определяет абсолютное соответствие модели данным. Другими словами, он показывает, насколько близки фактические точки данных к прогнозируемым значениям модели. Низкое значение RMSE указывает на лучшее соответствие и является хорошим показателем для определения точности прогнозов модели.

# Predicting the target values of the test set
y_pred = model.predict(x_test)

# RMSE (Root Mean Square Error)
rmse = float(format(np.sqrt(mean_squared_error(y_test, y_pred)), '.3f'))
print("\nRMSE: ", rmse)
OUTPUT:
RMSE: 96.389

Как мы видим, значение метрики ошибок значительно уменьшилось, и эта модель работала достаточно хорошо, чем модель регрессии с одним деревом решений, которую мы изучали на предыдущем уроке.

Собираем все вместе

Окончательный код для реализации регрессии случайного леса в Python выглядит следующим образом.

# Importing the libraries
import numpy as np # for array operations
import pandas as pd # for working with DataFrames
import requests, io # for HTTP requests and I/O commands
import matplotlib.pyplot as plt # for data visualization
%matplotlib inline

# scikit-learn modules
from sklearn.model_selection import train_test_split # for splitting the data
from sklearn.metrics import mean_squared_error # for calculating the cost function
from sklearn.ensemble import RandomForestRegressor # for building the model

# Importing the dataset from the url of the data set
url = "https://drive.google.com/u/0/uc?id=1mVmGNx6cbfvRHC_DvF12ZL3wGLSHD9f_&export=download"
data = requests.get(url).content

# Reading the data
dataset = pd.read_csv(io.StringIO(data.decode('utf-8')))
dataset.head()

x = dataset.drop('Petrol_Consumption', axis = 1) # Features
y = dataset['Petrol_Consumption']  # Target

# Splitting the dataset into training and testing set (80/20)
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size = 0.2, random_state = 28)

# Initializing the Random Forest Regression model with 10 decision trees
model = RandomForestRegressor(n_estimators = 10, random_state = 0)

# Fitting the Random Forest Regression model to the data
model.fit(x_train, y_train) 

# Predicting the target values of the test set
y_pred = model.predict(x_test)

# RMSE (Root Mean Square Error)
rmse = float(format(np.sqrt(mean_squared_error(y_test, y_pred)),'.3f'))
print("\nRMSE:\n",rmse)

Следовательно, алгоритм регрессии случайного леса - это мощный алгоритм машинного обучения, который не требует большой настройки параметров и способен захватывать более широкую картину данных. Однако при применении этой модели к большим наборам данных может потребоваться много времени и больших вычислительных мощностей.

Вы хотите изучать Python, Data Science и машинное обучение во время прохождения сертификации? Вот несколько самых продаваемых курсов Udemy, на которые мы рекомендуем вам записаться:

  1. Завершите учебный лагерь по Python в 2021 году от нуля до героя на Python - уже зарегистрировано более 1 000 000 студентов!
  2. Python for Data Science and Machine Learning Bootcamp - уже зарегистрировано более 400 000 студентов!
  3. Полное руководство по TensorFlow для глубокого обучения с помощью Python - уже зарегистрировано более 90 000 студентов!
  4. Учебный курс по науке о данных и машинному обучению с R - уже записано более 70 000 студентов!
  5. The Complete SQL Bootcamp 2021: Go from Zero to Hero - уже записано более 400 000 студентов!

Отказ от ответственности: когда вы совершаете покупку по указанным выше ссылкам, мы можем получать комиссию в качестве партнера.

Первоначально опубликовано на https://www.theclickreader.com.