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

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

Моделирование:

Возьмем повседневный пример.

Предположим, вы живете в определенном пригороде и вам нужно каждый день ездить на работу на общественном поезде. Теперь, когда вы часто пользуетесь общественным транспортом, вы хорошо понимаете, сколько времени вам понадобится, чтобы добраться до работы. Теперь ваш разум создал мысленную модель этой ситуации с различными данными, такими как время в пути, расстояние, которое нужно пройти, расписание поездов и т. Д. Эта ментальная модель помогает вам предсказать, в какое время вам нужно уйти из дома, если вам нужно выйти на работу в 9 утра (при условии, что это когда ваша работа начинается), сколько времени вы тратите на завтрак, в какое время вам нужно проснуться или время, потраченное на Готов к работе. Это понимание, которое вы создали мысленно, понимая взаимосвязь между всеми данными (время в пути, расписание поездов и т. Д.) В этой ситуации.

Точно так же специалист по данным пытается создавать модели, используя математические / статистические методы для данных, чтобы понять взаимосвязь. Этот процесс называется моделированием. Теперь давайте посмотрим на один из таких методов моделирования.

Линейная регрессия:

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

Линейная связь x и y и формулы:

Это уравнение для любой строки, где x - независимая переменная, а y - зависимая переменная. Линия, которую мы хотим построить для Y (предиктора) как функцию от X, параметризуется ее наклоном m и «пересечением по оси Y» b. Взгляните на диаграмму ниже, и я объясню вам, что и как мы можем интерпретировать m и b в линейном уравнении: y = mx + c.

Предположим, что существует линейная зависимость между x и y. Можно сказать, что если x увеличится на 1 единицу, y увеличится ровно на m единиц. b - константа, также известная как точка пересечения по оси Y. Если x = 0 , то y = b. Но в реальных данных трудно сказать, существует ли линейная связь, и поэтому мы используем простую линейную регрессию, чтобы понять взаимосвязь двух переменных данных (x и y). Это то, что вы поймете лучше к концу этого блога. Теперь давайте перейдем к простой линейной регрессии и посмотрим, что это такое.

Простая линейная регрессия:

Мы можем использовать пример, чтобы лучше объяснить это. Давайте изобразим значения y и x на графике, и давайте просто попробуем поместить линию в эти графики (которая в основном является линейной моделью), где линия пытается иметь равные участки с обеих сторон. Эта линия в основном поможет нам предсказать значения y.

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

(Подробнее об этом можно узнать, поняв среднеквадратичную ошибку -MSE)

Посмотрите на изображение / пример ниже, это дает нам представление о различных типах линейных отношений:

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

Линейная регрессия с использованием Python:

Есть два популярных способа применения линейной регрессии в Python.

  • scikit-learn
  • Статистические модели

Я буду использовать пример из заметок / упражнения, которое я пытался. Начнем со sklearn (scikit-learn)

Scikit-learn:

Сначала мы импортируем наш набор данных из библиотеки sklearn:

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

Теперь давайте импортируем панд и поработаем с этим набором данных во фрейме данных. Обратите внимание, что мы используем MEDV - Медиана стоимости домов, занимаемых владельцами, в 1000 долларов в качестве целевого значения или значения y:

Обзор самих данных:

Давайте рассмотрим x как RM (среднее количество комнат в доме), которое будет независимой переменной. Теперь давайте построим графики x и y, используя морские орбиты.

Между переменными существует положительная умеренная линейная зависимость:

Теперь давайте поместим модель в график, используя функции sklearn:

Теперь давайте получим прогнозы (которые являются линейным уравнением для линии наилучшего соответствия) и оценим:

Обратите внимание: оценка здесь R2:

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

Затем мы наносим на график прогнозируемое значение y (назовем его yhat на графике) и фактическое значение y, чтобы увидеть, насколько хорошо работает модель.

Из оценки, которая в основном является R2, ​​мы понимаем, что наиболее подходящая модель имеет точность 48%.

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

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

теперь вернемся к линейному уравнению:

y = mx + b

model.coef_ даст вам уклон (м), и мы можем интерпретировать это как очень большое увеличение значения x (RM-среднее количество комнат в доме) на 1 единицу, значение y (MEDV - среднее значение домов, занимаемых владельцами в $ 1000) увеличится на 9.10210898.

model.intercept_ предоставит вам точку пересечения (b), которую можно интерпретировать как когда значение x (RM-среднее количество комнат в доме) = 0, y (MEDV - Среднее значение домов, занимаемых владельцем, в 1000 долларов США) быть -34,67.

Я лично предпочитаю этот метод модели статистики, но любой из них выполняет свою работу. Теперь давайте посмотрим на модель статистики.

Модель статистики:

В основном аналогичные шаги и довольно простые:

Использование .summary ():

Интерпретация:

Описаний много, давайте рассмотрим те, которые мы обсуждали ранее. Сначала у нас есть зависимая переменная, модель и метод. OLS - обычные наименьшие квадраты и наименьшие квадраты означает, что мы пытаемся подогнать линию регрессии с минимальной невязкой. Коэффициент 3,6534 означает, что по мере увеличения переменной RM на 1 прогнозируемое значение MDEV увеличивается на 3,653.

Вывод:

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