Главная
#Математика и ML #Data Science #Time Series

Что такое Survival analysis в Data Science и когда важнее время до события в 2026 году?

Survival analysis — это раздел анализа данных, который становится необходимым в тот момент, когда нас интересует не только сам факт события, но и время до его наступления. Для студента Data Science это очень важный сдвиг мышления. Пока мы задаём бинарный вопрос “уйдёт клиент или нет?”, “сломается устройство или нет?”, “доживёт пациент до конца окна или нет?”, мы теряем одну из самых содержательных координат — время.

Содержание
  1. Почему бинарной классификации здесь часто недостаточно
  2. Первая ключевая идея: survival function
  3. Что такое hazard и почему он отличается от probability
  4. Почему цензурирование делает survival analysis особенной
  5. Kaplan-Meier: как строят survival curve без сильной параметрической модели
  6. Геометрический смысл survival curve
  7. Где здесь связь с Machine Learning
  8. Когда survival analysis лучше, чем обычный churn-классификатор
  9. Какие ошибки здесь делают чаще всего
  10. Python: минимальный пример Kaplan-Meier для времени до оттока
  11. Что важно вынести из темы
  12. Kaggle notebook по теме:

Именно время делает задачу богаче и честнее. Два клиента могут оба уйти, но один — через три дня, а другой — через восемь месяцев. Два устройства могут оба выйти из строя, но одно ломается почти сразу, а другое держится весь гарантийный период. В бинарной классификации эти случаи могут попасть в один класс. В survival analysis они уже кардинально различаются.

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

В 2026 году это особенно важно, потому что всё больше прикладных задач живут в логике time-to-event: churn, дефолт, отказ оборудования, time-to-conversion, time-to-failure, время до повторной покупки, время до отмены подписки, время до выздоровления или осложнения. Если мы выбрасываем временную координату, мы обедняем саму структуру задачи.

Почему бинарной классификации здесь часто недостаточно

Представьте, что мы хотим предсказывать отток подписчиков. Можно обучить модель на target “ушёл в течение 90 дней / не ушёл”. Это рабочий baseline. Но он стирает важную разницу между человеком, который уйдёт через неделю, и человеком, который уйдёт на 89-й день. Для retention-команды это не одно и то же. В первом случае нужно срочное вмешательство. Во втором — времени на реакцию гораздо больше.

Есть и другая проблема. На момент анализа часть клиентов ещё вообще не ушла. Мы не знаем, уйдут ли они позже. Если просто объявить их “не ушедшими”, мы внесём искажение. Именно здесь survival analysis оказывается сильнее. Она умеет работать с неполным знанием о будущем и не притворяется, что отсутствие события до текущей даты означает вечное отсутствие события. Такой же принцип особенно важен и на этапе проверки модели, поэтому рядом полезно посмотреть, как устроена time-based validation на временных данных.

Хабровская survival curve как вероятность дожить до более позднего момента времени

Первая ключевая идея: survival function

Центральный объект в survival analysis — функция выживания. Она отвечает на вопрос: какова вероятность того, что событие ещё не произошло к моменту времени (t)?

(S(t)=P(T > t))

Раздел математики: теория вероятностей.

Что означает каждый символ:

(S(t)) — survival function, вероятность “дожить” до момента позже (t) без события.

(T) — случайная величина времени до события.

(t) — конкретный момент времени, относительно которого мы смотрим выживание.

(P(T > t)) — вероятность того, что событие не наступит до момента (t).

Формула появляется естественно из логики time-to-event: нас интересует не просто наличие события, а вероятность того, что процесс ещё продолжается.

Численный пример: если для подписчиков сервиса оказалось, что через 30 дней активными остаются 70 процентов пользователей, то (S(30)=0.7). Если через 90 дней остаются 45 процентов, то (S(90)=0.45). Уже эта функция даёт намного более богатую картину, чем просто бинарный target ухода.

Геометрически survival function — это кривая убывания. Она всегда стартует с единицы в начале наблюдения и затем постепенно снижается по мере того, как события накапливаются. Чем круче падение в начале, тем быстрее система теряет объекты. Чем дольше кривая остаётся высокой, тем устойчивее процесс.

Хабровская визуализация hazard rate и его отличия от обычной вероятности события

Что такое hazard и почему он отличается от probability

Вторая большая идея survival analysis — это hazard rate. Это не просто “вероятность события”, а мгновенная интенсивность наступления события при условии, что объект дожил до текущего момента. Эта разница очень важна. Probability и hazard похожи на бытовом уровне, но математически отвечают на разные вопросы.

(h(t)=lim_{\De <a t\to 0}\frac{P(t \le T < t+\De <a t \mid T\ge t)}{\De <a t})

Раздел математики: теория вероятностей и математический анализ.

Что означает каждый символ:

(h(t)) — hazard function, мгновенная интенсивность события в момент (t).

(T) — время до события.

(\De <a t) — очень маленький промежуток времени.

(P(t \le T < t+\De <a t \mid T\ge t)) — вероятность того, что событие произойдет в маленьком окне сразу после (t), при условии, что объект дожил до (t).

Формула нужна, когда важно не просто “доживёт ли объект”, а насколько опасным становится текущий момент времени с точки зрения наступления события.

Численный пример: если мы анализируем отказ оборудования и видим, что после 18 месяцев эксплуатации вероятность поломки в ближайший маленький интервал резко возрастает, то hazard в этой области становится высоким. Это не значит, что всё оборудование обязательно сломается сразу. Это значит, что интенсивность риска выросла по сравнению с предыдущими периодами.

Интуитивно hazard похож на текущую “скорость приближения события”. Survival отвечает за накопленное выживание, а hazard — за локальную опасность момента. Именно поэтому в медицине, страховании, кредитном риске и predictive maintenance hazard часто оказывается более содержательным, чем просто кривая выживания.

Хабровская схема цензурирования и частично наблюдаемых траекторий в survival analysis

Почему цензурирование делает survival analysis особенной

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

Если обращаться с такими объектами как с “не случилось и не случится”, мы искажаем картину. Survival analysis устроена так, чтобы использовать эту неполную информацию честно. Она умеет сказать: “на момент окончания наблюдения событие ещё не произошло, но это не равно бесконечному выживанию”.

Хабровская визуализация оценки Kaplan Meier для построения survival curve по наблюдаемым данным

Kaplan-Meier: как строят survival curve без сильной параметрической модели

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

(\hat{S}(t)=prod_{t_i\le t}\left(1-\frac{d_i}{n_i}\right))

Раздел математики: математическая статистика и теория оценивания.

Что означает каждый символ:

(\hat{S}(t)) — оценка survival function в момент (t).

(t_i) — момент, в который произошло событие хотя бы у части объектов.

(d_i) — число событий в момент (t_i).

(n_i) — число объектов, находящихся под риском непосредственно перед моментом (t_i).

Формула возникает как последовательное перемножение вероятностей “пережить” каждый наблюдаемый шаг событий.

Численный пример: предположим, до дня (10) под риском находятся (100) клиентов и в этот день уходят (20). Тогда локальный множитель выживания равен (1-\frac{20}{100}=0.8). Если на следующем событии под риском осталось (60) клиентов и ушли (6), следующий множитель равен (1-\frac{6}{60}=0.9). Тогда текущая survival-оценка уже будет (0.8\cdot0.9=0.72).

В Machine Learning эта оценка полезна как baseline-описание времени до события. Она помогает увидеть форму риска ещё до того, как мы начнём строить более сложную предиктивную модель.

Геометрический смысл survival curve

Survival curve геометрически читается как траектория оставшейся массы объектов. Если кривая падает резко в начале, значит большинство событий происходит рано. Если она долго остаётся почти горизонтальной, значит система стабильна на ранних этапах. Иногда две группы имеют похожий общий уровень события, но разные формы кривой: одна теряет объекты почти сразу, другая — позже. Именно эта разница и делает survival analysis сильнее простой классификации.

Это особенно важно в продукте. Например, два канала привлечения могут иметь одинаковую долю оттока за 90 дней, но один теряет людей в первую неделю, а другой — ближе к концу квартала. Для бизнеса это разные механики и разные действия. Без survival-логики они выглядят одинаково. По этой же причине survival-подход особенно хорошо дополняет задачи churn prediction и помогает точнее понять, когда риск действительно требует вмешательства.

Где здесь связь с Machine Learning

Survival analysis важна не только как классическая статистика, но и как часть современного ML-мышления. Она нужна, когда хочется прогнозировать не просто класс, а распределение времени до события. Это встречается в churn, time-to-default, maintenance, медицинских сценариях, в подписках, логистике и даже в рекомендательных системах, если интересен момент следующего действия. В продуктовой аналитике такая логика особенно хорошо сочетается с тем, как мы считаем удержание по группам и жизненную ценность клиента, поэтому рядом полезно посмотреть и cohort analysis, и LTV-модели.

Многие прикладные модели можно воспринимать как hybrid: часть логики берётся из survival analysis, а часть — из ML-подходов к признакам, нелинейности и регуляризации. Поэтому survival analysis сегодня — это не музейная статистика, а очень живая прикладная область.

Когда survival analysis лучше, чем обычный churn-классификатор

Если вам важно просто понять, уйдёт ли клиент в фиксированном окне, классификация может быть достаточной. Но если важен timing, если есть правое цензурирование, если окно наблюдения у клиентов разное, если необходимо учитывать частично наблюдаемые истории, survival analysis почти всегда даёт более честную постановку. Она не превращает все траектории в грубый бинарный ответ и лучше работает с неполным будущим.

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

Какие ошибки здесь делают чаще всего

Первая ошибка — игнорировать цензурирование и обращаться с незавершёнными наблюдениями как с полноценными отрицательными примерами. Вторая — путать survival probability и hazard. Третья — строить сравнение групп без выравнивания по времени наблюдения. Четвёртая — использовать time-to-event задачу там, где событие определено плохо и само по себе нестабильно.

Есть и более тонкая ошибка: пытаться применять survival analysis только потому, что она “сложнее и умнее”. Она нужна не всегда. Если время до события не несёт отдельного смысла и всех устраивает фиксированное окно бинарной классификации, survival analysis может быть избыточной. Её сила проявляется именно тогда, когда временная координата содержательна.

Python: минимальный пример Kaplan-Meier для времени до оттока

import pandas as pd  # Подключаем pandas для работы с таблицей.
from lifelines import KaplanMeierFitter  # Импортируем Kaplan-Meier оцениватель из lifelines.

df = pd.read_csv("survival_data.csv")  # Загружаем таблицу с временами до события.

durations = df["time_to_event"]  # Берем время до события или до конца наблюдения.
events = df["event_observed"]  # Берем индикатор: 1 если событие произошло, 0 если наблюдение цензурировано.

kmf = KaplanMeierFitter()  # Создаем объект Kaplan-Meier модели.
kmf.fit(durations=durations, event_observed=events)  # Обучаем оценку кривой выживания на данных.

print("Survival probabilities:")  # Печатаем заголовок для survival function.
print(kmf.survival_function_.head())  # Смотрим первые значения оцененной survival curve.

median_survival = kmf.median_survival_time_  # Получаем медианное время до события.
print("Median survival time:", median_survival)  # Печатаем медианное время жизни объекта.

survival_at_30 = kmf.predict(30)  # Оцениваем вероятность дожить дольше 30 единиц времени.
print("Survival at t=30:", survival_at_30)  # Печатаем выживание на фиксированном горизонте.

Этот пример хорош тем, что показывает самую важную структуру задачи: отдельно передается время до события и отдельно индикатор того, произошло событие или наблюдение просто завершилось. Именно это и делает survival analysis особой по сравнению с обычной классификацией.

Что важно вынести из темы

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

Если сформулировать совсем коротко, survival analysis учит нас задавать более зрелый вопрос: не просто “случится ли событие?”, а “когда оно с наибольшей вероятностью случится и как меняется риск во времени?”. Для современного Data Science это не узкая ниша, а очень важный способ мыслить о процессах, которые развиваются во времени. А если после оценки времени до события нужно уже проверять стратегию действий на исторической траектории, следующим естественным шагом становится backtesting на прошлых периодах.

Kaggle notebook по теме:

https://www.kaggle.com/code/lberder/survival-analysis-why-did-some-survive-longer/notebook

Что читать дальше

Связанные статьи по этой теме

Инструменты Python в 2026 году: современный стек для профессиональной разработки Что должен знать Junior Data Scientist в 2026 году? Как собрать GitHub-портфолио для Data Science
Вернуться в блог