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.

Datos de mezcla de clúster gaussiano mediante clustering duro

En este ejemplo se muestra cómo implementar la agrupación en clústeres duros en datos simulados a partir de una mezcla de distribuciones Gaussianas.

Los modelos de mezcla gaussiana se pueden utilizar para agrupar datos, al darse cuenta de que los componentes normales multivariados del modelo ajustado pueden representar clústeres.

Simular datos de una mezcla de distribuciones Gaussianas

Simular datos a partir de una mezcla de dos distribuciones Gaussianas bivariadas utilizando.mvnrnd

rng('default')  % For reproducibility mu1 = [1 2]; sigma1 = [3 .2; .2 2]; mu2 = [-1 -2]; sigma2 = [2 0; 0 1]; X = [mvnrnd(mu1,sigma1,200); mvnrnd(mu2,sigma2,100)]; n = size(X,1);  figure scatter(X(:,1),X(:,2),10,'ko')

Ajuste los datos simulados a un modelo de mezcla gaussiana

Ajuste un modelo de mezcla gaussiana de dos componentes (GMM). Aquí, usted conoce el número correcto de componentes a utilizar. En la práctica, con datos reales, esta decisión requeriría comparar modelos con diferentes números de componentes. Además, solicite Mostrar la iteración final de la rutina de ajuste de expectativa-maximización.

options = statset('Display','final');  gm = fitgmdist(X,2,'Options',options)
26 iterations, log-likelihood = -1210.59  gm =   Gaussian mixture distribution with 2 components in 2 dimensions Component 1: Mixing proportion: 0.629514 Mean:    1.0756    2.0421  Component 2: Mixing proportion: 0.370486 Mean:   -0.8296   -1.8488 

Trace los contornos de densidad de probabilidad estimados para la distribución de mezcla de dos componentes. Los dos componentes normales bivariados se superponen, pero sus picos son distintos. Esto sugiere que los datos podrían dividirse razonablemente en dos clústeres.

hold on gmPDF = @(x,y)reshape(pdf(gm,[x(:) y(:)]),size(x)); fcontour(gmPDF,[-8 6]) title('Scatter Plot and Fitted GMM Contour') hold off

Agrupar los datos utilizando el GMM ajustado

implementa "agrupación en clústeres duros", un método que asigna cada punto de datos a exactamente un clúster.cluster Para GMM, asigna cada punto a uno de los dos componentes de mezcla en el GMM.cluster El centro de cada cluster es la media del componente de mezcla correspondiente. Para obtener más información sobre la "agrupación en clústeres blandos", consulte.Datos de mezcla gaussiana de clúster mediante agrupación en clústeres Soft

Particionar los datos en clústeres pasando el GMM ajustado y los datos a.cluster

idx = cluster(gm,X); cluster1 = (idx == 1); % |1| for cluster 1 membership cluster2 = (idx == 2); % |2| for cluster 2 membership  figure gscatter(X(:,1),X(:,2),idx,'rb','+o') legend('Cluster 1','Cluster 2','Location','best')

Cada cluster corresponde a uno de los componentes normales bivariados en la distribución de la mezcla. asigna datos a clústeres en función de una puntuación de pertenencia al clúster.cluster Cada puntuación de pertenencia al clúster es la probabilidad posterior estimada de que el punto de datos provenía del componente correspondiente. asigna cada punto al componente de mezcla correspondiente a la probabilidad posterior más alta.cluster

Puede estimar las probabilidades posteriores de pertenencia al clúster pasando el GMM ajustado y los datos a:

  • posterior

  • , y solicitar devolver el tercer argumento de salidacluster

Estimar probabilidades posteriores de pertenencia al clúster

Estimar y trazar la probabilidad posterior del primer componente para cada punto.

P = posterior(gm,X);   figure scatter(X(cluster1,1),X(cluster1,2),10,P(cluster1,1),'+') hold on scatter(X(cluster2,1),X(cluster2,2),10,P(cluster2,1),'o') hold off clrmap = jet(80); colormap(clrmap(9:72,:)) ylabel(colorbar,'Component 1 Posterior Probability') legend('Cluster 1','Cluster 2','Location','best') title('Scatter Plot and Cluster 1 Posterior Probabilities')

es una matriz de probabilidades posteriores de pertenencia a clústeres de-by-2.Pn La primera columna contiene las probabilidades para el clúster 1 y la segunda columna corresponde al clúster 2.

Asignar nuevos datos a los clústeres

También puede utilizar el método para asignar nuevos puntos de datos a los componentes de mezcla encontrados en los datos originales.cluster

Simular nuevos datos a partir de una mezcla de distribuciones Gaussianas. En lugar de utilizar, puede crear un GMM con el verdadero componente de mezcla medios y desviaciones estándar utilizando, y luego pasar el GMM para simular datos.mvnrndgmdistributionrandom

Mu = [mu1; mu2];  Sigma = cat(3,sigma1,sigma2);  p = [0.75 0.25]; % Mixing proportions  gmTrue = gmdistribution(Mu,Sigma,p); X0 = random(gmTrue,75);

Asigne clústeres a los nuevos datos por pasar el GMM ajustado () y los nuevos datos a.gmcluster Solicitar probabilidades posteriores de pertenencia al clúster.

[idx0,~,P0] = cluster(gm,X0);  figure fcontour(gmPDF,[min(X0(:,1)) max(X0(:,1)) min(X0(:,2)) max(X0(:,2))]) hold on gscatter(X0(:,1),X0(:,2),idx0,'rb','+o') legend('Fitted GMM Contour','Cluster 1','Cluster 2','Location','best') title('New Data Cluster Assignments') hold off

Para proporcionar resultados significativos al agrupar nuevos datos, debe venir de la misma población que, los datos originales utilizados para crear la distribución de la mezcla.clusterX0X En particular, al calcular las probabilidades posteriores para, y utilizar las probabilidades de mezcla estimadas.X0clusterposterior

Consulte también

| | | |

Temas relacionados