Работа с выбросами с использованием трех надежных моделей линейной регрессии

С практическим примером использования алгоритмов регрессии Huber, RANSAC и Theil-Sen

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

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

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

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

Настраивать

Мы используем достаточно стандартные библиотеки: numpy, pandas, scikit-learn. Все модели, с которыми мы здесь работаем, импортированы из модуля linear_model модуля scikit-learn.

Данные

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

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

Затем мы заменяем первые 25 наблюдений (5% наблюдений) выбросами, далеко за пределами массы сгенерированных наблюдений. Имейте в виду, что коэффициент, сохраненный ранее, получен из данных без выбросов. Включение их имеет значение.

Линейная регрессия

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

lr = LinearRegression().fit(X, y)
coef_list.append(["linear_regression", lr.coef_[0]])

Затем мы подготавливаем объект, который будем использовать для построения подгонки моделей. Объект plotline_X представляет собой двумерный массив, содержащий равномерно распределенные значения в пределах интервала, заданного сгенерированным набором данных. Мы используем этот объект для получения подогнанных значений для моделей. Это должен быть 2D-массив, учитывая, что это ожидаемый ввод моделей в scikit-learn. Затем мы создаем fit_df DataFrame, в котором мы храним подобранные значения, созданные путем подгонки моделей к равномерно расположенным значениям.

Подготовив DataFrame, мы наносим модель линейной регрессии на данные с выбросами.

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

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

Регрессия Хубера

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

Где σ обозначает стандартное отклонение, X_i представляет набор признаков, y_i — целевая переменная регрессии, ω — вектор оценочных коэффициентов, а α — параметр регуляризации. Формула также указывает, что выбросы обрабатываются иначе, чем обычные наблюдения в соответствии с потерями Хубера:

Потеря Хьюбера идентифицирует выбросы, рассматривая остатки, обозначенные z. Если наблюдение считается регулярным (поскольку абсолютное значение невязки меньше некоторого порога 𝜖), то мы применяем функцию квадрата потерь. В противном случае наблюдение считается выбросом, и мы применяем абсолютную потерю. Сказав это, потери Хубера в основном представляют собой комбинацию квадратичных и абсолютных функций потерь.

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

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

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

Мы используем значение по умолчанию 1,35 для 𝜖, которое определяет чувствительность регрессии к выбросам. Хубер (2004) показывает, что, когда ошибки следуют нормальному распределению с σ = 1, 𝜖 = 1,35, эффективность составляет 95% по сравнению с регрессией OLS. Для ваших собственных вариантов использования я рекомендую настроить гиперпараметры alpha и epsilon, используя такой метод, как поиск по сетке.

Затем мы подгоняем регрессию Хубера к данным, используя следующий пример:

На рис. 3 представлена ​​линия наилучшего соответствия подобранной модели.

регрессия RANSAC

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

RANSAC — это итерационный алгоритм, в котором итерация состоит из следующих шагов:

  1. Выберите случайное подмножество из исходного набора данных.
  2. Подбирайте модель к выбранному случайному подмножеству. По умолчанию эта модель представляет собой модель линейной регрессии; однако мы можем изменить его на другие модели регрессии.
  3. Используйте предполагаемую модель, чтобы вычислить остатки для всех точек данных в исходном наборе данных. Все наблюдения с абсолютными остатками, меньшими или равными выбранному порогу, считаются выбросами и создают так называемый консенсусный набор. По умолчанию порог определяется как среднее абсолютное отклонение (MAD) целевых значений.
  4. Подогнанная модель сохраняется как лучшая, если достаточно много точек классифицировано как часть консенсусного множества. Если текущая оценочная модель имеет то же количество вставок, что и текущая лучшая модель, она считается лучшей только в том случае, если у нее лучший результат.

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

В приведенном ниже фрагменте мы подгоняем модель регрессии RANSAC к данным.

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

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

При выполнении примера выводится следующая сводка:

Total outliers: 51
Outliers you added yourself: 25 / 25

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

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

Регрессия Тейла-Сена

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

Вот как работает алгоритм. Во-первых, он вычисляет решения методом наименьших квадратов (наклоны и точки пересечения) для подмножеств размера p (гиперпараметр n_subsamples), созданных из всех наблюдений в обучающем наборе X. Если мы вычислим точку пересечения (это необязательно) , то должно выполняться следующее условие: p >= n_features + 1. Конечный наклон линии (и, возможно, точка пересечения) определяется как (пространственная) медиана всех решений методом наименьших квадратов.

Возможным недостатком алгоритма является его вычислительная сложность, поскольку он может учитывать общее количество решений методом наименьших квадратов, равное n_samples choose n_subsamples, где n_samples — количество наблюдений в X. Учитывая, что это число может быстро увеличиться в размерах, есть несколько вещей, которые можно сделать:

  • Используйте алгоритм только для небольших задач с точки зрения количества образцов и признаков. Однако по понятным причинам это не всегда возможно.
  • Настройте гиперпараметр n_subsamples. Более низкое значение приводит к более высокой устойчивости к выбросам за счет более низкой эффективности, в то время как более высокое значение приводит к более низкой устойчивости и более высокой эффективности.
  • Используйте гиперпараметр max_subpopulation. Если общее значение n_samples choose n_subsamples больше, чем max_subpopulation, алгоритм рассматривает только стохастическую подгруппу заданного максимального размера. Естественно, использование только случайного подмножества всех возможных комбинаций приводит к тому, что алгоритм теряет часть своих математических свойств.

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

Сравнение моделей

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

Начнем с визуального осмотра рисунка 7. Чтобы не показывать слишком много строк, мы не печатали подходящую строку исходных данных. Однако довольно легко представить, как это выглядит, учитывая направление большинства точек данных. Очевидно, что регрессии RANSAC и Тейла-Сена дали наиболее точные линии наилучшего соответствия.

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

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

  • В общем, надежная подгонка в условиях большого размера затруднена.
  • В отличие от Тейла-Сена и RANSAC, регрессия Хубера не пытается полностью отфильтровать выбросы. Вместо этого это уменьшает их влияние на посадку.
  • Регрессия Хубера должна быть быстрее, чем «» RANSAC и Theil-Sen, поскольку последние подходят для меньших подмножеств данных.
  • Тейл-Сен и RANSAC вряд ли будут такими же надежными, как регрессия Хубера с использованием гиперпараметров по умолчанию.
  • RANSAC быстрее, чем Theil-Sen, и лучше масштабируется с количеством выборок.
  • RANSAC должен лучше справляться с большими выбросами в направлении Y, что является наиболее распространенным сценарием.

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

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

Понравилась статья? Станьте участником Medium, чтобы продолжить обучение, читая без ограничений. Если вы воспользуетесь этой ссылкой, чтобы стать участником, вы поддержите меня без каких-либо дополнительных затрат с вашей стороны. Заранее спасибо и до встречи!

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







Рекомендации

  • Фишлер, Массачусетс, и Боллес, Р.К. (1981). Консенсус случайной выборки: парадигма подбора модели с приложениями для анализа изображений и автоматизированной картографии. Сообщения ACM, 24(6), 381–395.
  • Питер Дж. Хубер, Эльвезио М. Ронкетти, Надежные статистические оценки сопутствующих масштабов, стр. 172
  • Хубер, П.Дж. (1992). Надежная оценка параметра местоположения. В Прорывы в статистике (стр. 492–518). Спрингер, Нью-Йорк, штат Нью-Йорк

Все изображения, если не указано иное, принадлежат автору.

Первоначально опубликовано в Блоге разработчиков NVIDIA 20 июля 2022 г.