Цепи Маркова простыми словами

Карьерник — квиз-тренажёр в Telegram с 1500+ вопросами для собесов аналитика. SQL, Python, A/B, метрики. Бесплатно.

Зачем это знать

Journey пользователя, attribution моделирование, churn prediction на основе состояний — всё это можно моделировать цепями Маркова. В MarTech и web-аналитике Markov chains — рабочий инструмент.

На собесах в FAANG / топовых компаниях могут спросить: «как бы вы моделировали attribution пути пользователя?» — Markov chains один из лучших ответов.

Короткое объяснение

Цепь Маркова — система состояний с вероятностями переходов между ними. Ключевое свойство: будущее зависит только от текущего состояния, а не от истории. Memoryless.

Пример

Пользователь на сайте: состояния Home, Catalog, Product, Checkout, Exit.

Переходы (с какой вероятностью из Home идут куда):

  • Home → Catalog: 0.6
  • Home → Product: 0.1
  • Home → Exit: 0.3

Сумма по каждому состоянию = 1.

Матрица переходов

         Home   Catalog  Product  Checkout  Exit
Home     0.0    0.6      0.1      0.0       0.3
Catalog  0.1    0.0      0.7      0.0       0.2
Product  0.05   0.1      0.0      0.6       0.25
Checkout 0.0    0.0      0.0      0.0       1.0 (absorbing)
Exit     0.0    0.0      0.0      0.0       1.0 (absorbing)

Checkout и Exit — absorbing states (не выходят).

Markov property

P(Xt+1 | X1, X2, ..., Xt) = P(Xt+1 | Xt)

Где бы user ни был раньше — следующий шаг определяется только текущим состоянием.

Это сильное допущение. В реальности часто нарушается (память есть).

Стационарное распределение

При большом N user «оседает» в распределении состояний. Это steady state.

Вычисляется через eigenvectors матрицы.

Использование: долгосрочные пропорции времени в каждом состоянии.

Использование

Attribution

Маркетинговые каналы как состояния. Конверсия — absorbing state.

Removal effect: убрать канал из матрицы → насколько упадёт conversion? Это его contribution.

Churn prediction

Пользователь в состояниях: Active, Inactive, Returning, Churned (absorbing).

Вероятность churn за N периодов рассчитывается из матрицы.

Recommendation

Next state prediction: «если сейчас смотрит X, что следующее?».

NLP

Текст как цепь слов. «Почему после "the" чаще встречается noun».

В Python

import numpy as np

# Матрица переходов
P = np.array([
    [0.0, 0.6, 0.1, 0.0, 0.3],
    [0.1, 0.0, 0.7, 0.0, 0.2],
    [0.05, 0.1, 0.0, 0.6, 0.25],
    [0.0, 0.0, 0.0, 1.0, 0.0],
    [0.0, 0.0, 0.0, 0.0, 1.0]
])

# Через 2 шага
P2 = P @ P  # matrix multiplication

# Стартовое состояние: Home
start = np.array([1, 0, 0, 0, 0])

# Распределение после 5 шагов
dist = start @ np.linalg.matrix_power(P, 5)

Higher-order chains

Если Markov property нарушено (память важна) — используют n-th order chains, где next зависит от последних n состояний.

На практике редко — увеличивает parameters, требует больше данных.

Hidden Markov Models

Расширение: true состояния скрыты, видны только наблюдения. Applied в speech recognition, bioinformatics.

На собесе

«Что такое Markov chain?» Система состояний с вероятностями перехода, memoryless.

«Где используется в аналитике?» Attribution, churn, next-state prediction.

«Memoryless — это что?» Будущее зависит только от текущего состояния.

«Как найти стационарное распределение?» Eigenvector матрицы переходов с eigenvalue = 1.

Частые ошибки

Memoryless — сильное допущение

В реальности часто пользователи имеют «память» (если посещали catalog 5 раз — больше шанс купить). Простая Markov chain это игнорирует.

Sparsity

Если мало данных — оценки переходов шумные. Нужно regularization.

Absorbing states

Checkout и Exit — absorbing. Если забыть — модель не сойдётся.

Связанные темы

FAQ

Как отличить от другой модели?

Markov chain — дискретные состояния + переходы. Regression — continuous.

Для больших state spaces?

Трудно оценить все вероятности. Используются approximations или neural network.

В Python библиотеки?

pomegranate, hmmlearn, или вручную через numpy.


Тренируйте статистику — откройте тренажёр с 1500+ вопросами для собесов.