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 gaussiana de clúster mediante agrupación en clústeres Soft

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

estima las probabilidades posteriores de pertenencia al clúster y, a continuación, asigna cada punto al clúster correspondiente a la probabilidad máxima posterior.cluster El clustering suave es un método de clustering alternativo que permite que algunos puntos de datos pertenezcan a varios clústeres. Para implementar clústeres blandos:

  1. Asigne una puntuación de pertenencia al clúster a cada punto de datos que describa la forma en que cada punto es similar al arquetipo de cada clúster. Para una mezcla de distribuciones Gaussianas, el arquetipo del clúster es la media del componente correspondiente y el componente puede ser la probabilidad posterior estimada de pertenencia al clúster.

  2. Clasifique los puntos por su puntuación de pertenencia al clúster.

  3. Inspeccione las puntuaciones y determine las pertenencias a clústeres.

Para los algoritmos que utilizan probabilidades posteriores como puntuaciones, un punto de datos es un miembro del clúster correspondiente a la probabilidad máxima posterior. Sin embargo, si hay otros clústeres con las probabilidades posteriores correspondientes que están cerca del máximo, el punto de datos también puede ser un miembro de esos clústeres. Es una buena práctica determinar el umbral en las puntuaciones que producen varias pertenencias a clústeres antes de agrupar.

Este ejemplo se desprende de.Datos de mezcla de clúster gaussiano mediante clustering duro

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

rng(0,'twister')  % 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)];

Ajuste un modelo de mezcla gaussiana de dos componentes (GMM). Dado que hay dos componentes, suponga que cualquier punto de datos con probabilidades posteriores de pertenencia al clúster en el intervalo [0.4, 0.6] puede ser un miembro de ambos clústeres.

gm = fitgmdist(X,2); threshold = [0.4 0.6];

Estime las probabilidades posteriores de los componentes del componente para todos los puntos de datos utilizando el GMM ajustado.gm Estos representan las puntuaciones de pertenencia al clúster.

P = posterior(gm,X);

Para cada clúster, clasifique las puntuaciones de pertenencia de todos los puntos de datos. Para cada clúster, trace cada puntuación de pertenencia de puntos de datos con respecto a su clasificación en relación con todos los demás puntos de datos.

n = size(X,1); [~,order] = sort(P(:,1));  figure plot(1:n,P(order,1),'r-',1:n,P(order,2),'b-') legend({'Cluster 1', 'Cluster 2'}) ylabel('Cluster Membership Score') xlabel('Point Ranking') title('GMM with Full Unshared Covariances')

Aunque una separación clara es difícil de ver en un gráfico de dispersión de los datos, el trazado de las puntuaciones de pertenencia indica que la distribución ajustada hace un buen trabajo al separar los datos en grupos.

Trace los datos y asigne clústeres por la probabilidad máxima posterior. Identifique los puntos que podrían estar en cualquiera de los clústeres.

idx = cluster(gm,X); idxBoth = find(P(:,1)>=threshold(1) & P(:,1)<=threshold(2));  numInBoth = numel(idxBoth)
numInBoth = 7 
 figure gscatter(X(:,1),X(:,2),idx,'rb','+o',5) hold on plot(X(idxBoth,1),X(idxBoth,2),'ko','MarkerSize',10) legend({'Cluster 1','Cluster 2','Both Clusters'},'Location','SouthEast') title('Scatter Plot - GMM with Full Unshared Covariances') hold off

Con el intervalo de umbral de puntuación, siete puntos de datos pueden estar en cualquiera de los clústeres.

La agrupación en clústeres flexible mediante un GMM es similar a la agrupación en clústeres de medios difusos, que también asigna cada punto a cada clúster con una puntuación de pertenencia.k El algoritmo de medias difusas asume que los racimos son aproximadamente de forma esférica, y todo de aproximadamente igual tamaño.k Esto es comparable a una distribución de mezcla gaussiana con una matriz de covarianza única que se comparte entre todos los componentes y es un múltiplo de la matriz de identidad. Por el contrario, permite especificar distintas estructuras de covarianza.gmdistribution El valor predeterminado es estimar una matriz de covarianza independiente y sin restricciones para cada componente. Una opción más restringida, más cercana a-Means, es estimar una matriz de covarianza en diagonal compartida.k

Ajuste un GMM a los datos, pero especifique que los componentes compartan la misma matriz de covarianza diagonal. Esta especificación es similar a la implementación de clustering de medias difusas, pero proporciona más flexibilidad al permitir varianzas desiguales para diferentes variables.k

gmSharedDiag = fitgmdist(X,2,'CovType','Diagonal','SharedCovariance',true');

Estime las probabilidades posteriores de los componentes del componente para todos los puntos de datos utilizando el GMM ajustado.gmSharedDiag Estimar asignaciones de clústeres blandos.

[idxSharedDiag,~,PSharedDiag] = cluster(gmSharedDiag,X); idxBothSharedDiag = find(PSharedDiag(:,1)>=threshold(1) & ...     PSharedDiag(:,1)<=threshold(2));  numInBoth = numel(idxBothSharedDiag)
numInBoth = 5 

Suponiendo que las covarianzas diagonales compartidas entre componentes, cinco puntos de datos podrían estar en cualquiera de los clústeres.

Para cada clúster:

  1. Clasifique las puntuaciones de pertenencia para todos los puntos de datos.

  2. Trace cada puntuación de pertenencia de puntos de datos con respecto a su clasificación en relación con todos los demás puntos de datos.

[~,orderSharedDiag] = sort(PSharedDiag(:,1));  figure plot(1:n,PSharedDiag(orderSharedDiag,1),'r-',...     1:n,PSharedDiag(orderSharedDiag,2),'b-') legend({'Cluster 1' 'Cluster 2'},'Location','NorthEast') ylabel('Cluster Membership Score') xlabel('Point Ranking') title('GMM with Shared Diagonal Component Covariances')

Trace los datos e identifique las asignaciones de clustering duras del análisis de GMM asumiendo las covarianzas diagonales compartidas entre los componentes. Además, identifique los puntos de datos que podrían estar en cualquiera de los clústeres.

figure gscatter(X(:,1),X(:,2),idxSharedDiag,'rb','+o',5) hold on plot(X(idxBothSharedDiag,1),X(idxBothSharedDiag,2),'ko','MarkerSize',10) legend({'Cluster 1','Cluster 2','Both Clusters'},'Location','SouthEast') title('Scatter Plot - GMM with Shared Diagonal Component Covariances') hold off

Consulte también

| |

Temas relacionados