Разумно понимать вещи, связанные с «коллинеарностью» или «мультиколлинеарностью», чтобы преуспеть в области науки о данных. Хотя обе эти концепции объясняют одно и то же с тонкой разницей. (Не волнуйтесь, я объясню разницу наивным языком)

Давайте проверим повестку дня для этого сообщения в блоге.

  1. Коллинеарность против мультиколлинеарности
  2. Как искажается весовой вектор признаков при наличии коллинеарности?
  3. Почему мультиколлинеарность может быть опасна для вашей регрессионной модели?
  4. Способы обнаружения мультиколлинеарности среди признаков?
  5. Как убрать мультиколлинеарность?

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

Коллинеарность против мультиколлинеарности

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

Как искажается весовой вектор признаков при наличии коллинеарности?

Допустим, у вас есть 3 функции F = {F1, F2, F3} с соответствующими весами W* = {1, 2, 3}.

Допустим, у вас есть новая точка запроса (вектор-строка) Xq = {Xq1, Xq2, Xq3}, тогда веса функций выровняют ее следующим образом:

Давайте перепишем приведенное выше предложение и назовем его уравнением (1).

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

Теперь давайте подставим это значение в наше уравнение (1) и решим уравнение.

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

Примечание:-

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

Почему мультиколлинеарность может быть опасна для вашей регрессионной модели?

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

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

Способы обнаружения мультиколлинеарности среди признаков?

Существует несколько методов фиксации мультиколлинеарности признаков. В этом сообщении в блоге давайте попробуем охватить эти методы!

  1. Корреляционная матрица
  2. ВИФ

Давайте рассмотрим каждый из них выше.

Матрица корреляции

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

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

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

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

Несколько замечаний, которые я хотел бы добавить,

  1. Переменная «Интерьер» тесно связана с количеством кроватей, количеством комнат и количеством ванн.
  2. Существует высокая корреляция между количеством комнат и количеством кроватей, которая не замечается!
  3. Существует также высокая корреляция между «платой за квартиру» и «налогом».

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

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

Лучше иметь одну метрику для понимания мультиколлинеарности, чем корреляционную интерпретацию. Существует одна популярная метрика, известная как коэффициент инфляции дисперсии или сокращенно VIF, которая делает то же самое. Но что вы подразумеваете под ВИФ?

Это отношение дисперсии модели к дисперсии модели, которая включает только эту одну независимую переменную.

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

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

Внимательно посмотрите на таблицу: Количество спальных мест и Количество комнат имеют высокий показатель VIF, что указывает на сильную коллинеарность между этими функциями. В реальной жизни это так незаметно, и приведенная выше таблица имеет смысл. Но что это за баллы?

Оценка каждой независимой переменной показывает, насколько хорошо переменная объясняется другими независимыми переменными. Для этого каждая независимая переменная выступала в качестве зависимой переменной. Будет сгенерирована оценка R2 (R-квадрат). Чем выше показатель R2, тем больше эта переменная коррелирует с другими переменными. Это то, что VIF возвращает в виде оценки (см. таблицу выше)

Основная проблема, которую я обнаружил с VIF, заключается в том, что нет верхнего предела. Он начинается с 1 и идет к бесконечности. Приведенная выше таблица является простым эмпирическим правилом, поскольку нет жестких и установленных правил для их интерпретации. Например, некоторые компании принимают значения VIF до 7, а некоторые хотят, чтобы VIF был ниже 4.

Как исправить мультиколлинеарность?

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

  • Удаление коррелированных переменных
  • Объединение переменных
  • Спаситель жизни → PCA

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

Удаление коррелированных переменных

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

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

Следует помнить, что удаление переменных и проверка VIF — это повторяющийся процесс. Несмотря на то, что у нас есть информация о двух переменных, которые необходимо удалить, мы не удалили их сразу. Здесь мы сначала удалили «Interior (Sq Ft)», так как он имеет самое высокое значение VIF. Как только мы удалили его и снова проверили значения VIF, значения VIF других переменных изменились. Поэтому мы должны удалять переменные итеративно.

Объединение переменных

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

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

Давайте проверим наши предположения с помощью таблицы VIF. (Мы будем вызывать нашу функцию VIF для измененных данных)

Эти два метода чаще всего используются в отрасли для устранения эффекта мультиколлинеарности. Есть еще один метод, который нам еще предстоит обсудить, — как PCA может спасти жизнь, когда у вас есть проблема мультиколлинеарности. …

Спаситель жизни → PCA

Анализ основных компонентов (короткий, PCA) — это метод уменьшения размерности, используемый для уменьшения размерности данных. В процессе уменьшения размерности мы уменьшаем размерность данных с помощью % дисперсии, необходимой для построения разумных моделей машинного обучения.

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

В приведенной выше таблице показано количество основных компонентов и дисперсия каждого из них. Вы можете полностью пренебречь двумя последними и быть довольным 94% дисперсии, или вы можете пренебречь последним 1 и получить 98% дисперсии по модели. В обоих случаях вы уменьшаете размеры. Но здесь мы не за «уменьшение размерности», мы здесь за «уменьшение мультиколлинеарности». Таким образом, пока давайте оставим все компоненты как есть и запустим модель VIF, чтобы проверить оценку VIF для каждого из этих компонентов.

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

Заключительные слова

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

Сноска

Я написал множество статей на Quora и Medium. Есть статьи, лежащие в черновиках и ожидающие, когда я закончу и опубликую. Следуйте за мной на Medium, а также на Linkedin, чтобы оставаться на связи со мной. Увидимся. :)

Кредиты там, где это необходимо -

https://www.instagram.com/p/ChpUW7cKjKS/