Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Cluster usando el modelo de mezcla gaussiana

Este tema proporciona una introducción a la agrupación en clústeres con un modelo de mezcla gaussiana (GMM) utilizando la funciónStatistics and Machine Learning Toolbox™ cluster, y un ejemplo que muestra los efectos de especificar parámetros opcionales al ajustar el modelo GMM utilizando .fitgmdist

Cómo los modelos de mezcla gaussianas agrupan los datos

Los modelos de mezcla gaussiana (GMM) se utilizan a menudo para la agrupación en clústeres de datos. Puede usar MMG para realizar clústeres o clústeres en datos de consulta.DuroSuave

Para realizar la agrupación en clústeres, el GMM asigna puntos de datos de consulta a los componentes normales multivariantes que maximizan la probabilidad posterior del componente, dados los datos.Duro Es decir, dado un GMM ajustado, asigna datos de consulta al componente que produce la mayor probabilidad posterior.cluster La agrupación en clústeres de hardware asigna un punto de datos a exactamente un clúster. Para ver un ejemplo que muestra cómo ajustar un GMM a los datos, el clúster utilizando el modelo ajustado y estimar las probabilidades posteriores de los componentes, consulte .Cluster Gaussian Mixture Data Using Hard Clustering

Además, puede usar un GMM para realizar una agrupación en clústeres más flexible en datos, denominada (o) agrupación en clústeres.SuaveBorroso Los métodos de agrupación en clústeres flexibles asignan una puntuación a un punto de datos para cada clúster. El valor de la puntuación indica la fuerza de asociación del punto de datos al clúster. A diferencia de los métodos de agrupación en clústeres duros, los métodos de agrupación en clústeres flexibles son flexibles porque pueden asignar un punto de datos a más de un clúster. Cuando se realiza la agrupación en clústeres gMM, la puntuación es la probabilidad posterior. Para obtener un ejemplo de agrupación en clústeres flexibles con un GMM, consulte .Cluster Gaussian Mixture Data Using Soft Clustering

La agrupación en clústeres de GMM puede acomodar clústeres que tienen diferentes tamaños y estructuras de correlación dentro de ellos. Por lo tanto, en ciertas aplicaciones, la agrupación en clústeres de GMM puede ser más adecuada que los métodos, como la agrupación en clústeres -means.k Al igual que muchos métodos de agrupación en clústeres, la agrupación en clústeres de GMM requiere que especifique el número de clústeres antes de ajustar el modelo. El número de clústeres especifica el número de componentes en el GMM.

Para los MMG, siga estas prácticas recomendadas:

  • Considere la estructura de covarianza del componente. Puede especificar matrices de covarianza diagonales o completas, y si todos los componentes tienen la misma matriz de covarianza.

  • Especifique las condiciones iniciales. El algoritmo de expectativa-maximización (EM) se ajusta al GMM. Al igual que en el algoritmo de agrupación en clústeres -means, EM es sensible a las condiciones iniciales y puede converger a un óptimo local.k Puede especificar sus propios valores iniciales para los parámetros, especificar asignaciones de clúster iniciales para puntos de datos o dejar que se seleccionen aleatoriamente, o especificar el uso de la -means++ algoritmok.

  • Implementar la regularización. Por ejemplo, si tiene más predictores que puntos de datos, puede regularizar para la estabilidad de estimación.

Ajuste GMM con diferentes opciones de covarianza y condiciones iniciales

En este ejemplo se exploran los efectos de especificar diferentes opciones para la estructura de covarianza y las condiciones iniciales al realizar la agrupación en clústeres de GMM.

Cargue el conjunto de datos de iris de Fisher. Considere la posibilidad de agrupar las mediciones de sépalo y visualice los datos en 2-D utilizando las mediciones de sépalo.

load fisheriris; X = meas(:,1:2); [n,p] = size(X);  plot(X(:,1),X(:,2),'.','MarkerSize',15); title('Fisher''s Iris Data Set'); xlabel('Sepal length (cm)'); ylabel('Sepal width (cm)');

El número de componentes de un GMM determina el número de subpoblaciones o clústeres.k En esta figura, es difícil determinar si dos, tres o tal vez más componentes gaussianos son apropiados. Un GMM aumenta en complejidad a medida que aumenta.k

Especificar diferentes opciones de estructura de covarianza

Cada componente gaussiano tiene una matriz de covarianza. Geométricamente, la estructura de covarianza determina la forma de un elipsoide de confianza dibujado sobre un clúster. Puede especificar si las matrices de covarianza para todos los componentes son diagonales o completas, y si todos los componentes tienen la misma matriz de covarianza. Cada combinación de especificaciones determina la forma y la orientación de los elipsoides.

Especifique tres componentes GMM y 1000 iteraciones máximas para el algoritmo EM. Para la reproducibilidad, establezca la semilla aleatoria.

rng(3); k = 3; % Number of GMM components options = statset('MaxIter',1000);

Especifique las opciones de estructura de covarianza.

Sigma = {'diagonal','full'}; % Options for covariance matrix type nSigma = numel(Sigma);  SharedCovariance = {true,false}; % Indicator for identical or nonidentical covariance matrices SCtext = {'true','false'}; nSC = numel(SharedCovariance);

Cree una cuadrícula 2D que cubra el plano compuesto por extremos de las mediciones. Usará esta cuadrícula más adelante para dibujar elipsoides de confianza sobre los clústeres.

d = 500; % Grid length x1 = linspace(min(X(:,1))-2, max(X(:,1))+2, d); x2 = linspace(min(X(:,2))-2, max(X(:,2))+2, d); [x1grid,x2grid] = meshgrid(x1,x2); X0 = [x1grid(:) x2grid(:)];

Especifique lo siguiente:

  • Para todas las combinaciones de las opciones de estructura de covarianza, ajuste un GMM con tres componentes.

  • Utilice el GMM instalado para agrupar la cuadrícula 2D.

  • Obtenga la puntuación que especifica un umbral de probabilidad del 99% para cada región de confianza. Esta especificación determina la longitud de los ejes principal y menor de los elipsoides.

  • Colorea cada elipsoide usando un color similar al de su racimo.

threshold = sqrt(chi2inv(0.99,2)); count = 1; for i = 1:nSigma     for j = 1:nSC         gmfit = fitgmdist(X,k,'CovarianceType',Sigma{i}, ...             'SharedCovariance',SharedCovariance{j},'Options',options); % Fitted GMM         clusterX = cluster(gmfit,X); % Cluster index          mahalDist = mahal(gmfit,X0); % Distance from each grid point to each GMM component         % Draw ellipsoids over each GMM component and show clustering result.         subplot(2,2,count);         h1 = gscatter(X(:,1),X(:,2),clusterX);         hold on             for m = 1:k                 idx = mahalDist(:,m)<=threshold;                 Color = h1(m).Color*0.75 - 0.5*(h1(m).Color - 1);                 h2 = plot(X0(idx,1),X0(idx,2),'.','Color',Color,'MarkerSize',1);                 uistack(h2,'bottom');             end             plot(gmfit.mu(:,1),gmfit.mu(:,2),'kx','LineWidth',2,'MarkerSize',10)         title(sprintf('Sigma is %s\nSharedCovariance = %s',Sigma{i},SCtext{j}),'FontSize',8)         legend(h1,{'1','2','3'})         hold off         count = count + 1;     end end

El umbral de probabilidad para la región de confianza determina la longitud de los ejes principal y secundario, y el tipo de covarianza determina la orientación de los ejes. Tenga en cuenta lo siguiente acerca de las opciones para las matrices de covarianza:

  • indican que los predictores no están correlacionados.Matrices de covarianza diagonal Los ejes principal y menor de las elipses son paralelos o perpendiculares a los ejes y.xy Esta especificación aumenta el número total de parámetros

    <math display="block">
    <mrow>
    <mi>p</mi>
    </mrow>
    </math>
    , el número de predictores, para cada componente, pero es más parsimonioso que la especificación de covarianza completa.

  • permiten predictores correlacionados sin restricciones a la orientación de las elipses en relación con los ejes y.Matrices de covarianza completasxy Cada componente aumenta el número total de parámetros en

    <math display="block">
    <mrow>
    <mi>p</mi>
    <mo stretchy="false">(</mo>
    <mi>p</mi>
    <mo>+</mo>
    <mn>1</mn>
    <mo stretchy="false">)</mo>
    <mo>/</mo>
    <mn>2</mn>
    </mrow>
    </math>
    , pero captura la estructura de correlación entre los predictores. Esta especificación puede causar un sobreajuste.

  • indicar que todos los componentes tienen la misma matriz de covarianza.Matrices de covarianza compartidas Todas las elipses tienen el mismo tamaño y tienen la misma orientación. Esta especificación es más parsimoniosa que la especificación no compartida porque el número total de parámetros aumenta en el número de parámetros de covarianza para un solo componente.

  • indicar que cada componente tiene su propia matriz de covarianza.Matrices de covarianza no compartidas El tamaño y la orientación de todas las elipses pueden diferir. Esta especificación aumenta el número de parámetros por veces el número de parámetros de covarianza para un componente, pero puede capturar diferencias de covarianza entre componentes.k

La figura también muestra que no siempre conserva el orden del clúster.cluster Si agrupa varios modelos ajustados, puede asignar etiquetas de clúster diferentes para componentes similares.gmdistributioncluster

Especificar diferentes condiciones iniciales

El algoritmo que ajusta un GMM a los datos puede ser sensible a las condiciones iniciales. Para ilustrar esta sensibilidad, ajuste cuatro MMG diferentes de la siguiente manera:

  1. Para el primer GMM, asigne la mayoría de los puntos de datos al primer clúster.

  2. Para el segundo GMM, asigne aleatoriamente puntos de datos a clústeres.

  3. Para el tercer GMM, realice otra asignación aleatoria de puntos de datos a clústeres.

  4. Para el cuarto GMM, utilice -means++ para obtener los centros de clúster iniciales.k

initialCond1 = [ones(n-8,1); [2; 2; 2; 2]; [3; 3; 3; 3]]; % For the first GMM initialCond2 = randsample(1:k,n,true); % For the second GMM initialCond3 = randsample(1:k,n,true); % For the third GMM initialCond4 = 'plus'; % For the fourth GMM cluster0 = {initialCond1; initialCond2; initialCond3; initialCond4};

Para todas las instancias, utilice 3 componentes, matrices de covarianza no compartidas y completas, las mismas proporciones de mezcla iniciales y las mismas matrices de covarianza iniciales.k Para mayor estabilidad al intentar diferentes conjuntos de valores iniciales, aumente el número de iteraciones del algoritmo EM. Además, dibuje elipsoides de confianza sobre los clústeres.

converged = nan(4,1);  for j = 1:4     gmfit = fitgmdist(X,k,'CovarianceType','full', ...         'SharedCovariance',false,'Start',cluster0{j}, ...         'Options',options);     clusterX = cluster(gmfit,X); % Cluster index      mahalDist = mahal(gmfit,X0); % Distance from each grid point to each GMM component     % Draw ellipsoids over each GMM component and show clustering result.     subplot(2,2,j);     h1 = gscatter(X(:,1),X(:,2),clusterX); % Distance from each grid point to each GMM component     hold on;     nK = numel(unique(clusterX));     for m = 1:nK         idx = mahalDist(:,m)<=threshold;         Color = h1(m).Color*0.75 + -0.5*(h1(m).Color - 1);         h2 = plot(X0(idx,1),X0(idx,2),'.','Color',Color,'MarkerSize',1);         uistack(h2,'bottom');     end  plot(gmfit.mu(:,1),gmfit.mu(:,2),'kx','LineWidth',2,'MarkerSize',10)     legend(h1,{'1','2','3'});     hold off     converged(j) = gmfit.Converged; % Indicator for convergence end

sum(converged)
ans = 4 

Todos los algoritmos convergieron. Cada asignación de clúster inicial para los puntos de datos conduce a una asignación de clúster ajustada diferente. Puede especificar un entero positivo para el argumento de par nombre-valor , que ejecuta el algoritmo el número especificado de veces.'Replicates' Posteriormente, elige el ajuste que produce la mayor probabilidad.fitgmdist

Cuándo regularizar

A veces, durante una iteración del algoritmo EM, una matriz de covarianza ajustada puede estar mal condicionada, lo que significa que la probabilidad está escapando hasta el infinito. Este problema puede ocurrir si existe una o más de las siguientes condiciones:

  • Tiene más predictores que puntos de datos.

  • El empalme se especifica con demasiados componentes.

  • Las variables están altamente correlacionadas.

Para superar este problema, puede especificar un número pequeño y positivo mediante el argumento de par nombre-valor. agrega este número a los elementos diagonales de todas las matrices de covarianza, lo que garantiza que todas las matrices sean definidas positivamente.'RegularizationValue'fitgmdist Regularización puede reducir el valor máximo de probabilidad.

Estadísticas de ajuste del modelo

En la mayoría de las aplicaciones, se desconoce el número de componentes y la estructura de covarianza adecuada.k Una forma de ajustar un GMM es comparando los criterios de información. Dos criterios de información populares son el Criterio de Información De Akaike (AIC) y el Criterio de Información Bayesiana (BIC).

Tanto el AIC como el BIC toman la probabilidad de registro negativa optimizada y luego la penalizan con el número de parámetros en el modelo (la complejidad del modelo). Sin embargo, el BIC penaliza la complejidad más severamente que el AIC. Por lo tanto, el AIC tiende a elegir modelos más complejos que podrían sobreajustarse, y el BIC tiende a elegir modelos más simples que podrían subajustarse. Una buena práctica es mirar ambos criterios al evaluar un modelo. Los valores más bajos de AIC o BIC indican modelos de mejor ajuste. Además, asegúrese de que las opciones y la estructura de matriz de covarianza son adecuadas para la aplicación. almacena el AIC y el BIC de los objetos de modelo ajustados en las propiedades y .kfitgmdistgmdistributionAICBIC Puede tener acceso a estas propiedades mediante la notación de puntos. Para obtener un ejemplo que muestra cómo elegir los parámetros adecuados, consulte .Tune Gaussian Mixture Models

Consulte también

| |

Temas relacionados