Modelo de mezcla gaussiana

Supongamos que hay un conjunto de puntos de datos que deben agruparse en varias partes o grupos en función de su similitud. En el aprendizaje automático, esto se conoce como agrupamiento.
Hay varios métodos disponibles para la agrupación como: 
 

En este artículo, se discutirá el modelo de mezcla gaussiana.
 

Distribución normal o gaussiana

En la vida real, muchos conjuntos de datos se pueden modelar mediante distribución gaussiana (univariante o multivariante). Por lo tanto, es bastante natural e intuitivo suponer que los grupos provienen de diferentes distribuciones gaussianas. O dicho de otro modo, se intenta modelar el conjunto de datos como una mezcla de varias Distribuciones Gaussianas. Esta es la idea central de este modelo.
En una dimensión, la función de densidad de probabilidad de una distribución gaussiana viene dada por
 

G(X\h|\mu, \sigma) = \frac{1}{{\sigma \sqrt {2\pi } }}e^{{{ - \left( {x - \mu } \right)^2 } \mathord{\left/ {\vphantom {{ - \left( {x - \mu } \right)^2 } {2\sigma ^2 }}} \right. \kern-\nulldelimiterspace} {2\sigma ^2 }}}
where $\mu$   and $\sigma^2$   are respectively mean and variance of the distribution.
For Multivariate ( let us say d-variate) Gaussian Distribution, the probability density function is given by 
 

G(X|\mu, \Sigma)= \frac{1}{\sqrt{(2\pi)|\boldsymbol\Sigma|}} \exp\left(-\frac{1}{2}({X}-{\mu})^T{\boldsymbol\Sigma}^{-1}({X}-{\mu}) \right)
Here $\mu$   is a d dimensional vector denoting the mean of the distribution and $\Sigma$   is the d X d covariance matrix.
 

Modelo de mezcla gaussiana

Supongamos que hay K conglomerados (en aras de la simplicidad aquí se supone que se conoce el número de conglomerados y es K). Así  \mu   \Sigma   también se estima para cada k. Si hubiera sido una sola distribución, se habrían estimado por el método de máxima verosimilitud . Pero dado que hay K tales grupos y la densidad de probabilidad se define como una función lineal de las densidades de todas estas K distribuciones, es decir
 

p(X) =\sum_{k=1}^K \pi_k G(X|\mu_k, \Sigma_k)

donde  \pi_k   es el coeficiente de mezcla para la k-ésima distribución.
Para estimar los parámetros por el método de máxima probabilidad logarítmica, calcule p(X| \mu   \Sigma   \pi   ).
 

ln\hspace{0.25 cm} {p( X|\mu, \Sigma, \pi)} \newline =\sum_{i=1}^N p(X_i) \newline =\sum_{i=1}^N ln {\sum_{k=1}^K \pi_k G(X_i | \mu_k, \Sigma_k)}

Ahora defina una variable aleatoria  \gamma_k(X)   tal que  \gamma_k(X)   =p(k|X).
Del teorema de Bayes, 
 

\gamma_k(X) \newline\newline=\frac{p(X|k)p(k)}{\sum_{k=1}^K p(k)p(X|k)} \newline\newline=\frac{p(X|k)\pi_k}{\sum_{k=1}^K \pi_k p(X|k)}

Ahora, para que la función de verosimilitud logarítmica sea máxima, su derivada de  p(X|\mu, \Sigma, \pi)   con respecto a  \mu   \Sigma   \pi   debe ser cero. Igualando la derivada de  p(X|\mu, \Sigma, \pi)   con respecto  \mu   a cero y reordenando los términos, 
 

\mu_k=\frac{\sum_{n=1}^N \gamma_k(x_n)x_n}{\sum_{n=1}^N \gamma_k(x_n)}

Del mismo modo, tomando la derivada con respecto a  \Sigma   y pi respectivamente, se pueden obtener las siguientes expresiones.
 

\Sigma_k=\frac{\sum_{n=1}^N \gamma_k(x_n)(x_n-\mu_k)(x_n-\mu_k)^T}{\sum{n=1}^N \gamma_k(x_n)} \newline
And 
\pi_k=\frac{1}{N} \sum_{n=1}^N \gamma_k(x_n)

Nota: \sum_{n=1}^N\gamma_k(x_n)   denota el número total de puntos de muestra en el grupo k-ésimo. Aquí se supone que hay un número total de N de muestras y cada muestra que contiene d características se denota por  x_i   .
Entonces se puede ver claramente que los parámetros no se pueden estimar en forma cerrada. Aquí es donde el algoritmo de maximización de expectativas es beneficioso.
 

Algoritmo de maximización de expectativas (EM)

El algoritmo Expectation-Maximization (EM) es una forma iterativa de encontrar estimaciones de máxima verosimilitud para los parámetros del modelo cuando los datos están incompletos o tienen algunos puntos de datos faltantes o tienen algunas variables ocultas. EM elige algunos valores aleatorios para los puntos de datos faltantes y estima un nuevo conjunto de datos. Estos nuevos valores luego se usan recursivamente para estimar una mejor primera cita, completando los puntos que faltan, hasta que los valores se fijan. 
Estos son los dos pasos básicos del algoritmo EM, a saber, Paso E o Paso de expectativa o Paso de estimación y Paso M o Paso de maximización .
 

  • Paso de estimación: 
    • initialize  \mu_k   \Sigma_k   \pi_k   por algunos valores aleatorios, o por K significa resultados de agrupamiento o por resultados de agrupamiento jerárquico.
    • Luego, para esos valores de parámetros dados, estime el valor de las variables latentes (es decir,  \gamma_k   )
  • Paso de maximización: 
    • Actualice el valor de los parámetros (es decir  \mu_k   \Sigma_k   y \pi_k   ) calculados utilizando el método ML.

Algoritmo: 
 

  • Inicializar la media  \mu_k[Tex],[/Tex]
    the covariance matrix[Tex]\Sigma_k[/Tex] and
    the mixing coefficients[Tex]\pi_k[/Tex]
    *** QuickLaTeX no puede compilar la fórmula:
     
    
    *** Mensaje de error:
    Error: nada que mostrar, la fórmula está vacía
    

    by some random values. (or other values)

  • Calcule los \gamma_kvalores de [Tex] para todos los k. [/Tex]
  • Again Estimate all the parameters
    using the current[Tex]\gamma_k[/Tex]values.
  • Calcule la función de log-verosimilitud.
  • Pon algún criterio de convergencia
  • Si el valor de log-verosimilitud converge a algún valor (o si todos los parámetros convergen a algún valor), entonces deténgase , de lo contrario regrese al Paso 2 .
*** QuickLaTeX cannot compile formula:
 

*** Error message:
Error: Nothing to show, formula is empty

Ejemplo:  En este ejemplo, se toma el conjunto de datos IRIS . En Python, hay una clase GaussianMixture para implementar GMM.
 

Nota: es posible que este código no se ejecute en un compilador en línea. Utilice un ide fuera de línea.
 

  • Cargue el conjunto de datos de iris desde el paquete de conjuntos de datos. Para simplificar las cosas, tome las únicas dos primeras columnas (es decir, longitud y ancho del sépalo, respectivamente).
  • Ahora trace el conjunto de datos.
     

Python3

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from pandas import DataFrame
from sklearn import datasets
from sklearn.mixture import GaussianMixture
 
# load the iris dataset
iris = datasets.load_iris()
 
# select first two columns
X = iris.data[:, :2]
 
# turn it into a dataframe
d = pd.DataFrame(X)
 
# plot the data
plt.scatter(d[0], d[1])

  • Ahora ajusta los datos como una mezcla de 3 gaussianas.
  • Luego haga el agrupamiento, es decir, asigne una etiqueta a cada observación. Además, encuentre el número de iteraciones necesarias para que la función de verosimilitud logarítmica converja y el valor de verosimilitud logarítmica convergente.

Python3

gmm = GaussianMixture(n_components = 3)
 
# Fit the GMM model for the dataset
# which expresses the dataset as a
# mixture of 3 Gaussian Distribution
gmm.fit(d)
 
# Assign a label to each sample
labels = gmm.predict(d)
d['labels']= labels
d0 = d[d['labels']== 0]
d1 = d[d['labels']== 1]
d2 = d[d['labels']== 2]
 
# plot three clusters in same plot
plt.scatter(d0[0], d0[1], c ='r')
plt.scatter(d1[0], d1[1], c ='yellow')
plt.scatter(d2[0], d2[1], c ='g')

  • Imprima el valor de verosimilitud logarítmica convergente y no. de iteraciones necesarias para que el modelo converja

Python3

# print the converged log-likelihood value
print(gmm.lower_bound_)
 
# print the number of iterations needed
# for the log-likelihood value to converge
print(gmm.n_iter_)</div>

  • Por lo tanto, se necesitaron 7 iteraciones para que el logaritmo de verosimilitud convergiera. Si se realizan más iteraciones, no se puede observar ningún cambio apreciable en el valor de probabilidad logarítmica.

Publicación traducida automáticamente

Artículo escrito por tufan_gupta2000 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *