С возвращением, читатели!

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

Если вы пропустили, нажмите здесь, чтобы перейти к части 1: → https://link.medium.com/dT5sMWr975

Тематическое исследование

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

Постановка задачи

SP Buildcom, компания по недвижимости, собрала данные о недвижимости в районе Мумбаи, чтобы оптимизировать цены продажи недвижимости на основе таких важных факторов, как площадь собственности, количество спален, местоположение собственности и т. д.

Таким образом, мы можем разбить цель следующим образом →

  • Определите переменные, влияющие на цену недвижимости.
  • Предсказать цены на жилье.

Информация о данных

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

  • Столбцы → 13
  • Строки → 545

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

Как видите, существуют различные переменные, связанные с недвижимостью. Если рассуждать логически, то эти факторы безусловно влияют на цену недвижимости. Теперь давайте проверим верхние 5 строк.

Есть еще одна ценная информация о типах переменных, которую нам нужно проверить, чтобы понять, какая переменная хранит какие данные?

Подготовка данных

Если бы вы могли заметить, что большинство переменных носят категориальный характер. Посмотрите на тип «объекта», показанный выше, — это не что иное, как категориальные данные. Давайте проверим→

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

Эти категориальные переменные должны быть обработаны в первую очередь, прежде чем мы построим на их основе какую-либо модель. Мы можем легко добавить метку к категориальным переменным с категорией «да» или «нет».

  • «да» → 1
  • ‘no’ → 0

Теперь перейдем к статусу мебели, так как есть 3 категории, что происходит, когда мы обозначаем их, как показано ниже →

  • Полу-меблированный : 0
  • Без мебели: 1
  • С мебелью: 2

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

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

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

Я написал функцию, основанную на приведенной выше формуле, для выполнения задачи нормализации столбцов в Python. Математическая формула для расчета нормализации приведена ниже:

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

  • Данные поезда (70% данных)
  • Тестовые данные (30 % данных)

Теперь приступим к процессу моделирования.

Регрессионное моделирование

Цель состоит в том, чтобы предсказать цены на квартиры с помощью заданных независимых переменных. Применив модель, мы получим следующие результаты.

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

R в квадрате / скорректированный R в квадрате: →

Это не что иное, как производительность вашей модели. Другими словами, мы можем сказать, что это % дисперсии зависимой переменной, которая в совокупности объясняется независимыми переменными. Это сила связи между моделью и зависимой переменной. Значение R² варьируется от 0 до 1 шкалы.

  • В этом случае R² составляет 0,68, что означает, что все независимые переменные объясняют 68% дисперсии целевой переменной.
  • Как правило, R² выше 0,5 считается хорошим, но опять же это полностью зависит от конкретной проблемы.

Есть некоторые проблемы с R², которые необходимо понять —

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

Не волнуйтесь! Существует так называемый Скорректированный R², который решает эти проблемы, упомянутые выше.

  • В скорректированном R², когда вы добавляете новую переменную в модель, ее значение увеличивается только тогда, когда эта добавленная новая переменная еще больше улучшает модель.
  • Если новая переменная не улучшит модель, то значение Adjusted R² уменьшится.

Коэффициент регрессии: →

Знак коэффициента регрессии покажет вам, существует ли положительная или отрицательная корреляция между каждой независимой переменной и зависимой переменной.

  • Положительное значение коэффициента указывает на то, что при увеличении значения независимой переменной увеличивается и зависимая переменная.
  • Отрицательное значение коэффициента указывает на то, что значение независимой переменной увеличивается, а зависимая переменная уменьшается.
  • Значение коэффициента говорит нам, насколько среднее значение зависимой переменной изменяется при сдвиге независимой переменной на одну единицу при неизменности всех остальных независимых переменных.

P-значение: →

Фактически, p-значение используется при проверке гипотезы для подтверждения или отклонения нулевой гипотезы. Это свидетельство против нулевой гипотезы. Чем меньше p-значение, тем сильнее свидетельство того, что вы должны отклонить нулевую гипотезу. Таким образом, другими словами, мы можем сказать, что p-значение — это вероятность того, что нулевая гипотеза верна.

Позвольте мне определить гипотезу здесь →

H0: коэффициент регрессии = 0

H1: Коэффициент регрессии! = 0

Фактически, P-значение и коэффициент работают вместе в регрессионном анализе, чтобы сказать вам, какая переменная в вашей модели является статистически значимой, а какая нет.

  • Низкое значение p, то есть значение P ≤ 0,05, указывает на то, что вы можете отвергнуть нулевую гипотезу. Другими словами, предиктор с низким p-значением, вероятно, будет значимым дополнением к вашей модели, поскольку изменения в значении предиктора связаны с изменениями в переменной отклика.
  • Переменная с высоким значением p указывает на то, что переменная не вносит никакого вклада в модель.
  • Такие переменные, как «Спальня, Меблированная, Полумеблированная», имеют значение P > 0,05, как показано в результате. Если вы проверите значение соответствующего коэффициента, вы увидите, что эти переменные не играют большой роли в регрессионном анализе.

Стандартная ошибка: →

Стандартная ошибка регрессии и R² являются мерами согласия в регрессионном анализе. Обе модели дают нам числовое значение, чтобы решить, насколько хороша наша модель. Но есть отличия

  • Стандартная ошибка модели регрессии говорит нам, как далеко в среднем точки данных от линии регрессии. Наша цель — сохранить это расстояние небольшим, поскольку это означает, что расстояние между точками данных и подобранными значениями меньше.
  • В R² мы описываем % дисперсии в модели. Более высокое значение R² указывает, что точки данных находятся ближе к аппроксимированной линии.

Если вы наблюдаете, что значения из столбца стандартных ошибок в сводке регрессии низкие.

Линейная регрессия с использованием регуляризатора L1

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

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

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

Если вы заметили, что Лассо не выбрал переменную под названием «мебель», поскольку она является менее важным фактором, значение коэффициента для нее было оштрафовано до 0,00. Точность модели Lasso, которую я получил, составляет около 68%.

Оценка модели

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

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

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

Заключительное примечание: -

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

Спасибо за чтение :)