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

Очень эффективны в этой области методы машинного обучения. Но есть одна проблема со многими решениями. Все они предсказывают неправильную переменную.

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

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

Для анализа выживания целевая переменная распределяется в соответствии с геометрическим распределением,

и поэтому именно параметр этого распределения, который оказывается искомой условной вероятностью, нам нужно вывести из данных. Это требует пользовательской функции стоимости (или пользовательской меры примесей для древовидных моделей). В простейшем случае он очень похож на регрессионный анализ пропорциональных рисков Кокса, за исключением того, что мы будем использовать сигмовидную функцию вместо экспоненциальной, чтобы гарантировать, что вероятность всегда находится между 0 и 1. Подход продемонстрирован в двух блокнотах: с использованием skikit-learn здесь и с помощью TensorFlow здесь.