Интуитивное руководство по науке о данных: линейная регрессия

Введение:

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

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

Линейная регрессия — это статистический метод, который пытается смоделировать взаимосвязь между целевыми переменными (то, что вы хотите предсказать) и независимыми переменными (то, что вы вводите в модель), подбирая линейное уравнение к предоставленным данным. «Линейный» относится к линейной зависимости между каждой независимой переменной и целевой переменной, а НЕ к самим переменным. Это означает, что x² может иметь линейную зависимость от y, пока коэффициенты линейны.

Линейная регрессия от вашего введения к классу статистики

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

Вот краткий обзор данных (всего 1276 записей):

Обобщенное уравнение для линейной зависимости будет выглядеть так:

Для нашего прогноза мы создаем простую линейную регрессию (одна цель Y с одной независимой переменной X), которая выглядит следующим образом:

Используя пакет Sklearn от Python, я получил следующий результат регрессии:

Красная линия, которая используется для подгонки данных и описания взаимосвязи:

Корреляция отрицательна, как и ожидалось. Чтобы определить, насколько это значимо, мы используем показатель под названием R². В этой линейной модели R² составляет 0,144, что означает, что модель фиксирует около 14% всех изменений данных.

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

Теперь это похоже на модель линейной регрессии из моего введения в класс статистики. Имея данные (положение в НБА и количество оставшихся игроков), строится и описывается линия (Y=-0,095*X + 11,176). Производительность также объясняется R² (0,144). Остатки выглядят нормально.

Мы все? Нет, далеко не так. Это просто ваша линейная регрессия от введения к классу статистики, где вы получаете подогнанную линию и R² и называете это днем. Настоящий подход специалиста по данным к линейной регрессии касается более сложных данных и более практических вопросов, связанных с данными, моделями и линейными предположениями.

Data Scientist Путь к линейной регрессии

Предположения линейной регрессии:

Сначала давайте рассмотрим предположения о линейной регрессии. Эти допущения необходимо учитывать в процессе создания применимой и интерпретируемой регрессионной модели. Я не буду подробно рассказывать об этом. Для получения дополнительной информации, пожалуйста, перейдите здесь.

  • Линейность между целью и каждой функцией: ((Если у вас есть нелинейные отношения, весьма вероятно, что прогнозы будут ошибочными, особенно когда модель применяется вне данных обучения/тестирования. Нелинейный шаблон может быть наблюдается на остаточном графике или проверяется с помощью теста остаточной нормальности. Чтобы исправить это, рассмотрите возможность преобразования признаков или используйте другие алгоритмы.))
  • Гомоскедастичность ошибок: ошибки имеют постоянную дисперсию и проявляются в пределах границ. Рассмотрим преобразование журнала.
  • Отсутствие автокорреляции ошибок: ошибки не зависят друг от друга. Если да, то это данные временного ряда.
  • Отсутствие коллинеарности между функциями (независимые функции): коллинеарность не добавляет дополнительной информации или объяснительной силы, но снижает интерпретируемость.
  • Отсутствие выбросов/точек высокого рычага. Эти точки просто искажают модель.

Имея в виду эти предположения, специалист по данным начнет строить интерпретируемую модель, которая имеет смысл, начиная с данных.

Исследовательский анализ данных (EDA)

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

EDA: получите больше релевантных данных

Важно понимать, что цель вряд ли будет предсказана по одному признаку. Здесь вы будете использовать свое деловое чутье для определения потенциальных функций. Давайте сделаем это так же, как вы столкнетесь с реальными бизнес-сценариями:

  • Победа: чем больше команда побеждает, тем меньше игроков уходит из-за стабильности.
  • Проигрыш: чем больше команда проигрывает, тем больше игроков уходит на замену.
  • Общее время игры игрока (от 1-го до 15-го): то, сколько времени игрок играет, указывает на его ценность для команды. Чем больше общее игровое время, тем ценнее, тем меньше шансов покинуть команду

ЭДА: Парные сюжеты!

Теперь у нас есть три ключевых типа объяснительных функций. Они имеют смысл с точки зрения бизнеса, как объяснялось выше. Теперь мы хотим посмотреть, есть ли смысл включать их в нашу модель. Давайте сначала посмотрим на корреляцию.

Похоже, что выигрыш/проигрыш и 13–15-е место среди самых популярных игроков имеют относительно сильную корреляцию с нашим целевым числом игроков, оставшихся каждый год. Итак, давайте посмотрим, как точки данных этих функций соответствуют нашей цели. Для этого в пакете Python Seaborn есть «парные графики», которые идеально подходят для нашей цели.

Идентифицируйте выбросы (точки высокого кредитного плеча)

Мы видим выбросы! Наиболее заметно это видно из графика выигрышей/проигрышей (выделено выше). В идеале сюжет должен быть таким: «Победа + поражение = 82», учитывая, что в сезоне НБА 82 игры. Однако есть две строки, указывающие на то, что общее количество игр меньше 82 игр. После некоторых исследований есть два сезона локаута, в которых было всего 50 и 66 игр соответственно!

Более обобщенным методом выявления выбросов будет использование статистического метода поиска точек данных за пределами 1,5 * IQR (межквартильный диапазон).

Работа с выбросами (точки высокого рычага)

Есть много причин, по которым некоторые данные являются выбросами:1)Просто неверные данные 2) Исключительные случаи (например, Майкл Джордан и его среднее количество очков за игру) 3) Хвост выборочного распределения (например, 99-й процентиль баллов SAT)

Для плохих данных вы ничего не можете сделать, кроме как выбросить их или выполнить преобразование (например, преобразование журнала), чтобы смягчить влияние выбросов. В исключительных случаях вы захотите сохранить их в своих данных, потому что с ними все в порядке! Что касается хвостов выборочного распределения, вы должны использовать свое суждение, чтобы определить, нужны они вам или нет, предпочтительно после преобразования.

Разработка функций

Разработка функций — это метод создания новых функций для улучшения производительности и интерпретируемости модели за счет использования заданных функций и знаний в предметной области. В примере с НБА я буду комбинировать выигрыши и проигрыши, чтобы создать «коэффициент выигрышей» в качестве новой функции. Здесь есть две причины: 1) выигрыш/проигрыш напрямую коррелируют, что нарушает предположение об отсутствии коллинеарности 2) выигрыш/проигрыш по-разному влияют на изменение состава, где предельный проигрыш будет связан с более высоким предельным изменением состава. Проще говоря, команды и менеджеры более не склонны к потерям.

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

Преобразование: подготовка данных

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

Выбор функции/модели

Поздравляем, вы только что подготовили данные для линейной регрессии. Опять же, тратить время на подготовку данных перед тем, как перейти к моделированию, это того стоит, потому что…МУСОР В МУСОРЕ.

Функции, которые вы выбрали и спроектировали, подобны ингредиентам в корзине. Модель, которую вы собираетесь построить, — это блюдо, которое вы готовите.

Большой: обучение/валидация/тестовый сплит

Маленький: перекрестная проверка в поезде, затем оценка на тестовом наборе

  • Перекрестная оценка (валидация RMSE)
  • K-кратный (поезд/значение RMSE)

Определите избыточную/недостаточную подгонку, высокое среднеквадратичное отклонение, затем посмотрите на соотношение тестов/обучения RMSE.

Если переобучение, попробуйте регуляризацию

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

Обучить настроенную модель (какие данные, какие формы данных, какая модель, какая альфа, какая мощность и т. д.) на всех данных

Пройдя через EDA, чтобы выяснить соответствующие независимые переменные и их преобразования, вы получите представление о том, как подходит ваша линейная модель (переоснащение или недостаточное соответствие). Затем, применяя различные алгоритмы, вы узнаете, какой из них дает наилучшую прогностическую силу и результаты. Последнее, что нужно сделать в этом процессе, — обучить модель, которую вы выбрали, на независимых переменных, которые вы выбрали для ВСЕГО НАБОРА ДАННЫХ для оптимизированной линейной модели.

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

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

[email protected]