Краткое и грязное руководство по случайной регрессии леса

Практический подход к случайной регрессии леса

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

Сначала мы познакомимся с некоторыми важными терминами, такими как Ensemble Learning и Bootstrap Aggregation, затем я попытаюсь дать вам интуитивное представление об алгоритме, и, наконец, мы построим нашу собственную модель машинного обучения с использованием регрессора случайного леса.

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

Ансамблевое обучение:

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

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

Повышение

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

Агрегирование начальной загрузки

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

Проблемы с деревьями решений

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

  1. Небольшое изменение данных может привести к совершенно другому набору данных, что приведет к тому, что модель будет давать неверные прогнозы.
  2. Деревья решений очень чувствительны к данным, на которых они обучаются, и небольшие изменения в обучающем наборе могут привести к существенно разным древовидным структурам .
  3. Деревья решений стремятся найти локально оптимальные решения, а не рассматривать глобально оптимальные.

Чтобы преодолеть такие проблемы, на помощь приходит Random Forest.

Случайный лес

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

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

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

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

ШАГ 1. ИМПОРТ НЕОБХОДИМЫХ БИБЛИОТЕК

Наш первый шаг - импортировать библиотеки, необходимые для построения нашей модели. Нет необходимости импортировать все библиотеки в одном месте. Python дает нам возможность импортировать библиотеки в любое место. Для начала мы импортируем библиотеки Pandas, Numpy, Matplotlib и Seaborn.

#Import the Libraries and read the data into a Pandas DataFrame
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
test = pd.read_csv("california_housing_test.csv")
train = pd.read_csv("california_housing_train.csv")

После того, как эти библиотеки будут импортированы, нашим следующим шагом будет выборка набора данных и загрузка данных в нашу записную книжку. Для этого примера я взял набор данных California Housing.

ШАГ 2. ВИЗУАЛИЗАЦИЯ ДАННЫХ

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

#Visualise the data
plt.figure()
sns.heatmap(data.corr(), cmap='coolwarm')
plt.show()
sns.lmplot(x='median_income', y='median_house_value', data=train)
sns.lmplot(x='housing_median_age', y='median_house_value', data=train)

ШАГ 3. РАЗРАБОТКА ФУНКЦИЙ

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

#Select appropriate features
data = data[[‘total_rooms’, ‘total_bedrooms’, ‘housing_median_age’, ‘median_income’, ‘population’, ‘households’]]
data.info()
data['total_rooms'] = data['total_rooms'].fillna(data['total_rooms'].mean())
data['total_bedrooms'] = data['total_bedrooms'].fillna(data['total_bedrooms'].mean()

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

ШАГ 4: УСТАНОВКА МОДЕЛИ

После выбора желаемых параметров следующим шагом будет импорт train_test_split из библиотеки sklearn, которая используется для разделения набора данных на данные обучения и тестирования.

#Split the dataset into training and testing data
import train_test_split
X_train, X_test, y_train, y_test = train_test_split(train, y, test_size = 0.2, random_state = 0)
y_train = y_train.reshape(-1,1)
y_test = y_test.reshape(-1,1)

После этого RandomForestRegressor импортируется из sklearn.ensemble, и модель соответствует набору обучающих данных. Параметр n_estimators определяет количество деревьев в лесу. По умолчанию это значение установлено на 100.

from sklearn.ensemble 
import RandomForestRegressor
rfr = RandomForestRegressor(n_estimators = 500, random_state = 0)
rfr.fit(X_train, y_train))

Размер подвыборки контролируется параметром max_samples, если для начальной загрузки установлено значение true, в противном случае для построения каждого дерева используется весь набор данных.

ПРЕИМУЩЕСТВА СЛУЧАЙНОГО ЛЕСА

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

НЕДОСТАТКИ СЛУЧАЙНОГО ЛЕСА

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

На этом мы подошли к концу статьи. Я надеюсь, что эта статья помогла бы вам понять суть регрессора случайного леса. Если у вас есть вопросы или вы считаете, что я допустил ошибку, свяжитесь со мной! Вы можете связаться со мной через: Электронная почта или LinkedIn.