TGViewer
Classical Vlad Classical Vlad @classical_vlad · 457 subscribers
Post #11 992
Любители временных рядов, это для вас.

Часто вижу кошмарно неэффективные подсчёты rolling-признаков при обработке time series данных.
Например, использование rolling mean в pandas без доработок, std, корреляции, медианы и прочее туда же.

Почему?
Обычно соседние окна почти полностью пересекаются, отличаясь на 1 шаг. Пример: мы считаем суточное среднее какого-то ряда каждую минуту → тогда на первом шаге мы проанализируем промежуток [0:1440], на втором шаге — [1:1441], итого 1438 повторений вычисления. Таким образом, сложность подсчёта признака будет O(N*K), где N — количество точек в наборе данных, а K — количество наблюдений для подсчёта одной итерации фичи.

Как делать хорошо?
Решить простенькое уравнение рекурсии, в котором каждое последующее значение признака зависит от предыдущего.
То есть по-честному расписываем X_t - X_{t-1}.

Для rolling mean за k наблюдений тогда получится: mean(X)t = mean(X){t-1} + 1/n (X_t - X_{t-k})
Тогда первое значение мы по-прежнему считаем честно полным проходом, а все последующие стоят O(1).
Тогда посчитать статистику на всю историю будет стоить всего O(N), то есть в K раз дешевле.

Нюанс: накапливается ошибка, особенно с fp16 или fp32.
Чинится либо использованием fp128, если память позволяет, либо чекпоинтами, на которых мы пересчитываем значение «честно»
(в примере размер окна 1000)

Хорошо описано тут: https://laurentrdc.xyz/posts/rolling-stats.html
  • ✍ 8
  • ❤ 3
More from @classical_vlad
  1. Aug 25, 2026Буквально лучший поиск, один из самых быстрых дешвле соседей и с тем же качеством keenable…
  2. Aug 16, 2026Итак, мне исполнилось 19 лет. Это был насыщенный год: первый год в эмиграции, первое уволь…
  3. Aug 16, 2026Про Сеул: Первые впечатления: очень жарко и очень влажно. 30-35 градусов, которые ощущаютс…
  4. Aug 3, 2026Раньше я считал, что соревнования не для меня. Я понимал, что всегда найдётся много людей…
  5. Jul 25, 2026Вб сгорел, озон в плену, хованский умер, а мы выпустили быстрый диффузионный апскейлер. Ск…
  6. Jul 18, 2026Я очень много пишу код с помощью Claude Code. Точнее сказать, что иначе я уже не пишу код…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →