Одним из наиболее популярных применений моделей машинного обучения, особенно в контролируемом машинном обучении, является решение задач регрессии. Взаимосвязь между результатом или зависимой переменной и независимыми переменными — это то, чему обучают алгоритмы. Говоря простым языком, это означает подгонку функции из определенного семейства функций к отобранным данным при некоторой функции ошибки. Предсказание, прогнозирование, моделирование временных рядов и установление причинно-следственной связи между переменными — вот основные области его применения.
Эта подгонка функции служит двум целям.
- Оценка отсутствующих данных в пределах диапазона данных
- Оценка будущих данных за пределами диапазона данных.
Хотя наиболее распространенным применением является прогнозирование будущих данных за пределами диапазона данных после обучения. Алгоритм регрессии Machine Learning похож на линию наилучшего соответствия в линейной алгебре. Давайте вернемся в прошлое и вспомним элементарную математику. На уроках математики нам давали точки X и y и просили построить линейный график, затем в упражнениях нас просили найти значение y, для которого x равно 6, по нашим данным. Я думаю, что мы все продвинулись в построении графика и поиске соответствующего значения y. Это очень похоже на нашу задачу о регрессии, но теперь мы хотим, чтобы машина сделала это за нас. X — это переменные, которые мы хотим использовать для прогнозирования y, а y — это то, что мы хотим узнать. Давайте разберемся в этих базовых понятиях, прежде чем двигаться дальше.
Терминология, используемая в регрессии
- Зависимая переменная (Y): Зависимая переменная — это основной фактор в регрессионном анализе, который мы хотим предсказать или понять. Она также известна как целевое значение или метка.
- Независимая переменная(X): Независимые переменные — это элементы, которые влияют на зависимые переменные или используются для прогнозирования значений зависимых переменных, обычно их называют нашими характеристиками.
- Выбросы: Выброс — это наблюдение, которое содержит либо очень низкое, либо очень высокое значение по сравнению с другими наблюдаемыми значениями. Следует избегать выбросов, так как они могут повредить результату.
- Мультиколлинеарность: Если независимые переменные более сильно коррелируют друг с другом, чем с другими переменными, то такое состояние называется мультиколлинеарностью. Она не должна присутствовать в наборе данных, поскольку создает проблемы при ранжировании наиболее влияющих переменных.
- Недооптимизация и переоптимизация: Если наш алгоритм хорошо работает с обучающим набором данных, но плохо с тестовым набором данных, то такая проблема называется Overfitting. А если наш алгоритм не работает хорошо даже с обучающим набором данных, то такая проблема называется недоподгонкой.
Применение регрессионных моделей?
Регрессионные модели машинного обучения обычно используются для следующих целей:
- Прогнозирование непрерывных результатов, таких как цены на жилье, цены на акции или продажи.
- Прогнозирование успеха будущих розничных продаж или маркетинговых кампаний для обеспечения эффективного использования ресурсов.
- Прогнозирование тенденций клиентов или пользователей, например, на потоковых сервисах или сайтах электронной коммерции.
- Анализ наборов данных для установления взаимосвязей между переменными и результатами.
- Прогнозирование процентных ставок или стоимости акций на основе множества факторов.
- Создание визуализации временных рядов.
Виды регрессионного анализа
Давайте теперь обсудим различные методы, с помощью которых можно провести регрессию.
В машинном обучении регрессия может быть выполнена с помощью множества различных методов. Регрессия в машинном обучении выполняется с помощью различных известных методов. Различные методы могут использовать различное количество независимых переменных или обрабатывать различные типы данных. Различные виды регрессионных моделей машинного обучения также могут предполагать различные отношения между независимыми и зависимыми переменными. Например, методы линейной регрессии предполагают линейную зависимость и будут неэффективны при работе с нелинейными наборами данных.
Типы регрессионных моделей
- Простая линейная регрессия
- Множественная линейная регрессия
- Логистическая регрессия
- Векторная регрессия с поддержкой
- Регрессия дерева решений
- Регрессия случайного леса
Простая линейная регрессия
Простая линейная регрессия — это подход, который строит прямую линию в точках данных, чтобы минимизировать ошибку между линией и точками данных. В этом сценарии связь между независимыми и зависимыми переменными считается линейной. Этот метод является простым, поскольку он используется для исследования связи между зависимой переменной и одной независимой переменной. В простой линейной регрессии могут часто встречаться выбросы из-за прямой линии наилучшего соответствия.
- Статистический метод регрессии, используемый для прогностического анализа, называется линейной регрессией.
- Это один из самых основных и простых алгоритмов, использующих регрессию для иллюстрации взаимосвязи между непрерывными переменными.
- В машинном обучении она используется для решения проблемы регрессии.
- Термин «линейная регрессия» относится к статистическому методу, который отображает линейную зависимость между независимой переменной (ось X) и зависимой переменной (ось Y).
- Такая линейная регрессия известна как «простая линейная регрессия», если имеется только одна входная переменная (x). Кроме того, этот тип линейной регрессии известен как «множественная линейная регрессия», если имеется много входных переменных.
Y= aX+b
где Y = то, что мы пытаемся предсказать
X = признаки или переменные, которые мы будем использовать для прогнозирования значения Y
a = наклон линии
b = перехват на оси Y (похоже на нашу математическую линейную алгебру).
Множественная линейная регрессия
Когда используется более одной независимой переменной, применяется множественная линейная регрессия. Полиномиальная регрессия является примером метода многомерной линейной регрессии. Это разновидность множественной линейной регрессии, используемая при наличии более чем одной независимой переменной. При включении множества независимых переменных достигается лучшее соответствие, чем при простой линейной регрессии. При построении графика в двух измерениях результатом будет кривая линия, соответствующая точкам данных. Логистическая регрессия применяется, когда зависимая переменная может иметь одно из двух значений, например, истина или ложь, успех или неудача. Модели логистической регрессии могут использоваться для прогнозирования вероятности появления зависимой переменной. Выходные значения, как правило, должны быть двоичными. Для изображения зависимости между зависимой и независимой переменными можно использовать сигмоидную кривую.
Полиномиальная регрессия:
Полиномиальная регрессия — это разновидность регрессии, которая использует линейную модель для представления нелинейного набора данных. Хотя она соответствует нелинейной кривой между значением x и связанными с ним условными значениями y, ее можно сравнить с множественной линейной регрессией. Предположим, что имеется набор данных с выборочными данными, которые распределены в нелинейной форме; в этой ситуации линейная регрессия не будет наилучшим образом соответствовать этим точкам данных. Для охвата таких точек данных требуется полиномиальная регрессия. В полиномиальной регрессии исходные характеристики преобразуются в полиномиальные характеристики определенной степени, а затем моделируются с помощью линейной модели.
Примечание: Это отличается от множественной линейной регрессии тем, что в полиномиальной регрессии один элемент имеет различные степени, а не несколько переменных с одинаковой степенью.
Векторная регрессия с поддержкой:
Support Vector Machine — это алгоритм контролируемого обучения, который можно использовать как для решения задач регрессии, так и классификации. Если мы используем его для решения задач регрессии, то он называется регрессией вектора поддержки.
Support Vector Regression — это алгоритм регрессии, который работает для непрерывных переменных. Ниже приведены некоторые ключевые слова, которые используются в регрессии вектора поддержки:
- Ядро: Это функция, которая преобразует данные более низкой размерности в данные более высокой размерности.
- Гиперплоскость: В общем случае SVM — это линия, которая разделяет два класса, в то время как SVR — это линия, которая помогает прогнозировать непрерывные переменные и охватывает большинство точек данных.
- Граничная линия: Две линии, которые отстоят от гиперплоскости и создают границы для точек данных, называются граничными линиями.
- Векторы поддержки: Точки данных, расположенные ближе всего к гиперплоскости и противоположные классу, называются опорными векторами.
В SVR мы всегда пытаемся определить гиперплоскость с максимальным запасом, чтобы максимальное количество точек данных было охвачено этим запасом. Основная цель SVR — рассмотреть как можно больше точек данных в пределах граничных линий, а гиперплоскость (линия наилучшего соответствия) должна содержать как можно больше точек данных.
Регрессия дерева решений
- Деревья решений — это метод контролируемого обучения для решения задач классификации и регрессии.
- Он способен решать вопросы с категориальными и числовыми данными.
- Регрессия дерева решений строится в виде древовидной структуры, в которой каждый внутренний узел представляет собой «тест» для атрибута, каждая ветвь указывает на результат теста, а каждый листовой узел дает окончательное решение или результат.
- Начиная с корневого узла/родительского узла (набор данных), строится дерево решений, которое делится на левый и правый дочерние узлы (подмножества набора данных). Эти дочерние узлы далее делятся на свои дочерние узлы и сами становятся родительскими узлами этих узлов. Рассмотрим следующее изображение:
- Random forest — это мощный алгоритм контролируемого обучения, способный решать задачи как регрессии, так и классификации.
- Регрессия Random Forest — это метод ансамблевого обучения, который объединяет несколько деревьев решений и предсказывает конечный результат на основе среднего значения результатов каждого дерева. Объединенные деревья решений называются базовыми моделями, и их можно представить более формально как:
g(x)= f0(x)+ f1(x)+ f2(x)+…..
- Random forest использует технику ансамблевого обучения Bagging или Bootstrap Aggregation, при которой объединенные деревья решений работают параллельно и не взаимодействуют друг с другом.
- С помощью регрессии Random Forest мы можем предотвратить перебор в модели, создавая случайные подмножества набора данных.
Случайный лес
Случайный лес — это мета-оценщик, который настраивает несколько классифицирующих деревьев решений на разных подвыборках набора данных и использует усреднение для повышения точности прогноза и борьбы с чрезмерной подгонкой. Некоторые из важных параметров выделены ниже:
- n_estimators — количество деревьев решений, которые вы будете использовать в модели.
- criterion — эта переменная позволяет выбрать критерий (функцию потерь), который будет использоваться для определения результатов модели. Мы можем выбирать между такими функциями потерь, как средняя квадратичная ошибка (MSE) и средняя абсолютная ошибка (MAE). По умолчанию используется MSE.
- max_depth — задает максимально возможную глубину каждого дерева.
- max_features — максимальное количество признаков, которые модель будет учитывать при определении разделения
- bootstrap — значение по умолчанию True, что означает, что модель следует принципам бутстрапинга (определено ранее).
- max_samples — этот параметр действует только в том случае, если для бутстрапинга установлено значение True; в противном случае он не имеет никакого значения. При значении True эта переменная определяет наибольший размер каждой выборки для каждого дерева.
- Другие важные параметры — min_samples_split, min_samples_leaf, n_jobs и другие, о которых можно прочитать в документации sklearn’s RandomForestRegressor здесь.
В этой статье мы сосредоточимся на модели линейной регрессии. Последующие статьи с иллюстрациями для каждой из следующих моделей будут опубликованы позднее.
Практическая иллюстрация линейной регрессии показана в приведенном ниже коде. Код изображает множественную линейную регрессию. Однако этот же код может быть запущен для простой модели линейной регрессии. В качестве бонуса мы сначала провели быстрый анализ данных перед обучением
#importing our libraries
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
#importing our dataset
dataset = pd.read_csv("/content/Real estate.csv")
#brief overview of what our data looks like
dataset.head()
#Getting descriptive information from our data
dataset.describe()
dataset.info()
#Carrying out our data analysis to see correlations between our data
import seaborn as sns
sns.jointplot(dataset["X1 transaction date"], dataset["Y house price of unit area"])
sns.jointplot(dataset["X2 house age"], dataset["Y house price of unit area"])
sns.jointplot(dataset["X3 distance to the nearest MRT station"], dataset["Y house price of unit area"])
sns.jointplot(dataset["X4 number of convenience stores"], dataset["Y house price of unit area"])
sns.jointplot(dataset["X5 latitude"], dataset["Y house price of unit area"])
sns.jointplot(dataset["X6 longitude"], dataset["Y house price of unit area"])
sns.pairplot(dataset)
sns.lmplot(x='X5 latitude',y ='Y house price of unit area', data=dataset)
sns.lmplot(x='X6 longitude',y ='Y house price of unit area', data=dataset)
#Splitting our data into a training set and testing set
y = dataset["Y house price of unit area"]
X = dataset[["X1 transaction date" ,"X2 house age", "X3 distance to the nearest MRT station", "X4 number of convenience stores","X5 latitude", "X6 longitude"]]
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 0)
#Training the simple linear model on the training set
from sklearn.linear_model import LinearRegression
regressor = LinearRegression()
regressor.fit(X_train, y_train)
#Predicting the test results
y_pred = regressor.predict(X_test)
#Visualising the test set results
plt.scatter(y_test,y_pred)
plt.xlabel('Years of Experience')
plt.ylabel('Salary')
#Calculating the mean absolute error, mean sqaured error and the root mean squared error
from sklearn import metrics
#Evailuating our model
print('MAE:', metrics.mean_absolute_error(y_test, y_pred))
print('MSE:', metrics.mean_squared_error(y_test, y_pred))
print('RMSE:', np.sqrt(metrics.mean_squared_error(y_test, y_pred)))
#We move ahead to exploring the residuals to ensure everything is alright with our code
sns.distplot((y_test-y_pred),bins=50);
Вы можете ознакомиться с полным кодом здесь
Заключение
В целом, регрессионные модели просто помогают нам предсказать, сможем ли мы купить дом, основываясь на некоторых заранее определенных независимых переменных. Машина изучает модель и может предсказывать прошлые и будущие события.