¿Existen algoritmos o estructuras de datos que necesiten encontrar el valor medio de un conjunto?

14

He estado leyendo este libro para mi clase, Algoritmos aleatorios. En este libro en particular, hay una sección completa dedicada a encontrar la mediana de una matriz usando selección aleatoria, que conduce a un algoritmo más eficiente. Ahora, quería saber si existen aplicaciones prácticas de este algoritmo, en el dominio de la informática, además de una mejora teórica. ¿Hay algún algoritmo o estructura de datos que necesite encontrar la mediana de una matriz?

Sharan Duggirala
fuente
3
Es posible que desee echar un vistazo a la clasificación rápida: al elegir la mediana como pivote, se puede evitar su peor caso (tiempo de ejecución del peor caso = O (n log n) en lugar de O (n ^ 2)) y la profundidad de recursión será minimizado (log2 (n)).
hoffmale
1
@hoffmale: Pero eso no requiere que encuentres la mediana. Requiere que encuentre un valor que sea razonablemente cercano a la mediana. Por ejemplo, encontrar un pivote que no esté dentro del 5% superior o del 5% inferior garantiza O (n log n).
gnasher729
1
@ gnasher729: pero eso no minimizará la profundidad de recursión. Ambas propiedades son importantes, por ejemplo, en un entorno de tiempo real con recursos limitados.
hoffmale
@hoffmale, por cierto, la notación habitual para el logaritmo de base 2 (particularmente entre los informáticos) es simplemente "lg" como en (lg (n)).
Comodín el
@ gnasher729 Dado que el tema es algoritmos estocásticos, esto (= razonablemente cercano) es probablemente precisamente lo que están haciendo estos algoritmos.
Konrad Rudolph el

Respuestas:

17

si existen aplicaciones prácticas de este algoritmo en el dominio de la informática además de ser una mejora teórica

La aplicación de este algoritmo es trivial: lo usa siempre que desee calcular una mediana de un conjunto de datos (matriz en otras palabras). Estos datos pueden provenir de diferentes dominios: observaciones astronómicas, ciencias sociales, datos biológicos, etc.

Sin embargo, vale la pena mencionar cuándo preferir la mediana a la media (o modo). Básicamente, en estadística descriptiva, cuando nuestros datos están perfectamente distribuidos normalmente, la media, la moda y la mediana son iguales, es decir, coinciden. Por otro lado, cuando nuestros datos están sesgados, es decir, la distribución de frecuencia de nuestros datos está (izquierda / derecha) sesgada, la media no proporciona la mejor ubicación central porque la asimetría la está arrastrando lejos del valor típico a izquierda o derecha , mientras que la mediana no está tan fuertemente influenciada por los datos sesgados, y por lo tanto retiene mejor esta posición apuntando a un valor típico. Por lo tanto, calcular una mediana puede ser preferible cuando se trata de datos asimétricos.

Además, el aprendizaje automático es donde los métodos estadísticos se usan mucho, por ejemplo, la agrupación de mediosk .

fade2black
fuente
¡Gracias! ¡Eso es extremadamente útil! ¿Algún otro algoritmo o técnica que pueda necesitar encontrar una mediana?
Sharan Duggirala
55
Si bien esto es lo suficientemente cierto (+1), la mayoría de las veces en las estadísticas aplicadas los datos se ordenarían antes de encontrar la mediana, ya que en muchos o incluso en la mayoría de los contextos donde se desea la mediana, también lo son al menos algunos de los demás. Estadísticas.
John Coleman
1
Interesante. He oído sobre significa clustering, pero no sobre k -medians clustering. kk
svick
13

El filtrado medio es común en la reducción de ciertos tipos de ruido en el procesamiento de imágenes. Especialmente el ruido de sal y pimienta. Funciona seleccionando el valor medio en cada canal de color en cada vecindario local de la imagen y reemplazándolo con él. El tamaño de estos vecindarios puede variar. Los tamaños de filtro populares (vecindades) son, por ejemplo, 3x3 y 5x5 píxeles.

mathreadler
fuente
1
La mediana se aplica no solo al ruido en las imágenes, sino al ruido en casi todas las lecturas de sensores, de las cuales las cámaras son solo un tipo de sensor. Los libros de texto escolares muestran bonitas formas de onda sinusoidales y cuadradas para trabajar. En el mundo real, los datos limpios como ese casi nunca ocurren. Si es así, es casi siempre porque alguien más se encargó de suavizar los datos antes de que los obtuviera. por ejemplo, de datos de lectura de sensores más típicos de los cuales necesita elegir el valor "correcto": (1, 3, 5, 65, 68, 70, 75, 80, 82, 85, 540, 555). Ordene los datos para hacerlo más obvio.
Dunk
1
Sí tienes razón. Pero sería una respuesta muy larga y aburrida si escribiéramos todas las pequeñas cosas en el procesamiento de señales donde se pueda usar.
mathreadler
1
Las medianas en el procesamiento de imágenes también se pueden usar por píxel con secuencias de aproximadamente 5 fotos, que es una forma de deshacerse del ruido temporal (también conocido como turistas que bloquean la vista)
Hagen von Eitzen
@HagenvonEitzen ¡Tienes razón! En realidad, estaba pensando en algo bastante similar hace solo unos días. Muchos turistas alrededor ...
mathreadler
10

Calcular medianas es particularmente importante en algoritmos aleatorios.

341±ϵA . Entonces repetimos el algoritmok34kA(1±ϵ)kA(1ϵ)A(1+ϵ)k

2nn

David Richerby
fuente
5

La mediana de las medianas tiene algunas aplicaciones:

  • O(nlogn)
  • O(n)O(n2)
Odo Frodo
fuente
1
En realidad, es muy probable que el uso de la mediana de las medianas para seleccionar un pivote para la clasificación rápida ralentice el algoritmo en la práctica, porque mata completamente la localidad de caché, que es la principal contribución a la rapidez de la clasificación rápida. Pero su comentario sobre la complejidad del peor de los casos es, por supuesto, correcto.
wchargin
@wchargin ¿Qué alternativas sugieres? Ninguna implementación práctica de clasificación rápida que conozco utiliza un pivote sensible a la memoria caché, porque hacerlo se intercambia en el atroz peor tiempo de ejecución. El documento seminal "Ingeniería de una función de clasificación" discute alternativas, y ninguna de ellas es consciente de la memoria caché (y sin embargo supera a la selección de pivote ingenua).
Konrad Rudolph el
1
@wchargin ... respondiendo a mi propia pregunta: Java 7 cambió a un nuevo procedimiento de doble pivote que desconocía. Esto es intrigante y podría volver obsoletos los algoritmos de pivote mediano.
Konrad Rudolph el