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

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

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

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

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

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

Реализация на Python

Давайте углубимся в Python и построим модель случайной регрессии леса и попробуем предсказать зарплату сотрудника уровня 6,5 (гипотетически).

Прежде чем двигаться дальше, загрузите файл данных CSV из моего GitHub Gist.

https://gist.github.com/tharunpeddisetty/8c3213de90fdc50c5814dbadcba181ac
Once you open the link, you can find "Download Zip" button on the top right corner of the window. Go ahead and download the files.
You can download 1) python file 2)data file (.csv)
Rename the folder accordingly and store it in desired location and you are all set.If you are a beginner I highly recommend you to open your python IDE and follow the steps below because here, I write detailed comments(statements after #.., these do not compile when our run the code) on the working of code. You can use the actual python as your backup file or for your future reference.

Импорт библиотек

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

Импорт данных и определение переменных X и Y

dataset = pd.read_csv(‘/Users/tharunpeddisetty/Desktop/Position_Salaries.csv’) #add your file path
X = dataset.iloc[:,1:-1].values
y = dataset.iloc[:, -1].values
#iloc takes the values from the specified index locations and stores them in the assigned variable as an array

Давайте посмотрим на наши данные и разберемся в переменных:

Эти данные отображают должность / уровень сотрудника и его зарплату. Это тот же набор данных, который я использовал в своей статье о регрессии дерева решений.

Обучение модели

from sklearn.ensemble import RandomForestRegressor
regressor = RandomForestRegressor(random_state=0,n_estimators=10)
regressor.fit(X,y)
#random_state is the seed value, just to make sure we both get same results.
#n_estimators defines the number of trees you want to implement 

Визуализация результатов регрессии дерева решений

X_grid = np.arange(min(X), max(X), 0.1)
X_grid = X_grid.reshape((len(X_grid), 1))
plt.scatter(X, y, color = 'red')
plt.plot(X_grid,regressor.predict(X_grid), color = 'blue')
plt.title('Random Forest Tree')
plt.xlabel('Position level')
plt.ylabel('Salary')
plt.show()

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

Прогнозирование результата уровня 6.5 с помощью регрессии дерева решений

print(regressor.predict([[6.5]]))
# predict method expects a 2D array thats the reason you see [[6.5]]

Результат

Случайная регрессия леса: 167000

Регрессия дерева решений: 150000 (результат, не являющийся частью кода)

Вывод

Вы можете сами убедиться в том, что случайная регрессия леса предсказывала гораздо более реалистичные результаты, чем дерево решений. Дерево решений предсказывало такую ​​же зарплату для сотрудника уровня 6.5, что не кажется справедливым. Когда вы смотрите на прогноз случайного леса, он предсказал 167 тысяч долларов, что находится между уровнями 6 и 7, и просто взглянув на него, вы увидите, что это имеет смысл. Помните одну вещь: регрессия - это все о среднем поведении и о том, как факторы в среднем влияют на независимую переменную.

Поздравляю! Вы реализовали регрессию случайного леса за минимальное количество строк кода. Это было легко, не так ли? . Теперь у вас есть шаблон кода, и вы можете реализовать его в других наборах данных и наблюдать за результатами. Удачного машинного обучения!