Существуют ли какие-либо алгоритмы или структуры данных, которые должны найти медианное значение множества?

14

Я читал эту книгу для своего класса рандомизированных алгоритмов. В этой конкретной книге есть целый раздел, посвященный поиску медианы массива с использованием случайного выбора, что приводит к более эффективному алгоритму. Теперь я хотел бы знать, есть ли какие-либо практические применения этого алгоритма в области информатики, кроме теоретического улучшения. Существуют ли алгоритмы или структуры данных, которые должны найти медиану массива?

Шаран Дуггирала
источник
3
Вы можете захотеть взглянуть на быстрой сортировке: При выборе медианы как стержень, его худшем случае можно избежать ( в худшем случае выполнение = O (п войти п) вместо O (N ^ 2)) , а глубина рекурсии будет свернуто (log2 (n)).
hoffmale
1
@hoffmale: Но это не требует, чтобы вы нашли медиану. Это требует от вас найти значение, которое достаточно близко к медиане. Например, найти точку опоры, которая не находится в пределах 5% верхнего или нижнего 5% гарантирует O (N журнал N).
gnasher729
1
@ gnasher729: но это не уменьшит глубину рекурсии. Оба свойства важны, например, в среде с ограниченными ресурсами в режиме реального времени.
hoffmale
@hoffmale, между прочим, обычная запись для логарифма базы 2 (особенно среди компьютерных специалистов) просто "lg", как в (lg (n)).
Wildcard
@ gnasher729 Поскольку речь идет о стохастических алгоритмах, это (= достаточно близко), вероятно, именно то, что делают эти алгоритмы.
Конрад Рудольф

Ответы:

17

если есть какие-либо практические применения этого алгоритма в области информатики, кроме теоретического улучшения

Применение этого алгоритма тривиально - вы используете его всякий раз, когда хотите вычислить медиану набора данных (другими словами, массива). Эти данные могут поступать из разных областей: астрономические наблюдения, социальные науки, биологические данные и т. Д.

Тем не менее, стоит упомянуть, когда предпочитать медиану (или режим). По сути, в описательной статистике, когда наши данные распределены совершенно нормально, среднее, модальное и медианное значения равны, т.е. они совпадают. С другой стороны, когда наши данные искажены, то есть частотное распределение для наших данных (влево / вправо) искажено, среднее значение не может обеспечить наилучшее центральное местоположение, поскольку асимметрия уводит его от типичного значения влево или вправо в то время как медиана не так сильно зависит от искаженных данных, и, таким образом, лучше всего сохраняет эту позицию, указывая на типичное значение. Таким образом, вычисление медианы может быть предпочтительным, когда вы имеете дело с искаженными данными.

Кроме того, в машинном обучении интенсивно используются статистические методы, например, кластеризация медиан .k

fade2black
источник
Спасибо! Это очень полезно! Любые другие алгоритмы или методы, которые могут понадобиться, чтобы найти медиану?
Шаран Дуггирала
5
Хотя это достаточно верно (+1), чаще всего в прикладной статистике данные будут сортироваться до нахождения медианы, поскольку во многих или даже в большинстве контекстов, где медиана желательна, таковы, по крайней мере, некоторые другие порядки. статистика.
Джон Колман
1
Интересный. Я слышал о кластеризации средних, но не о кластеризации k- медианов. КК
svick
13

Медианная фильтрация распространена при уменьшении определенных типов шума при обработке изображений. Особенно шум соли и перца. Он работает, выбирая медианное значение в каждом цветовом канале в каждой локальной окрестности изображения и заменяя его им. Насколько велики эти окрестности, может варьироваться. Популярные размеры фильтра (окрестности) составляют, например, 3x3 и 5x5 пикселей.

mathreadler
источник
1
Медиана относится не только к шуму на изображениях, но и к шуму практически во всех показаниях датчиков, из которых камеры являются лишь одним из видов датчиков. Школьные учебники показывают приятные синусоидальные и прямоугольные формы волн для работы. В реальном мире таких данных почти никогда не бывает. Если это так, то это почти всегда, потому что кто-то другой позаботился о сглаживании данных до того, как вы их заполучили. например, из более типичных данных, считываемых датчиком, из которых нужно выбрать «правильное» значение: (1, 3, 5, 65, 68, 70, 75, 80, 82, 85, 540, 555). Я отсортировал данные, чтобы сделать их более очевидными.
Данк
1
Да, вы правы. Но это было бы очень длинным и скучным ответом, если бы мы записали все мелочи в обработке сигналов, где они могут быть использованы.
mathreadler
1
Медианы в обработке изображений могут также использоваться для каждого пикселя с последовательностями приблизительно из 5 фотографий, что является способом избавления от временного шума (иначе говоря, туристов, блокирующих обзор)
Hagen von Eitzen
@HagenvonEitzen Вы правы! На самом деле я думал о чем-то очень похожем всего несколько дней назад. Много туристов вокруг ...
mathreadler
10

Вычисление медиан особенно важно в рандомизированных алгоритмах.

341±εA34КA(1±ε)КA(1-ε)A(1+ε)К

2NN

Дэвид Ричерби
источник
5

Алгоритм выбора имеет несколько приложений:

  • О(NжурналN)
  • О(N)О(N2)
Одо Фродо
источник
1
На самом деле, использование медианы медиан для выбора оси быстрой сортировки, по-видимому, на практике замедляет алгоритм, потому что он полностью убивает локальность кэша, что является основным вкладом в скорость быстрой сортировки. Но ваш комментарий о сложности наихудшего случая, конечно, правильный.
wchargin
@wchargin Какие альтернативы вы предлагаете? Ни одна практическая реализация быстрой сортировки, о которой я знаю, не использует чувствительный к кешу стержень, потому что при этом происходит жестокая среда выполнения в худшем случае. В оригинальном документе «Проектирование функции сортировки» обсуждаются альтернативы, и ни один из них не учитывает кэш-память (и, тем не менее, превосходит наивный выбор центра).
Конрад Рудольф
1
@wchargin… отвечая на мой собственный вопрос: Java 7 переключилась на новую процедуру двойного поворота, о которой я не знал. Это интригующе и может привести к устареванию алгоритмов срединных опор.
Конрад Рудольф