La maximización de expectativas (EM) es una especie de método probabilístico para clasificar datos. Por favor corríjame si me equivoco si no es un clasificador.
¿Cuál es una explicación intuitiva de esta técnica EM? ¿Qué hay expectation
aquí y qué está siendo maximized
?
Respuestas:
Nota: el código detrás de esta respuesta se puede encontrar aquí .
Supongamos que tenemos algunos datos muestreados de dos grupos diferentes, rojo y azul:
Aquí, podemos ver qué punto de datos pertenece al grupo rojo o azul. Esto facilita la búsqueda de los parámetros que caracterizan a cada grupo. Por ejemplo, la media del grupo rojo es alrededor de 3, la media del grupo azul es alrededor de 7 (y podríamos encontrar la media exacta si quisiéramos).
Esto se conoce, en general, como estimación de máxima verosimilitud. . Dados algunos datos, calculamos el valor de un parámetro (o parámetros) que mejor explica esos datos.
Ahora imagine que no podemos ver qué valor se muestreó de qué grupo. Todo nos parece morado:
Aquí tenemos el conocimiento de que hay dos grupos de valores, pero no sabemos a qué grupo pertenece un valor en particular.
¿Todavía podemos estimar las medias para el grupo rojo y el grupo azul que mejor se ajustan a estos datos?
¡Sí, a menudo podemos! La maximización de expectativas nos da una forma de hacerlo. La idea muy general detrás del algoritmo es esta:
Estos pasos necesitan una explicación más detallada, por lo que analizaré el problema descrito anteriormente.
Ejemplo: estimación de la desviación estándar y media
Usaré Python en este ejemplo, pero el código debería ser bastante fácil de entender si no está familiarizado con este lenguaje.
Supongamos que tenemos dos grupos, rojo y azul, con los valores distribuidos como en la imagen de arriba. Específicamente, cada grupo contiene un valor extraído de una distribución normal con los siguientes parámetros:
Aquí hay una imagen de estos grupos rojo y azul nuevamente (para evitar que tenga que desplazarse hacia arriba):
Cuando podemos ver el color de cada punto (es decir, a qué grupo pertenece), es muy fácil estimar la media y la desviación estándar de cada grupo. Simplemente pasamos los valores rojo y azul a las funciones integradas en NumPy. Por ejemplo:
Pero, ¿y si no podemos ver los colores de los puntos? Es decir, en lugar de rojo o azul, todos los puntos se han coloreado de púrpura.
Para intentar recuperar los parámetros de desviación estándar y media de los grupos rojo y azul, podemos utilizar la maximización de expectativas.
Nuestro primer paso ( paso 1 anterior) es adivinar los valores de los parámetros para la media y la desviación estándar de cada grupo. No tenemos que adivinar inteligentemente; podemos elegir los números que queramos:
Estas estimaciones de parámetros producen curvas de campana que se ven así:
Estas son malas estimaciones. Ambos medios (las líneas verticales punteadas) se ven lejos de cualquier tipo de "medio" para grupos sensibles de puntos, por ejemplo. Queremos mejorar estas estimaciones.
El siguiente paso ( paso 2 ) es calcular la probabilidad de que cada punto de datos aparezca bajo las suposiciones de parámetros actuales:
Aquí, simplemente hemos puesto cada punto de datos en la función de densidad de probabilidad para una distribución normal usando nuestras suposiciones actuales en la desviación estándar y media para el rojo y el azul. Esto nos dice, por ejemplo, que con nuestras suposiciones actuales, es mucho más probable que el punto de datos en 1,761 sea rojo (0,189) que azul (0,00003).
Para cada punto de datos, podemos convertir estos dos valores de probabilidad en pesos ( paso 3 ) para que sumen 1 de la siguiente manera:
Con nuestras estimaciones actuales y nuestras ponderaciones recién calculadas, ahora podemos calcular nuevas estimaciones para la media y la desviación estándar de los grupos rojo y azul ( paso 4 ).
Calculamos dos veces la media y la desviación estándar usando todos los puntos de datos, pero con diferentes ponderaciones: una vez para las ponderaciones rojas y una vez para las azules.
La clave de la intuición es que cuanto mayor es el peso de un color en un punto de datos, más influye el punto de datos en las próximas estimaciones de los parámetros de ese color. Esto tiene el efecto de "tirar" de los parámetros en la dirección correcta.
Tenemos nuevas estimaciones para los parámetros. Para mejorarlos de nuevo, podemos volver al paso 2 y repetir el proceso. Hacemos esto hasta que las estimaciones converjan, o después de que se hayan realizado algunas iteraciones ( paso 5 ).
Para nuestros datos, las primeras cinco iteraciones de este proceso se ven así (las iteraciones recientes tienen una apariencia más fuerte):
Vemos que las medias ya están convergiendo en algunos valores, y las formas de las curvas (gobernadas por la desviación estándar) también se están volviendo más estables.
Si continuamos durante 20 iteraciones, terminamos con lo siguiente:
El proceso EM ha convergido a los siguientes valores, que resultan muy cercanos a los valores reales (donde podemos ver los colores, sin variables ocultas):
En el código anterior, es posible que haya notado que la nueva estimación de la desviación estándar se calculó utilizando la estimación de la iteración anterior para la media. En última instancia, no importa si primero calculamos un nuevo valor para la media, ya que solo estamos encontrando la varianza (ponderada) de los valores alrededor de algún punto central. Seguiremos viendo converger las estimaciones de los parámetros.
fuente
EM es un algoritmo para maximizar una función de probabilidad cuando algunas de las variables en su modelo no se observan (es decir, cuando tiene variables latentes).
Podría preguntar, si solo estamos tratando de maximizar una función, ¿por qué no usamos la maquinaria existente para maximizar una función? Bueno, si intenta maximizar esto tomando derivadas y poniéndolas a cero, encontrará que en muchos casos las condiciones de primer orden no tienen solución. Hay un problema del huevo y la gallina en el sentido de que para resolver los parámetros de su modelo necesita conocer la distribución de sus datos no observados; pero la distribución de sus datos no observados es una función de los parámetros de su modelo.
EM intenta evitar esto adivinando iterativamente una distribución para los datos no observados, luego estimando los parámetros del modelo maximizando algo que es un límite inferior en la función de probabilidad real y repitiendo hasta la convergencia:
El algoritmo EM
Comience con adivinar los valores de los parámetros de su modelo
Paso E: para cada punto de datos que tenga valores perdidos, use la ecuación de su modelo para resolver la distribución de los datos faltantes dada su estimación actual de los parámetros del modelo y dados los datos observados (tenga en cuenta que está resolviendo una distribución para cada valor, no para el valor esperado). Ahora que tenemos una distribución para cada valor perdido, podemos calcular la expectativa de la función de verosimilitud con respecto a las variables no observadas. Si nuestra conjetura para el parámetro del modelo fue correcta, esta probabilidad esperada será la probabilidad real de nuestros datos observados; si los parámetros no son correctos, será solo un límite inferior.
Paso M: ahora que tenemos una función de probabilidad esperada sin variables no observadas en ella, maximice la función como lo haría en el caso completamente observado, para obtener una nueva estimación de los parámetros de su modelo.
Repita hasta convergencia.
fuente
A continuación, se incluye una receta sencilla para comprender el algoritmo de maximización de expectativas:
1- Lea este artículo tutorial de EM de Do y Batzoglou.
2- Es posible que tenga signos de interrogación en la cabeza, eche un vistazo a las explicaciones en esta página de intercambio de pilas de matemáticas .
3- Mira este código que escribí en Python que explica el ejemplo en el tutorial de EM del artículo 1:
Advertencia: el código puede ser desordenado / subóptimo, ya que no soy un desarrollador de Python. Pero cumple su función.
fuente
Técnicamente, el término "EM" está un poco subespecificado, pero supongo que se refiere a la técnica de análisis de conglomerados del modelado de mezcla gaussiana, que es un ejemplo del principio general de EM.
En realidad, el análisis de conglomerados EM no es un clasificador . Sé que algunas personas consideran que la agrupación es una "clasificación no supervisada", pero en realidad el análisis de agrupaciones es algo bastante diferente.
La diferencia clave, y el gran malentendido de clasificación que la gente siempre tiene con el análisis de conglomerados es que: en el análisis de conglomerados, no existe una "solución correcta" . Es un método de descubrimiento de conocimiento , ¡en realidad está destinado a encontrar algo nuevo ! Esto hace que la evaluación sea muy complicada. A menudo se evalúa utilizando una clasificación conocida como referencia, pero eso no siempre es apropiado: la clasificación que tiene puede reflejar o no lo que hay en los datos.
Déjame darte un ejemplo: tienes un gran conjunto de datos de clientes, incluidos datos de género. Un método que divide este conjunto de datos en "masculino" y "femenino" es óptimo cuando se compara con las clases existentes. En una forma de "predicción" de pensar, esto es bueno, ya que para los nuevos usuarios ahora puede predecir su género. En una forma de pensar de "descubrimiento de conocimiento", esto es realmente malo, porque quería descubrir alguna estructura nueva en los datos. Sin embargo, un método que dividiría los datos en personas mayores y niños obtendría la peor puntuación posible con respecto a la clase masculina / femenina. Sin embargo, ese sería un excelente resultado de agrupación (si no se proporcionara la edad).
Ahora volvamos a EM. Esencialmente, asume que sus datos están compuestos por múltiples distribuciones normales multivariadas (tenga en cuenta que esta es una suposición muy sólida, en particular cuando se fija el número de clústeres). Luego trata de encontrar un modelo óptimo local para esto mejorando alternativamente el modelo y la asignación de objetos al modelo .
Para obtener los mejores resultados en un contexto de clasificación, elija el número de clústeres más grande que el número de clases, o incluso aplique el clúster solo a clases individuales (¡para averiguar si hay alguna estructura dentro de la clase!).
Supongamos que desea entrenar a un clasificador para distinguir "automóviles", "bicicletas" y "camiones". Es de poca utilidad suponer que los datos constan de exactamente 3 distribuciones normales. Sin embargo, puede suponer que hay más de un tipo de automóvil (y camiones y bicicletas). Entonces, en lugar de entrenar a un clasificador para estas tres clases, agrupa autos, camiones y bicicletas en 10 grupos cada uno (o tal vez 10 autos, 3 camiones y 3 bicicletas, lo que sea), luego entrena a un clasificador para diferenciar estas 30 clases, y luego fusionar el resultado de la clase con las clases originales. También puede descubrir que hay un grupo que es particularmente difícil de clasificar, por ejemplo, Triciclos. Son algo coches y algo bicicletas. O camiones de reparto, que se parecen más a coches de gran tamaño que a camiones.
fuente
Si las demás respuestas son buenas, intentaré proporcionar otra perspectiva y abordar la parte intuitiva de la pregunta.
El algoritmo EM (Expectation-Maximization) es una variante de una clase de algoritmos iterativos que utilizan la dualidad
Extracto (el énfasis es mío):
Por lo general, un B dual de un objeto A está relacionado con A de alguna manera que conserva algunos simetría o compatibilidad . Por ejemplo AB = const
Ejemplos de algoritmos iterativos que emplean dualidad (en el sentido anterior) son:
De manera similar, el algoritmo EM también puede verse como dos pasos de maximización duales :
En un algoritmo iterativo que usa dualidad, existe la suposición explícita (o implícita) de un punto de convergencia de equilibrio (o fijo) (para EM, esto se demuestra usando la desigualdad de Jensen)
Entonces, el esquema de tales algoritmos es:
Nota que cuando un algoritmo converge tales a un óptimo (global), se ha encontrado una configuración que es mejor en los dos sentidos (es decir, tanto en el x de dominio / parámetros y las Y de dominio / parámetros). Sin embargo, el algoritmo solo puede encontrar un óptimo local y no el óptimo global .
Yo diría que esta es la descripción intuitiva del esquema del algoritmo.
Para los argumentos y aplicaciones estadísticos, otras respuestas han dado buenas explicaciones (verifique también las referencias en esta respuesta)
fuente
La respuesta aceptada hace referencia al documento Chuong EM , que hace un trabajo decente al explicar EM. También hay un video de youtube que explica el artículo con más detalle.
Para recapitular, aquí está el escenario:
En el caso de la pregunta del primer ensayo, intuitivamente pensaríamos que B lo generó ya que la proporción de caras coincide muy bien con el sesgo de B ... pero ese valor fue solo una suposición, por lo que no podemos estar seguros.
Con eso en mente, me gusta pensar en la solución EM de esta manera:
Esto puede ser una simplificación excesiva (o incluso fundamentalmente incorrecto en algunos niveles), ¡pero espero que esto ayude a un nivel intuitivo!
fuente
EM se utiliza para maximizar la probabilidad de un modelo Q con variables latentes Z.
Es una optimización iterativa.
e-paso: dada la estimación actual de Z calcular la función de loglikelihood esperada
m-paso: encuentra theta que maximiza esta Q
Ejemplo de GMM:
e-step: estimar las asignaciones de etiquetas para cada punto de datos dada la estimación actual del parámetro gmm
m-step: maximizar un nuevo theta dadas las nuevas asignaciones de etiquetas
K-means también es un algoritmo EM y hay muchas animaciones explicativas en K-means.
fuente
Usando el mismo artículo de Do y Batzoglou citado en la respuesta de Zhubarb, implementé EM para ese problema en Java . Los comentarios a su respuesta muestran que el algoritmo se atasca en un óptimo local, lo que también ocurre con mi implementación si los parámetros thetaA y thetaB son los mismos.
A continuación se muestra la salida estándar de mi código, que muestra la convergencia de los parámetros.
A continuación se muestra mi implementación Java de EM para resolver el problema en (Do y Batzoglou, 2008). La parte central de la implementación es el ciclo para ejecutar EM hasta que los parámetros converjan.
A continuación se muestra el código completo.
fuente