Введение в модель непрерывного прогнозирования данных

Линейная регрессия — это широко используемый статистический метод для моделирования взаимосвязи между зависимой переменной и одной или несколькими независимыми переменными. Он предполагает линейную связь между независимыми переменными (признаками) и зависимой переменной (целью).

Простое уравнение линейной регрессии можно представить как:

y = b0 + b1 * x1 + b2 * x2 + … + bn * xn

Где:

y: зависимая переменная (цель),

b0 : y-пересечение (член смещения),

b1, b2, …, bn – коэффициенты при независимых переменных x1, x2, …, xn соответственно.

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

Практический пример (набор данных о ценах на жилье)

Мы будем работать над набором данных о жилье.

Он содержит столбцы данных, показывающие характеристики домов в США, а также цены на дома.

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

Взглянув на набор данных, мы находим различные характеристики

Мы видим, что в столбцах «Доход», «Комнаты» и «Спальни» отсутствуют некоторые данные.

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

Мы видим несколько столбцов с такими выбросами.

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

Затем мы проверяем, велико ли количество выбросов по сравнению со значениями столбца.

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

Outliers for Income :  0.62 % 
Outliers for Age :  0.50 % 
Outliers for Rooms :  0.50 % 
Outliers for Bedrooms :  0.00 % 
Outliers for Population :  0.60 %

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

0

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

Outliers for Income :  0.00 % 
Outliers for Age :  0.00 % 
Outliers for Rooms :  0.00 % 
Outliers for Bedrooms :  0.00 % 
Outliers for Population :  0.00 %

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

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 5000 entries, 0 to 4999
Data columns (total 7 columns):
 #   Column      Non-Null Count  Dtype  
---  ------      --------------  -----  
 0   Income      5000 non-null   float64
 1   Age         5000 non-null   float64
 2   Rooms       5000 non-null   float64
 3   Bedrooms    5000 non-null   float64
 4   Population  5000 non-null   float64
 5   Price       5000 non-null   float64
 6   Address     5000 non-null   object 
dtypes: float64(6), object(1)
memory usage: 273.6+ KB
5000

Мы видим, что столбец «Адрес» имеет 5000 уникальных значений, а в наборе данных 5000 строк. Следовательно, нам нужно проверить, является ли «Адрес» значимым столбцом или нет.

sum_sq       df     F  PR(>F)
Address      47291033742.806    1.000 0.379   0.538
Residual 623288307928564.750 4998.000   NaN     NaN

Как мы видим, p > 0,05, «Адрес» не является значимой переменной. Это означает, что Адрес не влияет на цену дома.

Поскольку столбец «Адрес» не имеет статистической значимости в данных, мы удалим этот столбец.

Как мы видим на тепловой карте, все столбцы имеют некоторую корреляцию со столбцами «Цена».
Поскольку ни один из столбцов не имеет высокой корреляции, нам не нужно удалять какие-либо столбцы.

В соответствии с отраслевыми стандартами мы можем удалить любой столбец, корреляция которого превышает 0,75 в тепловой карте.

Коэффициент инфляции дисперсии измеряет, насколько на поведение (дисперсию) независимой переменной влияет или раздувает ее взаимодействие/корреляция с другими независимыми переменными. Коэффициенты инфляции дисперсии позволяют быстро измерить, насколько переменная вносит вклад в стандартную ошибку регрессии.

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

Ri здесь означает оценку R2 столбца i.

Чтобы проверить распределение между различными столбцами в наборе данных, мы используем Pairplot.

Мы делим набор данных на обучающие и тестовые данные.

В соответствии с отраслевым стандартом мы будем обучать: Тестовые данные разделить на 70:30.

Чтобы проверить, имеют ли столбцы данных существенную связь со столбцом «Цена». Чтобы проверить статистическую значимость, мы вводим обработанные данные в алгоритм OLS.

Мы проверяем другие детали, а также автокорреляцию с помощью теста Дурбина-Ватсона (приемлемо значение около 2).

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

Мы видим, что значение p для столбца «Спальни» превышает 0,05. Следовательно, нам следует рассмотреть возможность удаления этого столбца, поскольку он не является статистически значимым для зависимого столбца «Цена».

После этого мы переходим к обучению нашей модели линейной регрессии.

Мы используем модель sklearn для линейной регрессии.

Далее мы переходим к прогнозированию точности нашей линейной модели.

Training Accuracy  0.9158243573875635
**********************************************************************
Test Accuracy  0.915623326149149

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

Теперь мы проверим нормальность остатка, поскольку линейная регрессия предполагает, что данные находятся в нормальном распределении.
Мы видим, что это предположение подтверждается на приведенных ниже графиках.

Регуляризация:

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

Двумя стандартными методами регуляризации в линейной регрессии являются регуляризация L1 (Лассо) и регуляризация L2 (Ридж):

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

Мы будем использовать следующие типы регуляризации:

  • Лассо-регрессия (L1)
  • Гребневая регрессия (L2)
  • Регрессия ElasticNet

Регуляризация L1 (Лассо):

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

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

For 1 as alpha :
Weights : [2.17200184e+01 1.66106571e+05 1.22402675e+05 1.52746490e+01]
        For TRAIN :  0.91582
        For TEST :  0.91562
For 0.01 as alpha :
Weights : [2.17200198e+01 1.66107620e+05 1.22403677e+05 1.52746479e+01]
        For TRAIN :  0.91582
        For TEST :  0.91562
For 0.0001 as alpha :
Weights : [2.17200198e+01 1.66107631e+05 1.22403687e+05 1.52746479e+01]
        For TRAIN :  0.91582
        For TEST :  0.91562

Регуляризация L2 (хребет):

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

For 1 as alpha :
Weights : [2.17199705e+01 1.66057424e+05 1.22368255e+05 1.52746806e+01]
        For TRAIN :  0.91582
        For TEST :  0.91562
For 0.01 as alpha :
Weights : [2.17200193e+01 1.66107128e+05 1.22403333e+05 1.52746482e+01]
        For TRAIN :  0.91582
        For TEST :  0.91562
For 0.0001 as alpha :
Weights : [2.17200198e+01 1.66107626e+05 1.22403683e+05 1.52746479e+01]
        For TRAIN :  0.91582
        For TEST :  0.91562

Эластичная чистая регрессия объединяет эти два метода путем добавления условий регуляризации L1 (лассо) и L2 (гребень) к целевой функции линейной регрессии. В этом методе используются два гиперпараметра: «альфа» контролирует баланс между двумя условиями регуляризации, а «l1_ratio» контролирует сочетание штрафов L1 и L2.

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

Elastic Net особенно полезен, когда у вас много коррелирующих переменных-предикторов и вам нужна модель, которая одновременно выбирает соответствующие функции и смягчает эффекты мультиколлинеарности.

For 1e-06 as alpha :
Weights : [2.17200197e+01 1.66107543e+05 1.22403625e+05 1.52746479e+01]
        For TRAIN :  0.91582
        For TEST :  0.91562
For 0.0001 as alpha :
Weights : [2.17200112e+01 1.66098842e+05 1.22397485e+05 1.52746536e+01]
        For TRAIN :  0.91582
        For TEST :  0.91562
For 0.01 as alpha :
Weights : [2.17191615e+01 1.65233364e+05 1.21786576e+05 1.52752181e+01]
        For TRAIN :  0.91582
        For TEST :  0.91561

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

Градиентный спуск:

Градиентный спуск — это алгоритм оптимизации для поиска оптимальных коэффициентов (b0, b1,…, bn) в линейной регрессии. Он итеративно обновляет коэффициенты, продвигаясь к наибольшему спуску функции стоимости.

Функция стоимости в линейной регрессии обычно представляет собой среднеквадратическую ошибку (MSE), которая измеряет среднеквадратическую разницу между прогнозируемыми и фактическими значениями. Градиентный спуск направлен на минимизацию этой функции стоимости.

For 0.01 as alpha :
        For TRAIN :  0.91580
        For TEST :  0.91382

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