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

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

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

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

Оглавление

1. Что такое мультиколлинеарность?

2. Проблема мультиколлинеарности

3. Что вызывает мультиколлинеарность?

4. Как обнаружить мультиколлинеарность с помощью VIF?

5. Тест на обнаружение мультиколлинеарности

6. Решения для мультиколлинеарности

7. Реализация VIF с использованием Python

Что такое мультиколлинеарность?

Мультиколлинеарность возникает, когда две или более независимых переменных (также известных как предикторы) сильно коррелируют друг с другом в регрессионной модели.

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

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

Это проблема мультиколлинеарности!

Проблема мультиколлинеарности

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

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

Допустим, у нас есть следующее линейное уравнение

Y=a0+a1*X1+a2*X2

Здесь X1 и X2 — независимые переменные. Математическое значение a1 заключается в том, что если мы сместим нашу переменную X1 на 1 единицу, то наша Y сдвинется на a1 единиц, сохраняя X2 и другие вещи постоянными. Точно так же для a2 мы имеем, если мы сдвинем X2 на одну единицу, Y также сдвинется на одну единицу, сохраняя X1 и другие факторы постоянными.

Но для ситуации, когда существует мультиколлинеарность, наши независимые переменные сильно коррелированы, поэтому, если мы изменим X1, X2 также изменится, и мы не сможем увидеть их индивидуальное влияние на Y, что является целью нашего исследования для регрессионной модели.

" Из-за этого влияние X1 на Y трудно отличить от влияния X2 на Y".

Примечание.

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

Что вызывает мультиколлинеарность?

Мультиколлинеарность может возникнуть по следующим причинам:

1. Мультиколлинеарность могла существовать из-за проблем в наборе данных во время создания. Эти проблемы могут быть вызваны плохо спланированными экспериментами, данными наблюдений или невозможностью манипулировать данными. (Это называется мультиколлинеарностью, связанной с данными).

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

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

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

3. Когда в наборе данных есть идентичные переменные.

Например, включая вес человека в килограммах и другого для веса в граммах или каких-то других единицах.

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

Например, в наборе данных, содержащем переменную статуса брака с двумя уникальными значениями: «замужем», «холост». Создание фиктивных переменных для обоих из них будет включать избыточную информацию. Мы можем обойтись только одной переменной, содержащей 0/1 для статуса «замужем»/«холост».

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

Обнаружение мультиколлинеарности с использованием VIF (фактор инфляции дисперсии)

Давайте попробуем обнаружить мультиколлинеарность в наборе данных, чтобы дать вам представление о том, что может пойти не так.

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

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

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

VIF=1/(1-R²)

Таким образом, чем ближе значение к 1, тем выше значение VIF и выше мультиколлинеарность с конкретной независимой переменной.

  • VIF начинается с 1 (когда R²=0, VIF=1 — минимальное значение для VIF) и не имеет верхнего предела.
  • VIF = 1, корреляция между независимой переменной и другими переменными отсутствует.
  • VIF, превышающий 5 или 10, указывает на высокую мультиколлинеарность между этой независимой переменной и другими.
  • Некоторые исследователи считают, что VIF>5 является серьезной проблемой для нашей модели, в то время как некоторые исследователи считают серьезной проблему VIF>10, она варьируется от человека к человеку.

У меня есть набор данных прогноза цен в Бостоне, основанный на следующих независимых функциях, информации об атрибутах (по порядку):

– ПРИМ на душу населения уровень преступности по городам

– ZN доля жилой земли, зонированной под участки площадью более 25 000 кв. футов.

– Доля INDUS акров неторгового бизнеса на город

– фиктивная переменная CHAS Charles River (= 1, если участок граничит с рекой; 0 в противном случае)

– концентрация оксидов азота NOX (частей на 10 миллионов)

– RM среднее количество комнат в жилом помещении

– Доля AGE квартир, занимаемых владельцами, построенных до 1940 г.

– Взвешенные расстояния DIS до пяти центров занятости Бостона

– RAD индекс доступности к радиальным магистралям

— НАЛОГ Полная ставка налога на имущество за 10 000 долларов США

– Соотношение учеников и учителей PTRATIO по городам

– B 1000(Bk — 0,63)², где Bk — доля негров по городам.

– LSTAT % более низкий статус населения

– MEDV Средняя стоимость домов, занимаемых владельцами, в 1000 долларов США.

Тест на обнаружение мультиколлинеарности

1. Коэффициент инфляции дисперсии (VIF)

– Если VIF=1; Нет мультиколлинеарности

– Если VIF=‹5; Низкая мультиколлинеарность или умеренно коррелированная

– Если VIF=›5; Высокая мультиколлинеарность или высокая корреляция

2. Допуск (обратный VIF)

– Если значение VIF высокое, то допуск будет низким, т. е. мультиколлинеарность будет высокой.

– Если VIF низкий, допуск будет высоким, т. е. низкая мультиколлинеарность.

Решения для мультиколлинеарности

1. Отбросьте переменные, вызывающие проблему.
 – При использовании большого количества Х-переменных можно использовать пошаговую регрессию, чтобы определить, какие из переменных следует отбросить.
 – Удаление коллинеарных Х-переменных простейший метод решения проблемы мультиколлинеарности.

2. Если все Х-переменные сохранены, то не следует делать выводов об отдельных параметрах. Кроме того, ограничьте выводы о среднем значении Y значений X, которые лежат в экспериментальной области.

3. Перекодируйте форму независимых переменных.
Например, если x1 и x2 коллинеарны, вы можете вместо этого попробовать использовать x1 и отношение x2/x1.

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

5. Путем стандартизации переменных, т. е. путем вычитания среднего значения или взятия отклоненных форм переменных (xi=Xi-mean(X))

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

Реализация VIF с использованием Python

import numpy as np
import pandas as pd
import statsmodels.api as sm

from sklearn.datasets import load_boston
boston = load_boston()
boston.DESCR #For see the description about the complete dataset.

X = boston["data"] # Independent variables
Y = boston["target"] # Dependent variable

names = list(boston["feature_names"]) # Name for all the attributes

df = pd.DataFrame(X, columns=names) # Make the pandas dataframe for Data analysis
df.head() # See first 5 samples from the dataframe

for index in range(0, len(names)):
            y = df.loc[:, df.columns == names[index]]
            x = df.loc[:, df.columns != names[index]]
            model = sm.OLS(y, x)                       #Fit ordinary least squares method
            results = model.fit()
            rsq = results.rsquared
            vif = round(1 / (1 - rsq), 2)
            print("R Square value of {} column is {} keeping all other columns as independent features".format(
              names[index], (round(rsq, 2))
                    )
            )
            print("Variance Inflation Factor of {} column is {} n".format(
                 names[index], vif)
          )

Ответ

R Square value of CRIM column is 0.52 keeping all other columns as independent features
Variance Inflation Factor of CRIM column is 2.1 

R Square value of ZN column is 0.65 keeping all other columns as independent features
Variance Inflation Factor of ZN column is 2.84 

R Square value of INDUS column is 0.93 keeping all other columns as independent features
Variance Inflation Factor of INDUS column is 14.49 

R Square value of CHAS column is 0.13 keeping all other columns as independent features
Variance Inflation Factor of CHAS column is 1.15 

R Square value of NOX column is 0.99 keeping all other columns as independent features
Variance Inflation Factor of NOX column is 73.89 

R Square value of RM column is 0.99 keeping all other columns as independent features
Variance Inflation Factor of RM column is 77.95 

R Square value of AGE column is 0.95 keeping all other columns as independent features
Variance Inflation Factor of AGE column is 21.39 

R Square value of DIS column is 0.93 keeping all other columns as independent features
Variance Inflation Factor of DIS column is 14.7 

R Square value of RAD column is 0.93 keeping all other columns as independent features
Variance Inflation Factor of RAD column is 15.17 

R Square value of TAX column is 0.98 keeping all other columns as independent features
Variance Inflation Factor of TAX column is 61.23 

R Square value of PTRATIO column is 0.99 keeping all other columns as independent features
Variance Inflation Factor of PTRATIO column is 85.03 

R Square value of B column is 0.95 keeping all other columns as independent features
Variance Inflation Factor of B column is 20.1 

R Square value of LSTAT column is 0.91 keeping all other columns as independent features
Variance Inflation Factor of LSTAT column is 11.1