Добавить в корзинуПозвонить
Найти в Дзене
Postgres DBA

Анализ текущего состояния цепи Маркова и рекомендации по настройке адаптивного забывания

ℹ️Материал подготовлен нейросетью DeepSeek.
По данным mchain_summary_report:
Вывод:
Модель имеет достаточный объём данных и хорошо калибрована (Brier 0.04, ROC-AUC 0.955 по отчёту качества), но чрезвычайно нестабильна – вероятности переходов сильно меняются от недели к неделе. Это делает прогнозы ненадёжными с точки зрения повторяемости, что и даёт низкий рейтинг достоверности.⚠️
Оглавление

ℹ️Материал подготовлен нейросетью DeepSeek.

1. Оценка текущего состояния

По данным mchain_summary_report:

  • ⚠️Рейтинг достоверности: 1 из 5 (крайне низкая достоверность).
  • ☑️Общее число переходов: 19 689 (выше порога 5 000, т.е. данных достаточно).
  • ⚠️Максимальное изменение вероятностей за 14 дней (max_prob_change): 1.0 (максимально возможное) – это основная причина низкого рейтинга.
  • ☑️Покрытие частых состояний: 100 % – хорошее.
  • ☑️Доля аварийных переходов: в сырой истории – 41.16 %, в модели – 38.40 % – разница незначительна, модель адекватно отражает частоту.

Вывод:

Модель имеет достаточный объём данных и хорошо калибрована (Brier 0.04, ROC-AUC 0.955 по отчёту качества), но чрезвычайно нестабильна – вероятности переходов сильно меняются от недели к неделе. Это делает прогнозы ненадёжными с точки зрения повторяемости, что и даёт низкий рейтинг достоверности.⚠️

2. Анализ истории инцидентов (таблица performance_incident)

За период с 2026-06-12 по 2026-06-22 зафиксирован 61 инцидент (в среднем ≈ 6 инцидентов в день). Последний инцидент – 2026-06-22 08:58 (очень свежий).

Текущие параметры адаптивного забывания:

  • base_alpha 0.15
  • min_alpha 0.02
  • incident_half_life_days 5
  • interval_minute 60
  • adaptive_forgetting_enabled true
  • use_adaptive_alpha true
  • last_incident_time 2026-06-22 08:58

Расчёт эффективного alpha (по формуле base_alpha * exp(-days_since / half_life)):

  • Так как инциденты происходят ежедневно, days_since обычно < 1 суток, поэтому alpha ≈ base_alpha = 0.15.
  • При interval_minute = 60 забывание применяется каждый час, а коэффициент уменьшения частот за один шаг = 1 - 0.15 = 0.85. За сутки (24 шага) частоты умножаются на 0.85²⁴ ≈ 0.02, то есть данные старше суток практически полностью забываются.

ℹ️Это приводит к тому, что модель опирается только на переходы последних часов, что делает её крайне чувствительной к краткосрочным флуктуациям и объясняет max_prob_change = 1.0.

3. Рекомендации по настройке для повышения рейтинга достоверности

📋Цель – уменьшить нестабильность вероятностей (max_prob_change) за счёт более медленного забывания, чтобы модель учитывала более длительную историю и была устойчивее к шуму.

3.1. Снизить base_alpha (базовую скорость забывания)

  • Текущее: 0.15рекомендуемое: 0.03–0.05.
  • Обоснование: при частых инцидентах эффективный alpha будет равен base_alpha (так как days_since мало). Снижение до 0.05 замедлит забывание в 3 раза, что позволит сохранять данные за несколько суток, сглаживая краткосрочные колебания.

3.2. Увеличить incident_half_life_days (период полураспада веса инцидента)

  • Текущее: 5 → рекомендуемое: 10–14.
  • Обоснование: более длинный период полураспада делает alpha менее чувствительным к свежим инцидентам, что также способствует плавному забыванию и стабильности.

3.3. Увеличить interval_minute (интервал между применениями забывания)

  • Текущее: 60рекомендуемое: 120–180 (2–3 часа).
  • Обоснование: реже применяемое забывание уменьшает кумулятивный эффект за сутки. Например, при interval = 120 (12 раз в сутки) и alpha = 0.05 суточное уменьшение составит (0.95)¹² ≈ 0.54, т.е. данные за сутки сохраняются на 54 %, что значительно лучше, чем текущие 2 %.

3.4. (Опционально) Повысить min_transitions_for_forgetting

  • Текущее: 5000 – уже достаточно, менять не требуется.

❓4. Ожидаемый эффект

После внесения изменений:

  • max_prob_change значительно снизится (с 1.0 до < 0.2–0.3).
  • Рейтинг достоверности вырастет как минимум до 3–4 (при сохранении хорошей калибровки).
  • Модель станет более устойчивой, прогнозы – воспроизводимыми и надёжными.

📋5. Конкретные SQL-команды для применения

-- Изменение параметров

UPDATE markov_config

SET

base_alpha = 0.05,

incident_half_life_days = 10,

interval_minute = 120,

last_forget_time = now() -- сбросить таймер, чтобы новое забывание применилось сразу

WHERE 1=1;

-- После изменения рекомендуется принудительно применить забывание с новым alpha (для пересчёта вероятностей)

SELECT mchain_apply_forgetting(); -- без параметров, использует новые настройки

6. Дополнительные рекомендации

  • Мониторинг: после изменения настроек следить за динамикой max_prob_change (можно вычислять периодически через mchain_check_sufficiency() или вручную).
  • Адаптивный порог: если после настройки стабильность улучшится, но рейтинг останется низким, можно также увеличить min_alpha (например, до 0.01, хотя сейчас 0.02 уже минимален).
  • Проверка качества: после применения изменений пересчитать отчёт mchain_quality_report() и mchain_summary_report() для оценки эффекта.

Заключение

ℹ️Основная проблема – чрезмерно агрессивное забывание из-за высокого base_alpha и частого применения. Предложенные корректировки направлены на увеличение «памяти» модели, что повысит стабильность и достоверность прогнозов без потери качества калибровки.

-2

☑️Update: Применение изменений

-- Изменение параметров

UPDATE markov_config

SET

base_alpha = 0.05,

incident_half_life_days = 10,

interval_minute = 120,

last_forget_time = now();   -- сбросить таймер, чтобы новое забывание применилось сразу

select * from markov_config \gx

=> UPDATE markov_config
-> SET
-> base_alpha = 0.05,
-> incident_half_life_days = 10,
-> interval_minute = 120,
-> last_forget_time = now();   -- сбросить таймер, чтобы новое забывание применилось сразу
UPDATE 1

=> select * from markov_config \gx
-[ RECORD 1 ]-----------------------+------------------------------
last_forget_time                    | 2026-06-22 10:31:05.64997+03
alpha                               | 0.1
interval_minute                     | 120
transition_log_retention_days       | 21
apply_forgetting_log_retention_days | 21
adaptive_forgetting_enabled         | t
use_adaptive_alpha                  | t
base_alpha                          | 0.05
min_alpha                           | 0.02
incident_half_life_days             | 10
last_incident_time                  | 2026-06-22 08:58:03.488732+03
min_transitions_for_forgetting      | 5000
forecast_horizon_minutes            | 30

-- После изменения рекомендуется принудительно применить забывание с новым alpha (для пересчёта вероятностей)

SELECT mchain_apply_forgetting();  -- без параметров, использует новые настройки

=> SELECT mchain_apply_forgetting();
mchain_apply_forgetting
-------------------------
(1 row)
=>