Грок предлагает: Самый элегантный способ найти экстремум функции плотности вероятности (PDF) случайного процесса в реальном времени — это использовать онлайн-алгоритм на основе стохастического градиентного подъёма для оценки моды, без хранения всех наблюдений. Один из таких методов — итеративный алгоритм MODE, который моделирует процесс как решение обыкновенного дифференциального уравнения (ODE) для обеспечения сходимости. Он подходит для гладких unimodal распределений (с одной модой), где процесс не нормальный, и мода не совпадает с математическим ожиданием.Предположения метода:Распределение имеет гладкую плотность с уникальной модой.
Наблюдения — независимые идентично распределённые (i.i.d.) выборки из процесса.
Выбрано подходящее ядро K (например, гауссово), для аппроксимации градиента плотности.
Алгоритм шаг за шагом:Инициализация:Начальная оценка моды m_0 (можно взять среднее первых нескольких наблюдений).
Выбрать маленькие параметры: регуляризация λ > 0 (для стабильности) и полосу пропускания ε > 0 (bandwidth для ядра).
Определить масштабированное ядро K_ε(x) = ε^{-p} K(x / ε), где p — размерность (для 1D p=1).
Для каждого нового наблюдения X_{n+1}:Вычислить аппроксимацию градиента плотности:
∇K_ε(m_n - X_{n+1}).
Это использует свойство свёртки: градиент плотности в точке m приблизительно равен математическому ожиданию ∇K_ε(m - X).
Вычислить направление обновления:
d_{n+1} = ∇K_ε(m_n - X_{n+1}) - λ m_n.
(Терм -λ m_n — регуляризация, предотвращающая расхождение.)
Обновление оценки:Выбрать размер шага a_n (например, a_n = 1/n для сходимости).
m_{n+1} = m_n + a_n d_{n+1}.
Вывод:Текущая m_{n+1} — оценка моды на основе всех наблюдений до момента n+1.
Преимущества:Работает "на лету": обрабатывает одно наблюдение за раз, не хранит прошлые данные.
Не требует сортировки или полного буфера.
Сходимость доказана через анализ ODE: обновление моделируется как стохастическая аппроксимация, где траектория m_n следует ODE \dot{m} = ∇f(m) - λ m, с глобальной стабильностью в нуле благодаря регуляризации.
Подходит для многомерных случаев и не требует нормальности.
Этот метод эффективен для потоковых данных и вычислительно прост.
arxiv.org
Если распределение может быть мультимодальным или с концептуальным дрейфом, можно использовать адаптивный онлайн-оценщик плотности, такой как ALoKDE (Adaptive Local Online Kernel Density Estimator). Он строит оценку плотности в реальном времени с постоянной памятью, обнаруживает изменения в распределении и позволяет найти моду как максимум оценённой плотности. Это robust к шуму и работает без хранения данных, с линейной сложностью по времени.
pmc.ncbi.nlm.nih.gov
Для реализации рекомендуется тюнить параметры (ε, λ, a_n) на основе шкалы данных, возможно, с помощью кросс-валидации на начальных наблюдениях.