Вы находитесь на странице: 1из 6

Горохов В.Д.

4 курс, Высшая школа кибертехнологий, математики и статистики


РЭУ им. Г.В. Плеханова
Научный руководитель: Щукина Н.А.
к.т.н., доцент,
кафедра математических методов в экономике
РЭУ им. Г.В. Плеханова

ПУАССОНОВСКИЙ БУТСТРЭП КАК МЕТОД УСКОРЕНИЯ


СТАТИСТИЧЕСКИХ ТЕСТОВ НА БОЛЬШИХ ДАННЫХ

Аннотация: статья посвящена проблеме применения статистической


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

POISSON BOOTSTRAP AS A METHOD FOR ACCELERATING


STATISTICAL TESTS ON BIG DATA

Annotation: this article is devoted to the problem of application of


bootstrapping to big and streaming data. The comparative analysis of the effectiveness
of the classic and Poisson bootstrap was conducted using the example of comparison
of click-through rates of two product advertisements published on a website on the
Internet.
Keywords: bootstrap, Poisson bootstrap, big data, streaming data, A/B testing,
marketing, advertisement.

Многие современные компании, ведущие бизнес в Интернете,


сталкиваются с проблемой проведения статистических тестов на больших
объемах данных. Часто так называемые A/B тесты проводятся в интернет-
маркетинге для сравнения оценок величины определенного параметра (метрики)
среди двух групп пользователей с целью определения наиболее эффективной
стратегии из двух рассматриваемых. Однако возникают такие ситуации, когда
данных собрано много, но для проведения статистического теста с заданной
желаемой статистической мощностью, чтобы тест улавливал необходимую
величину эффекта (разности между сравниваемыми оценками параметра),
недостаточно. В таких и многих других ситуациях на помощь приходит
статистическая процедура, называемая бутстрэпом.
Идея бутстрэпа в статистике состоит в построении эмпирического
распределения статистической оценки какого-либо параметра (метрики) 𝜃̂(𝑋),
относящегося ко всей популяции независимых одинаково распределенных
наблюдений 𝑋, по имеющейся выборке 𝑥 = {𝑥1 , … , 𝑥𝑛 }, 𝑥 ∈ 𝑋, где 𝑛 – число
наблюдений в выборке. Данный метод является непараметрическим, поскольку
не связан с допущениями о нормальном распределении значений в имеющейся
выборке или в самой популяции. Так, с помощью генератора псевдослучайных
чисел из имеющейся выборки 𝑥 размера 𝑛 можно получить 𝑅 псевдоподвыборок
𝑥𝑗∗ , 𝑗 = ̅̅̅̅̅
1, 𝑅, того же размера, где 𝑅 – произвольное достаточно большое по
величине целое число. Далее на полученном множестве подвыборок {𝑥1∗ , … , 𝑥𝑅∗ }
можно быстро оценивать требуемые статистические характеристики, а также
изучать их вероятностные распределения. В исследовании [5] описаны
различные алгоритмы генерации псевдослучайных последовательностей и
критерии их качества. Показано, что сложность алгоритма генерации
псевдослучайных чисел не влияет на качество полученной
псевдопоследовательности. Процедура классического бутстрэпа на каждой ее
итерации 𝑗 = ̅̅̅̅̅
1, 𝑅 сводится к генерации вектора псевдослучайных чисел 𝑘𝑗∗ =
∗(j) ∗(j)
(𝑘1 , … , 𝑘𝑛 )𝑇 , подчиняющихся биномиальному закону распределения:
∗(𝑗) 1 1 1
𝑘𝑖 ~𝐵𝑖𝑛(𝑛, ), 𝑖 = ̅̅̅̅̅1, 𝑛. Таким образом, вектор 𝑘𝑗∗ ~𝑀𝑢𝑙𝑡(𝑛, , … , ) –
𝑛 𝑛 𝑛
многомерная случайная величина, распределенная по мультиномиальному
закону, причем
∑𝑛𝑖=1 𝑘𝑖∗(𝑗) = 𝑛, (1)

то есть сумма элементов вектора 𝑘𝑗 всегда фиксирована [6]. Элементы вектора
𝑘𝑗∗ используются в качестве весов для включения соответствующих наблюдений
𝑥𝑖 , 𝑖 = ̅̅̅̅̅
1, 𝑛, в подвыборку 𝑥𝑗∗ , то есть представляют собой число появлений
каждого наблюдения 𝑥𝑖 в подвыборке 𝑥𝑗∗ . Более подробно идея бутстрэпа
описана в работе Б. Эфрона [1].
Несмотря на преимущества, которыми обладает классический бутстрэп,
данный метод также имеет и недостатки. Во-первых, необходимо знать 𝑛 – число
наблюдений, то есть иметь конечную выборку 𝑥. В случаях, когда речь идет о
потоковых входных данных, 𝑛 заранее не известно. Во-вторых, если речь идет о
больших данных, процедура становится вычислительно трудоемкой, поскольку
для получения очередной псевдоподвыборки на каждой итерации процедуры
необходимо выделять память компьютера сразу для всех имеющихся
наблюдений [2]. При попытке решить проблему нехватки памяти путем
обработки отдельных наблюдений или их групп параллельно на нескольких
вычислительных машинах следующей проблемой становится нарушение
∗(𝑗)
условия (1), поскольку веса 𝑘𝑖 в таком случае вычисляются независимо [6].
Для преодоления описанных выше трудностей, возникающих при
применении классического бутстрэпа, в [3, с. 58] вместо генерации векторов 𝑘𝑗∗ ,
𝑗 = ̅̅̅̅̅
1, 𝑅, из мультиномиального распределения, предлагается независимо для
′(i) ′(i)
каждого наблюдения 𝑥𝑖 , 𝑖 = ̅̅̅̅̅ 1, 𝑛, получать векторы 𝑘𝑖′ = (𝑘1 , … , 𝑘𝑅 )𝑇
псевдослучайных чисел, подчиняющихся распределению Пуассона с
′(𝑖)
математическим ожиданием 𝜆 = 1: 𝑘𝑗 ~𝑃(1), 𝑗 = ̅̅̅̅̅ 1, R. Данную модификацию
классической процедуры бутстрэпа называют Пуассоновским бутстрэпом. Для
его применения не требуется знать число наблюдений 𝑛 и не требуется выделять
память сразу для всех наблюдений на каждой итерации, поскольку каждое
наблюдение рассматривается лишь единственный раз. Здесь условие (1) будет
все так же нарушаться, являясь дополнительным источником вариабельности
для получаемых в ходе процедуры Пуассоновского бутсрэпа оценок 𝜃̃ (𝑋).
Однако в [3, с. 59] показано, что
̃ (𝑋)]
𝐷[𝜃
𝑙𝑖𝑚 ̂ (𝑋)] = 0. (2)
𝑛→∞ 𝐷[𝜃
Отсюда следует, что
1
𝑙𝑖𝑚 𝐵𝑖𝑛(𝑛, ) = 𝑃(1). (3)
𝑛→∞ 𝑛
′(𝑖)
Причем ∑𝑛𝑖=1 𝑘𝑗 ≈ 𝑛 ± 2√𝑛 при 𝑛 ≥ 100, 𝑗 = ̅̅̅̅̅
1, R [6].
В качестве практического подтверждения целесообразности применения
процедуры Пуассоновского бутстрэпа рассмотрим задачу оценки эффективности
двух рекламных объявлений одного и того же товара, размещенных на
некотором веб-сайте. Второе рекламное объявление является
модифицированной версией первого. Проведем A/B-тестирование с целью
оценки эффективности внесенных изменений. Для этого разделим пользователей
на две равные по числу участников группы: контрольную (группа A) и
экспериментальную (группа В). Пользователи контрольной группы будут видеть
только первую версию рекламы, пользователи экспериментальной – только
вторую. В качестве метрики для оценки эффективности рекламы выберем
показатель кликабельности (англ. click-through rate) (далее – CTR),
представляющий собой отношение числа кликов к числу просмотров рекламы.
Будем проверять основную (нулевую) гипотезу о том, что результаты
контрольной и экспериментальной групп отличаются незначимо, то есть
различия в CTR обусловлены случайными факторами. Альтернативная гипотеза
– результаты экспериментальной группы значимо отличаются от контрольной.
Для обеспечения статистически значимых результатов тестирования выберем
уровень значимости 0,05. Определим также временные рамки проведения
эксперимента. Учитывая объем ежедневного трафика пользователей,
определяем длительность проведения эксперимента 1 месяц.
Однако предположим, что через неделю после начала эксперимента уже
необходимо знать предварительные результаты. Соберем все данные, доступные
на момент проведения эксперимента, и выполним предварительную обработку,
включающую в себя агрегирование на уровне пользователя. В результате
получаем таблицу, содержащую 74723 записи (37361 записей для пользователей
контрольной группы и 37362 записей для пользователей экспериментальной
группы) и включающую в себя четыре переменные: идентификатор пользователя
сайта – уникальное целое пятизначное число; бинарную переменную,
представляющую собой метку группы, к которой принадлежит пользователь;
число кликов, которое произвел пользователь на рекламное объявление – целое
неотрицательное число; число показов пользователю рекламного объявления –
целое неотрицательное число.
На языке программирования Python версии 3.9.7 написаны две функции.
Первая функция воспроизводит процедуру классического бутстрэпа на
основании двух переданных аргументов: начальной выборки и числа итераций
𝑅, вторая – процедуру Пуассоновского бутстрэпа также на основании двух
аргументов: источника поступающих данных и числа итераций 𝑅. Обе функции
выполняют соответствующую процедуру отдельно для контрольной и
экспериментальной группы и на каждой итерации вычисляют разность между
CTR экспериментальной группы и CTR контрольной группы, что дает
возможность получить в итоге эмпирическое распределение величины эффекта.
С помощью команды %%timeit ядра IPython измерено среднее время выполнения
этих функций по итогам 7 повторных запусков на имеющихся данных для
контрольной и экспериментальной групп. Результаты сравнения времени работы
двух функций представлены в таблице 1.

Таблица 1 – Сопоставление времени работы функций, реализующих процедуры


классического и Пуассоновского бутстрэпа

Бутстрэп Среднее время, с Станд. отклон., с


Классический 20,9 0,642
Пуассоновский 13,7 4,22
Источник: рассчитано автором
Как видно из таблицы 1, время работы функции, реализующей процедуру
Пуассоновского бутстрэпа, примерно в 2 раза меньше времени, которое
требуется для реализации процедуры классического бутстрэпа.
Далее еще раз произведен запуск обеих функций на имеющихся данных. В
качестве выходных данных каждой из функций было получено множество,
элементами которого являются разности между CTR экспериментальной и
контрольной групп (величина эффекта), рассчитанные по 𝑅 = 1000
бутстрэповских псевдоподвыборок для каждой из двух групп соответственно.
Полученные множества позволили построить эмпирические распределения,
95%-е персентильные доверительные интервалы [5], а также получить оценки
среднего значения и стандартного отклонения разности CTR (рис. 1, табл. 2).

Рисунок 1. Эмпирические распределения размера эффекта, полученные с


помощью процедур классического и Пуассоновского бутстрэпа

Источник: рассчитано автором


Таблица 2 – Статистики, рассчитанные с помощью классического и
Пуассоновсокого бутстрэпа по имеющимся данным

Доверительный
Оценка интервал Стандартная
Бутстрэп
среднего Левая Правая ошибка
граница граница
Классический 0,001205 -0,001012 0,003461 0,001157
Пуассоновский 0,001257 -0,000817 0,003509 0,001119
Источник: рассчитано автором
Как можно видеть из рисунка 1 и таблицы 2, оба метода дают практически
идентичные результаты по всем рассчитанным статистикам. Стоит заметить, что
в нашем случае величина стандартной ошибки, полученной с помощью
Пуассоновского бутстрэпа, оказалась незначительно ниже величины
стандартной ошибки, полученной с помощью классической процедуры. Этот
результат объясняется зависимостью процедур бутстрэпа от генератора
псевдослучайных чисел [3, с. 60]. Как видим, доверительный интервал для
оценки величины эффекта пересекает значение 0, что свидетельствует о
статистически незначимой разности между CTR экспериментальной и
контрольной групп. С 95%-й уверенностью можно утверждать, что эта разница
обусловлена случайностью. Следовательно, рекомендуем продолжать улучшать
рекламное объявление с целью повышения его эффективности и получения
удовлетворительного бизнес-результата.
Таким образом, при анализе большого объема данных использование
Пуассоновского бутстрэпа по сравнению с его классическим вариантом
позволяет существенно сократить время обработки данных, что
продемонстрировано на примере реализации процесса A/B-тестирования. По
результатам проведенного эксперимента можно порекомендовать компании
продолжать увеличивать результативность рекламных кампаний и развивать
конкурентное предложение.

Список литературы:

1. Efron B. Bootstrap methods: Another look at the jackknife // The Annals


of Statistics. – 1979. – Vol.7, No. 1, – pp. 1–26.
2. Fujisawa T. Bootstrap a very large data file / T. Fujisawa. – Текст:
электронный // tmfujis.wordpress.com: сайт. – 2016. [Электронный ресурс] –
Режим доступа: https://tmfujis.wordpress.com/2016/06/24/bootstrap-a-very-large-
data-file/ (дата обращения: 17.10.2022).
3. Hanley J. A., MacGibbon B. Creating non-parametric bootstrap samples
using Poisson frequencies // Computer methods and programs in Biomedicine. – 2006.
– Vol.83. – pp. 57–62.
4. Ho J. Bootstrap Confidence Intervals / J. Ho. – Текст: электронный //
acclab.github.io: сайт. – 2019. [Электронный ресурс] – Режим доступа:
https://acclab.github.io/bootstrap-confidence-intervals.html (дата обращения:
18.10.2022).
5. Knuth Donald E. The Art of Computer Programming, Volume 2:
Seminumerical Algorithms (3rd ed.). Addison-Wesley Longman Publishing Co., Inc.,
Boston, MA. 1997.
6. Najmi A. An Introduction to the Poisson Bootstrap / A. Najmi. – Текст:
электронный // Unofficial Google Data Science Blog: сайт. – 2015. [Электронный
ресурс] – Режим доступа: https://www.unofficialgoogledatascience.com/2015/08/an-
introduction-to-poisson-bootstrap26.html (дата обращения: 19.10.2022).

Вам также может понравиться