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

На момент написания статьи (7 февраля 2021 г.) Великобритания находится под еще одной национальной изоляцией, и похоже, что наш лучший шанс выбраться из нее - это вакцинировать всех, кто относится к уязвимой категории, что составляет примерно 15 миллионов. Общее количество прививок на сегодняшний день составляет около 11 миллионов, так когда же мы достигнем волшебных 15? В этой статье мы попытаемся использовать гауссовский процесс для моделирования суточных доз и попытаться оценить, когда изоляция может закончиться ...

Данные

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

Моделирование

Поскольку мы хотим делать прогнозы на будущее, используя небольшой объем данных, особенно важно обеспечить неопределенность наших прогнозов. Модель гауссовского процесса (GP) очень хорошо подходит для такого рода задач регрессии.

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

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

Апостериорное прогнозирующее распределение является функцией шума, данных и функции ядра. Я понимаю, что здесь я пропустил много теории, Бишоп [1] предлагает действительно хорошее объяснение деталей. Главное, что я хотел изучить в этой статье, - это то, как хороший дизайн ядра (k(x_i,x_j)) может повлиять на производительность модели.

Есть несколько различных пакетов Python, доступных для врачей общей практики, но для простоты я решил использовать реализацию Sklearns.

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

kernel = RBF(length_scale=5) + \ 
         WhiteKernel(noise_level=0.5) + \
         ConstantKernel()

GP с ядром RBF - это универсальная аппроксимация функции, которая позволяет согласовывать произвольные кривые с данными. Он управляется параметром шкалы длины, который определяет, насколько быстро может измениться сигнал. Большие масштабы длины приводят к более медленному изменению кривых.

Белое ядро ​​позволяет моделировать независимый и одинаково распределенный (iid) шум, а постоянное ядро ​​допускает ненулевое среднее.

Если мы подойдем к этой модели, мы получим следующее:

Это ядро ​​явно способно изучать тенденции данных в рамках поддержки обучающих данных. За пределами этой области поддержки лучшее, что может сделать ядро, - это оценить среднее значение обучения.

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

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

Это выглядит немного лучше, но такой линейный рост весьма оптимистичен ... Я считаю маловероятным, что мы сможем вакцинировать 1 млн человек в день после 28 февраля! Так что мы можем немного смягчить это, используя DotProduct() ** 0.5.

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

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

Легко видеть, что эта функция ядра сводится к минимуму, когда расстояние между x_i и x_j равно 0 или Np. Это позволяет нам моделировать периодические функции, подобные нашей!

Теперь мы можем довольно хорошо смоделировать периодичность!

Моделирование кумулятивного числа вакцинаций

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

Напомним, наша модель была обучена на данных за 14 дней (с 11 по 25 января), и мы прогнозируем значения на месяц в будущем. Если мы посмотрим на прогноз модели от 5 февраля, он предсказал среднее значение 11,09 млн вакцин в целом по сравнению с фактическим значением 11,47, что является ошибкой всего 3% при прогнозировании на 10 дней вперед! Если вы спросите меня, это неплохо для нескольких часов моделирования!

Когда мы достигнем волшебных 15M?

Наша модель, которая была обучена в первые 14 дней, предсказывала, что мы достигнем 15 миллионов кумулятивных первых доз между 9 и 26 февраля с достоверностью 95%. Если мы переобучаем модель на всех доступных данных, мы можем немного уменьшить неопределенность, чтобы она находилась между 11-м и 19-м с достоверностью 95%.

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

Что мы узнали?

Надеюсь, эта статья показала, насколько легко запустить и запустить модель GP, как настроить / спроектировать функцию ядра, используя предварительную информацию о проблеме, и как использовать эту модель, чтобы делать прогнозы со встроенной неопределенностью!

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

Отказ от ответственности: эта статья была подготовлена ​​Александром Бейли в его личном качестве. Мнения и модели в этой статье принадлежат авторам и не отражают точку зрения моего работодателя или правительства Великобритании.

использованная литература

[1] BISHOP, C., 2016. РАСПОЗНАВАНИЕ ОБРАЗЦА И МАШИННОЕ ОБУЧЕНИЕ. СПРИНГЕР-ВЕРЛАГ НЬЮ-ЙОРК, стр.303.