Sobes.tech
Back to questions
Middle — Senior
11

Почему нельзя просто считать медиану на каждом воркере и потом объединять?

Companies where asked
Rubbles

Answer from AI

sobes.tech AI

Что хотят услышать интервьюеры:

Медиана не является агрегатом, который можно корректно объединять по частям так же, как сумму или среднее. Локальные медианы не несут достаточно информации о распределении данных, поэтому глобальная медиана может сильно отличаться от результата “медиана от медиан”. Корректный способ — либо собрать данные полностью, либо использовать алгоритмы, которые хранят порядок/квантили с гарантией точности или приближением.

Определение:

Медиана — это значение, которое делит упорядоченный набор данных пополам: у половины элементов значение меньше или равно ему, у другой половины — больше или равно. Проблема в распределённых вычислениях заключается в том, что медиана не обладает свойством ассоциативности и не сводится к простому комбинированию частичных результатов.

Если на каждом воркере посчитать медиану, то потеряется информация о том, сколько именно элементов находится слева и справа от этой медианы, и как они распределены внутри партиции. Поэтому из локальных медиан нельзя точно восстановить глобальную медиану без дополнительной информации.

Пример использования:

Допустим, есть три воркера с данными:

Worker 1: [1, 2, 100]
Worker 2: [3, 4, 5]
Worker 3: [6, 7, 8]

Локальные медианы:

  • Worker 1 → 2
  • Worker 2 → 4
  • Worker 3 → 7

Если взять медиану от этих медиан, получится 4.
Но если объединить все данные:

[1, 2, 3, 4, 5, 6, 7, 8, 100]

Глобальная медиана — 5.

То есть “медиана медиан” дала неверный ответ.

Пояснение кода:

Код не требуется: здесь важен не синтаксис, а понимание ограничения алгоритма.

Разложение примера по шагам:

  1. Каждый воркер видит только свою часть данных.
  2. Он вычисляет локальную медиану, но не знает, сколько значений в других партициях меньше или больше этой медианы.
  3. При объединении локальных медиан теряется информация о реальном ранге элементов во всём наборе.
  4. Поэтому итог может быть смещён в сторону одной из партиций, особенно если размеры партиций разные или распределение данных неоднородное.

Ключевые моменты:

  • Медиана не является “mergeable” агрегатом в простом виде.
  • Медиана локальных выборок не равна глобальной медиане в общем случае.
  • Для точного результата нужны либо все данные, либо алгоритмы поиска квантили с дополнительной структурой состояния.
  • Ошибка особенно заметна при разных размерах партиций и перекошенных распределениях.
  • Для распределённых систем часто используют приближённые квантильные алгоритмы, если точность не критична.