Как использовать бутстрап для тестов или доверительных интервалов и почему это работает

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

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

В науке о данных статистические выводы обычно возникают при A/B-тестировании или когда модели используются для аналитики. Люди, не занимающиеся статистикой, часто испытывают затруднения, когда дело доходит до тестирования и выводов. И, честно говоря, я (как статистик) тоже иногда борюсь.

Когда нам нужно провести тест на практике, мы определяем гипотезу, которую хотим проверить, и, скорее всего, начинаем гуглить, чтобы определить правильную тестовую статистику и распределение для использования. Если у нас много данных, это обычно не проблема, особенно если мы хотим проверить что-то простое, например, гипотезу о среднем значении результата нашего A/B-теста или коэффициента в модели линейной регрессии. Тогда это сделает старый добрый t-тест.

Но что, если набор данных мал и не имеет нормального распределения? Все ли предположения соответствующего теста выполнены? Что, если гипотеза, которую мы хотим проверить, является нелинейной функцией признаков модели? Или если мы хотим проверить гипотезу о соотношении двух KPI, измеренных в тесте? Статистика быстро становится очень сложной. Здесь на помощь приходит Bootstrap.

На рисунке выше мы видим пример ситуации, когда нормальный t-критерий достигает своего предела. 50 наблюдений в выборке слева взяты из экспоненциального распределения, возведены в квадрат и затем центрированы. Справа можно увидеть, что произойдет, если мы захотим использовать t-критерий для (истинной) нулевой гипотезы о том, что выборка получена из распределения с нулевым средним значением. На гистограмме показано распределение, которое получается, если тестовая статистика фактически рассчитана для 5000 смоделированных примеров, построенных таким же образом. Наложенная плотность - это плотность асимптотического нормального распределения t-критерия.

Ясно, что нормальное распределение в данном случае является очень плохим приближением к истинному распределению. Так что выводы, которые мы сделали бы, если бы использовали обычный t-критерий в данном случае, были бы неверны.

Как работает Bootstrap

Bootstrap позволяет очень легко определить распределение статистики T — например, рейтинг кликов (CTR) в тесте A/B — с помощью процедуры, похожей на моделирование. Процедура следующая:

  1. Нарисуйте образец того же размера, что и ваши данные, из ваших данных. Нарисуйте с заменой, чтобы некоторые исходные точки данных могли отсутствовать, а некоторые могли быть в образце несколько раз. Этот образец называется образец начальной загрузки.
  2. Рассчитайте интересующую вас сумму T* на основе образца начальной загрузки и сохраните результат.
  3. Повторите два предыдущих шага m раз.
  4. Используйте сохраненные значения T*₁,…,T*ₘ из предыдущих шагов, чтобы рассчитать свойства интересующего вас распределения — будь то p-значения или квантили для доверительных интервалов.

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

Чтобы рассчитать доверительные интервалы вокруг выбранной статистики, можно просто использовать соответствующие квантили из наблюдаемого распределения T*₁,…,T*ₘ.

При проверке гипотез нужно быть немного осторожным, потому что статистика начальной загрузки T* сосредоточена вокруг статистики T из исходной выборки, а не вокруг ожидаемого значения этого теста. статистика. Математически мы пишем E[T*ₘ]=T ≠ E[T]. Поэтому, если мы хотим проверить, значительно ли T отличается от нуля, критические значения или p-значения должны быть получены из распределения T*ₘ-T.

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

Что нужно знать, чтобы понять Bootstrap

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

Оказывается, на самом деле удивительно просто понять статистическую причину, по которой работает Bootstrap. Вам просто нужно четкое понимание двух вещей:

1. Статистическое тестирование

Первое, что вам нужно для понимания Bootstrap, — это четкое понимание статистических тестов. Когда мы проводим тест, у нас есть образец и некоторая гипотеза о нем. Данные в нашей выборке x₁, …,xₙ взяты из некоторого распределения, которое обычно неизвестно. Затем мы вычисляем некоторую тестовую статистику T(x₁,…,xₙ), которая является просто некоторой функцией наших данных. Поскольку мы не знаем распределения нашей выборки, мы также не можем знать распределение Fₙ для T.
Чтобы преодолеть это, статистики должны построить T таким образом, чтобы они знали, какое распределение F оно имело бы, если бы у нас было бесконечное количество данных и нулевая гипотеза была бы верна. Если нулевая гипотеза ложна, T должно расходиться до значения, которое крайне маловероятно при асимптотическом распределении F.
Затем мы вычисляем T и сравните его с F, игнорируя тот факт, что фактическая выборка конечна. Если выборка достаточно велика, это разумное приближение. Если она маленькая, результат может быть очень неправильным.
В приведенном выше примере t-критерия асимптотическое распределение F является нормальным распределением, но распределение Fₙ тестовой статистики на конечном количестве данных показанный на гистограмме справа, сильно отличается.

2. Эмпирические кумулятивные функции распределения

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

Когда мы думаем о статистических распределениях, мы обычно склонны думать о функции плотности f(x) — например, о знаменитой кривой нормального распределения. Другой способ описать распределение — использовать его кумулятивную функцию распределения.

F(x) = P(X ≤ x) = E[𝟙(X≤ x)]< br />
Для каждого значения x это дает нам вероятность того, что случайная величинаX, взятая из этого распределения, меньше или равна этому значению х. Для непрерывного распределения F(x) — это просто интеграл по плотности от минус бесконечности до x. Таким образом, кумулятивная функция распределения — это просто еще один способ описать распределение вероятностей.

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

Как видно из формулы, ECDF в точке x — это просто доля данных, которая меньше или равна значению x. По своей природе ECDF представляет собой ступенчатую функцию, которая остается постоянной между точками данных, которые фактически наблюдались в выборке. По мере увеличения размера n набора данных F̂(x) становится все более и более похожим на истинную кумулятивную функцию распределения F(x). .

Ключевое понимание

Что наиболее важно для Bootstrap, так это тот факт, что любая ECDF сама по себе является допустимой функцией распределения. Это распределение является дискретным, и возможные значения, которые может принимать случайная величина, совпадают с теми, которые наблюдались в исходной выборке. ECDF присваивает одинаковую вероятность 1/n каждому из этих возможных исходов.

Почему Bootstrap работает

Так почему же эта магия начальной загрузки работает? Напомним, что наша тестовая статистика T(x₁,…,xₙ) соответствует неизвестному распределению Fₙ, и мы хотим знать Fₙ для расчета доверительных интервалов, критические значения или p-значения.
Мы рассчитываем m статистику тестов T* на основе бутстреп-выборок, взятых из исходной выборки, а затем используем эмпирическое распределение F*ₙ этой тестовой статистики вместо неизвестного распределения Fₙ.

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

Следовательно, если размер выборки n достаточно велик, распределение F*ₙ тестовой статистики T* будет хорошей оценкой для Fₙ, потому что F̂(x) будет хорошей оценкой для F(x).

Почему это называется Bootstrap?

Изобретателю Bootstrap сегодня за восемьдесят. Его зовут Брэдли Эфрон, и оказывается, что он довольно забавный парень. Несколько интервью, которые он дал, полны резких цитат, шуток и забавных анекдотов. Будучи студентом, он был фактически отстранен от Стэнфорда на 6 месяцев. Он стал редактором стэнфордского юмористического журнала The Chapparal и опубликовал выпуск, который был пародией на Playboy. . Эта пародия, возможно, зашла слишком далеко для 1961 года.

Вдохновение для выбора названия «Bootstrap» для своей процедуры исходит из истории, которая гораздо больше известна в Германии и Великобритании, чем во всем остальном мире. Барон Мюнхгаузен — вымышленный немецкий дворянин 18 века, который любит рассказывать невероятные истории о своих приключениях. В одной из этих историй он застревает в болоте со своей лошадью и ему удается освободиться, вытаскивая себя и свою лошадь за волосы — или, в некоторых версиях, — за ремни ботинок.

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

Где и когда использовать бутстрап

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

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

Основным недостатком начальной загрузки является требуемый объем вычислений. Это может быть проблемой, если базовый набор данных очень велик или если объем вычислений, необходимых для создания T(x₁,…,xₙ), велик по сравнению с данными. Тем не менее, в большинстве областей, где вы можете захотеть применить Bootstrap, вычислительные ресурсы не являются ограничивающим фактором.

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

Если вам понравилась эта статья, подписывайтесь на меня в Linkedin, где я регулярно публикую статьи о статистике, науке о данных и машинном обучении. Кроме того, ознакомьтесь с некоторыми другими моими постами на Medium: