Когда выбросы значительны: взвешенная линейная регрессия
Методы взвешенной регрессии, включающие значительные выбросы
Выбросы часто бывают озорными. У них есть потенциал нарушить простой в остальном процесс регрессии, представляя себя данными, столь же важными, как и все остальное, часто искажая подобранную модель. Прямой подход заключается в использовании методов обнаружения выбросов для их удаления из набора данных перед подгонкой модели. Но в этом есть свои оговорки. Иногда выбросы могут быть значительными и необходимы для построения модели, которая соответствует данным, чтобы она представляла все наблюдения/измерения. Однако это приводит прямо к проблеме выбросов, искажающих подобранную модель. Итак, что можно сделать, чтобы решить эту проблему? Как вы уже догадались, взвешенная регрессия!
Взвешенная регрессия определяется как обобщение линейной регрессии, в котором ковариационная матрица ошибок включена в модель». Проще говоря, это означает, что не все точки данных равны в глазах специалиста по данным, и это неравенство также должно отражаться в подобранной модели. Дисбаланс равенства при подгонке набора данных к регрессионной модели можно устранить с помощью нескольких методов. Эти методы варьируются от: вставки нового двоичного столбца, который помечает выбросы, до присвоения каждой точке данных собственного веса важности по отношению к остальной части набора данных.
Искусство взвешивания данных часто может быть неоднозначным. Какие данные важнее других? Почему это? И какой вес важности он должен получить? Все хорошие вопросы, которые должен задать специалист по данным, пытаясь применить этот метод. Простым подходом было бы использование модели надежной регрессии с выбросами, такой как регрессор Хубера, чтобы добиться цели. Однако для взвешивания данных существует множество более совершенных методов, некоторые из которых используют предварительное знание самих данных, а другие - применяют более сложные статистические методы. В этой статье основное внимание будет уделено взвешиванию данных перед регрессией с использованием как методов обнаружения выбросов, так и методов пороговой обработки.
Для начала давайте загрузим и подготовим данные, которые мы будем использовать, чтобы соответствовать нашей регрессионной модели. Набор данных советы представляет собой пример набора данных, доступный в библиотеке Seaborn из их онлайн-репозитория. Этот набор данных является частью коллекции тематических исследований для бизнес-статистики [1]. Он состоит из 244 чаевых, сделанных одним официантом в ресторане в течение нескольких месяцев. В наборе данных есть 6 исследовательских переменных (X) и «подсказки», являющиеся переменной ответа (y). Помимо переменной «общий счет», остальные исследовательские переменные являются категориальными. Чтобы использовать эти категориальные переменные для регрессии, набор данных требует некоторой подготовки. Необходимо создать фиктивные переменные (представляющие наличие или отсутствие качественного атрибута) для категориальных переменных. В то же время давайте посмотрим, как распределяется набор данных.
Теперь у нас есть 8 исследовательских переменных, которые мы можем использовать для регрессии. И из того, что мы видим на графике распределения, при использовании одной переменной «общий счет» существует видимая линейная зависимость между ней и «чаевыми». Однако кое-что интересное происходит примерно на отметке 25 «общий счет», данные больше не следуют той же линейной зависимости, что и раньше. Можно сказать, что для моделирования этого набора данных необходимы две или даже три возможные линейные модели. Тем не менее, в этой статье основное внимание уделяется единственной взвешенной регрессионной подгонке, а не кусочному моделированию. Судя по тому, что мы можем наблюдать, кажется, что обеды в субботу и воскресенье больше всего отклоняются от линейности «общего счета» к линейности «чаевых». И поскольку мы хотим подогнать к данным единую линейную модель, эти точки данных, возможно, потребуется взвесить иначе, чем остальные, чтобы не искажать прогнозируемые результаты. Перед этим давайте создадим базовую модель регрессии, с которой мы сможем сравнить наши регрессионные модели с разным весом.
Без взвешивания исследовательских переменных мы получаем линейную модель с показателем R-квадрата 0,4699 и среднеквадратичной ошибкой 1,011. Как упоминалось выше во время быстрого анализа данных, одна линейная модель слишком упрощена для этого набора данных. Но мы продолжим идти по этому пути и посмотрим, что можно сделать, добавив веса в регрессионную модель.
Сначала поговорим о том, какие типы взвешивания можно использовать в регрессионном моделировании.
- Непрерывное взвешивание: каждая переменная имеет уникальный вес, связанный с ней, который соответствует некоторой функции распределения вероятностей (например, распределению Гаусса).
- Дискретные весовые коэффициенты. Определенным переменным или диапазону переменных присваиваются дискретные весовые коэффициенты на основе определенных условий (например, вкраплений/выбросов).
- Кусочно-непрерывные взвешивания: сочетание непрерывных и дискретных взвешиваний.
Перед дальнейшим объяснением и демонстрацией применения каждого метода взвешивания в регрессии. Возможно, было бы лучше сначала визуализировать эти веса. Для этого будут использоваться примеры функций, в которых ось абсцисс соответствует нормализованным (0–1) оценкам выбросов. Эти оценки представляют собой оценку вероятности того, что значение является выбросом по сравнению с остальной частью набора данных. Следовательно, чем выше оценка решения, тем больше вероятность того, что это выброс. Однако я не буду углубляться в оценку правдоподобия и ее математическое применение во взвешенной регрессии, а скорее посоветую вам прочитать Взвешенная линейная регрессия, если вы хотите узнать больше об этом. На нашей оси Y у нас будут наши веса. Итак, давайте визуализируем это!
Хотя это была отличная визуализация, что все это значит, как вы сгенерировали эти весовые функции и как мы можем применить это к регрессии? Из того, что мы видим выше, у нас есть довольно много вариантов взвешивания на выбор. Итак, начнем с непрерывного типа взвешивания. Мы будем использовать функцию Гаусса в качестве весов для взвешенной регрессии в наборе данных tips. Для этого нам сначала нужно найти выбросы для набора данных. Это будет сделано с помощью метода обнаружения выбросов оценки плотности ядра (KDE), доступного в PyOD.
Используя непрерывную весовую функцию, мы получаем линейную модель с показателем R-квадрата 0,4582 и среднеквадратичной ошибкой 1,033. Вы можете заметить, что эта производительность хуже, чем у линейной модели без взвешивания! Так почему же лучше использовать регрессионную модель с худшим показателем R-квадрата? Мы просто зря потратили время? И чего мы достигли, используя веса в регрессионной модели? Ответ прост: этого и следовало ожидать…
Чтобы объяснить это более широко, несмотря на то, что общая производительность модели действительно снизилась, цель взвешивания данных заключалась в том, чтобы придать большее значение данным, которые с большей вероятностью возникнут/будут измерены. Таким образом, позволяя выбросам, которые все еще значительны в данных, вносить свой вклад в модель, но имеют лишь незначительное значение для самой модели в целом. И поэтому более низкая производительность модели не является признаком плохой подгонки. Скорее, это указывает на то, что, возможно, теперь следует изменить способ измерения производительности нашей модели.
Что ж, это все красиво и модно, но как теперь можно точно оценить производительность нашей взвешенной модели? Чтобы сделать это, это фактически приводит нас ко второму типу взвешивания. Дискретное взвешивание. Позволь мне объяснить. Так как веса дискретны, а для нашего примера случая бинарны. Это означает, что проводится четкое различие между выбросами и выбросами. Благодаря этому различию из исходного возникает новый набор данных, с которым можно лучше оценить показатели производительности нашей модели. Inliers.
Для этого мы оценим баллы за выбросы, используя PyThresh(библиотека для пороговых оценок за выбросы) и проект, в котором я открыто участвую. Итак, давайте применим дискретное взвешивание к модели взвешенной регрессии.
Используя дискретную весовую функцию, мы получаем линейную модель с показателем R-квадрата 0,4606 и среднеквадратичной ошибкой 1,028. Соотношение вставок составило 77,5%, а выбросов - 22,5%. Если мы теперь сравним взвешенные модели с базовой моделью только с учетом вставок, мы получим следующее:
- Исходный уровень: R-квадрат = 0,3814 и среднеквадратическая ошибка = 0,5910.
- Непрерывное взвешивание: R-квадрат = 0,3925 и среднеквадратическая ошибка = 0,580.
- Дискретное взвешивание: R-квадрат = 0,3966 и среднеквадратическая ошибка = 0,5763.
Из этого мы видим, что с точки зрения подбора всего набора данных невзвешенная модель по-прежнему работает лучше всего. Однако, что касается вкладышей, он показал худшие результаты. Это означает, что, хотя невзвешенная модель в целом работала лучше, теперь она, возможно, смещена в сторону выбросов, что снижает точность ее прогнозирования в отношении выбросов.
Однако этот вывод следует воспринимать с долей скептицизма. Поскольку мы, в конце концов, специалисты по данным, и скептически относимся к нашей собственной предвзятости в отношении интерпретируемости модели, это также важно. Из показателей производительности видно, что взвешивание набора данных может устранить систематическую ошибку выброса. Однако, повторяю, одна линейная модель и, возможно, даже метод обнаружения выбросов не совсем подходят для этого набора данных. Итак, что было достигнуто в результате этого упражнения? Что ж, мы видели, что существенные выбросы могут быть включены в регрессионную модель, не делая их столь же важными, как выбросы. И что, несмотря на то, что они вносят свой вклад в окончательную подгонку модели, будучи значительными и все такое, их важность в отношении прогнозов была соответствующим образом скорректирована.
Применение правильных весов для ваших данных во время регрессии становится таким же важным, как и сам набор данных. Трудно сказать с абсолютной уверенностью, что существует идеальный набор весов для ваших данных, но мы надеемся, что приведенные выше примеры немного облегчат эту задачу при попытке включить выбросы. Следует помнить о последствиях того, что выбросы остаются во время подбора, и всегда выбирать ответ, который лучше всего представляет наши данные. Взвешенная регрессия — один из многих способов добиться этого, и ее использование — ценный актив.
Я не буду приводить пример кусочно-непрерывного взвешивания, как в приведенных выше примерах непрерывного и дискретного взвешивания, надеюсь, это будет легко реализовать, используя их вместе.
В заключение я надеюсь, что это поможет вашим навыкам работы с данными и станет мощным инструментом, помогающим справляться со значительными выбросами. Всего наилучшего в ваших начинаниях в мире данных!
[1] Брайант, П. Г. и Смит, М. (1995) Практический анализ данных: тематические исследования в бизнес-статистике. Хомвуд, Иллинойс: Издательство Ричарда Д. Ирвина