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

Адаптивное "забывание" для частого сбора данных и медианного сглаживания

Материал подготовлен нейросетью DeepSeek.
В функции markov_chain_training() реализован механизм планового забывания:
Параметры забывания читаются из таблицы markov_config:
Если now() - last_forget_time >= interval_hours, вызывается apply_forgetting(alpha), которая:
Оглавление

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

Анализируемый фрагмент

В функции markov_chain_training() реализован механизм планового забывания:

Параметры забывания читаются из таблицы markov_config:

  • alpha – коэффициент экспоненциального затухания частот (frequency = frequency * (1 - alpha)).
  • interval_hours – период (в часах) между применениями забывания.

Если now() - last_forget_time >= interval_hours, вызывается apply_forgetting(alpha), которая:

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

Условия эксплуатации (по условию задачи)

  • Интервал сбора данных = 1 минута → каждую минуту вызывается markov_chain_training(), фиксируется переход и обновляются частоты.
  • Медианное сглаживание с окном 1 час → каждое новое значение (correlation, os_trend, wait_trend) представляет собой медиану за последние 60 измерений. Это существенно снижает шум и случайные колебания, делая ряд состояний более гладким и инерционным.

Влияние текущих параметров (по умолчанию)

  • alpha = 0.01, interval_hours = 1 → забывание применяется раз в час с умножением частот на 0.99.

Период полураспада веса наблюдения:

  • T₁/₂ = ln(0.5)/ln(0.99) ≈ 69 часов (почти 3 суток).

При сборе данных каждую минуту за час накапливается 60 переходов, а за сутки – 1440 переходов (только в рабочие часы, но суть ясна).

Необходимость и целесообразность изменения параметров

1. Цель – ускорение процесса обучения

Под «ускорением обучения» обычно понимают:

  • Более быструю адаптацию матрицы вероятностей к изменениям в поведении системы (дрейфу).
  • Сокращение времени, за которое модель «забывает» устаревшие данные и начинает отражать текущую реальность.

При заданных условиях текущие параметры избыточно консервативны:

  • Медианное сглаживание уже подавляет шум → нет опасения, что быстрое забывание приведёт к хаотичным скачкам вероятностей.
  • Большой период полураспада (≈3 суток) означает, что модель очень медленно реагирует на смену паттернов (например, изменение нагрузки день ото дня).
  • Для типичных рабочих нагрузок СУБД значимые изменения могут происходить в течение одного-двух дней – модель должна успевать за ними.

📋2. Рекомендуемые изменения параметров

☑️Параметр alpha (коэффициент забывания):

  • Текущее значение: 0.01
  • ➡️Рекомендуемое значение: 0.05 … 0.10

Обоснование:

  • Увеличивает скорость забывания: период полураспада сокращается до ≈13.5 часов (при 0.05) или ≈6.5 часов (при 0.10). При сглаженных данных это безопасно.

☑️Параметр interval_hours (период между применениями забывания):

  • Текущее значение: 1 час
  • ➡️Рекомендуемое значение: 0.5 часа (30 минут) или 0.25 часа (15 минут)

Обоснование:

  • Более частое применение забывания позволяет плавно уменьшать веса, не дожидаясь накопления большого объёма «устаревших» переходов. При медианном окне в 1 час полчаса – разумный компромисс между адаптивностью и вычислительной нагрузкой.

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

  • Ускорение адаптации: модель будет отслеживать изменения в поведении СУБД с задержкой в несколько часов вместо нескольких дней.
  • Снижение инерционности: после смены режима работы (например, переход на новый тип запросов) вероятности перестроятся быстрее.
  • Незначительное увеличение вычислительной нагрузки из-за более частого пересчёта markov_probabilities и markov_absorbing (с 1 раза в час до 2–4 раз в час) – при современном оборудовании это абсолютно некритично (таблицы имеют размер ~1 МБ, пересчёт занимает миллисекунды).

4. Потенциальные риски и их смягчение

  • Чрезмерная чувствительность к кратковременным флуктуациям – исключается медианным сглаживанием с часовым окном. Одиночные выбросы не пройдут в финальное состояние.
  • Потеря статистической значимости для редких состояний – при увеличении alpha частоты редких переходов будут обнуляться быстрее, что может привести к появлению unknown_state. Это можно контролировать через мониторинг transition_log и, при необходимости, незначительно уменьшить alpha (например, до 0.03).
  • Ухудшение качества прогнозов – необходимо верифицировать через compare_brier_scores до/после изменения. Ожидается, что для сглаженных данных Brier Score либо не изменится, либо даже улучшится за счёт лучшей адаптации.

Вывод

☑️Изменение параметров markov_config целесообразно и необходимо для достижения цели «ускорение обучения» при заданных условиях (1 минута сбора данных, медианное сглаживание окном 1 час).

📋Рекомендуется выполнить:

UPDATE markov_config SET alpha = 0.05, interval_hours = 0.5;

После изменения следует в течение нескольких дней наблюдать за метриками точности (Brier Score) и, при необходимости, скорректировать значения методом проб (например, alpha = 0.03 с interval_hours = 0.5 или alpha = 0.1 с interval_hours = 0.25).

Для автоматической адаптации можно также реализовать динамическую настройку alpha на основе скорости изменения KL-дивергенции или максимального изменения вероятностей.