Регрессия с использованием Random Forest, SVM и MLP

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

Пример: представим, что начальник отдела кадров хочет установить заработную плату нового сотрудника. Для окончательного определения заработной платы руководитель учитывает различные параметры, такие как уровень образования, количество лет опыта, последняя занимаемая должность, уровень квалификации и т. д. Теперь, если зарплата прогнозируется с использованием только одного параметра, скажите «количество лет опыта», тогда этот тип регрессии называется простой линейной регрессией (одна целевая и одна предикторная переменные). Кроме того, если несколько параметров, таких как «уровень образования», «количество лет опыта», «последняя занимаемая должность», используются для определения заработной платы, то это становится многомерной регрессией (одна цель, несколько переменных-предикторов). ).

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

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

В этой статье давайте рассмотрим три простых способа выполнения простой линейной регрессии с использованием таких моделей, как:

  1. Случайный лес
  2. Метод опорных векторов (SVM)
  3. Многослойный персептрон (MLP)

Рассмотрим обучающие данные из файла Salaries.csv.

Постановка задачи.Используя эти данные, мы хотим спрогнозировать зарплату нового человека (целевая переменная), используя параметр «нет». лет опыта» (предикторная переменная).

В этой статье давайте рассмотрим три простых способа выполнения простой линейной регрессии с использованием таких моделей, как:

  1. Случайный лес
  2. Метод опорных векторов (SVM)
  3. Многослойный персептрон (MLP)

4. Давайте рассмотрим эти регрессионные модели.

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

Библиотека sklearn в Python может использоваться для создания случайного леса, как показано ниже.

# предсказание с использованием случайного леса

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

импортировать панд как pd

из sklearn.ensemble импортировать RandomForestRegressor

Теперь давайте инициализируем набор обучающих данных.

data = pd.read_csv('Зарплаты.csv')

x = data.iloc[:, 1:2].values ​​# поэтому x=лет. опыта

y = data.iloc[:, 2].values ​​# поэтому y= зарплата в рупиях.

Следующим шагом является инициализация модели Random Forest и передача в нее обучающего набора данных.

# Создать модель случайного леса. Количество деревьев по умолчанию = 100

модель = RandomForestRegressor()

#Обучение модели с использованием обучающих данных

model.fit(x, y)

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

Попробуем спрогнозировать заработную плату человека со стажем 7,4 года.

# Предсказать зарплату для тестового набора данных

Y_pred = model.predict(np.array([7.4]).reshape(1, 1)) # проверить вывод, изменив значения

print("Прогнозируемая зарплата=", Y_pred)

Вывод:Прогнозируемая зарплата = [82500.]

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

Библиотека sklearn в Python может использоваться для создания SVM, как показано ниже.

# прогноз с использованием SVM

из sklearn импортировать svm

из показателей импорта sklearn

импортировать панд как pd

data = pd.read_csv('Зарплаты.csv')

x = data.iloc[:, 1:2].values ​​# поэтому x=лет. опыта

y = data.iloc[:, 2].values ​​# поэтому y= зарплата в рупиях.

#Создать svm с линейным ядром

model = svm.SVC() # model = svm.SVC(kernel=’linear’)

#Обучение модели с использованием обучающих данных

model.fit(x,y)

#Предсказать зарплату для тестового набора данных

y_pred = model.predict(np.array([7.4]).reshape(1, 1))

print("Прогнозируемая зарплата=", y_pred)

Вывод:Прогнозируемая зарплата = [80000]

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

Библиотека sklearn в Python может использоваться для создания регрессора MLP, как показано ниже.

# предсказание с использованием NN: MLP

из sklearn.neural_network импортировать MLPRegressor

импортировать панд как pd

импортировать numpy как np

data = pd.read_csv('Зарплаты.csv')

x = data.iloc[:, 1:2].values ​​# поэтому x=лет. опыта

y = data.iloc[:, 2].values ​​# поэтому y= зарплата в рупиях.

# создать модель MLPRegressor

nn = MLPRegressor(solver=’lbfgs’, alpha=1e-1, hidden_layer_sizes=(5, 2), random_state=0)

#Обучение модели с помощью обучающих наборов

nn.fit(x,y)

#предсказать зарплату человека со стажем 7,4 года.

y_pred = nn.predict(np.array([7.4]).reshape(1, 1))

print("Прогнозируемая зарплата=", y_pred)

Вывод: прогнозируемая зарплата = [88285,71344169]

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