Cómo utilizar Matlab para realizar análisis de conglomerados tipo R
Contenido
Demostrar cómo utilizar MATLAB para el análisis de conglomerados
Generar un mapa de distribución bidimensional aleatorio con tres centros
K - Agrupación de medias
Agrupación jerárquica
Revisión del método K-medias
Mostrar resultados de clasificación
Uso del modelo de distribución de mezcla gaussiana Análisis de conglomerados p>
Encuentre el número óptimo de categorías mediante el criterio AIC
Demuestre cómo usar MATLAB para el análisis de conglomerados
Utilice agrupamiento jerárquico y agrupamiento jerárquico respectivamente, agrupamiento de K-medias y modelo de mezcla gaussiana y luego compare los resultados de los tres
Genere un gráfico de distribución bidimensional aleatorio con tres centros
Utilice distribución gaussiana (normal)
p>
Generar aleatoriamente 3 centros y desviaciones estándar
s = rng(5,'v5normal');
mu = round((rand(3,2)- 0.5 )*19) 1;
sigma = round(rand(3, 2)*40)/ 10 1;
X = [mvnrnd(mu(1,:), sigma (1,:),200); ...
mvnrnd(mu(2,:), sigma(2,:), 300 ...
mvnrnd ( mu(3,:),sigma(3,:),400)];
Dibujar un gráfico
P1 = figura; clf;
dispersión( X(:,1),X(:,2),10,'ro');
title('Gráfico de dispersión de muestra de investigación')
Clase de agrupamiento de media K
Utilice la distancia euclidiana tradicional para separar distancias en dos clases
[cidx2, cmeans2, sumd2, D2] = kmeans(X, 2, 'dist', 'sqEuclidean') ; p>
P2 = figura; clf;
[silh2, h2] = silueta(X, cidx2, 'sqeuclidean');
Visto desde la parte superior de la figura de silueta, no. 2 tienen un mejor rendimiento, pero algunos datos de la categoría 1 tienen un rendimiento deficiente. Un número importante de puntos están por debajo de 0,8.
Agrupación jerárquica
eucD = pdist(X,'euclidean');
clustTreeEuc = linkage(eucD,'average');
cophenet(clustTreeEuc, eucD);
P3 = figura; clf;
[h, nodos] = dendrograma(clustTreeEuc, 20);
conjunto (gca,'TickDir','out','TickLength',[.002 0],'XTickLabel',[]);
Puedes elegir el número de nodos que se muestran en el dendrograma, aquí elige 20 .
Los resultados muestran que los datos se pueden dividir en tres categorías
Revisión del método K-means
Cambiar los datos en tres categorías
[cidx3, cmeans3, sumd3 , D3] = kmeans(X, 3, 'dist', 'sqEuclidean');
P4 = figura;
[silh3, h3] = silueta(X, cidx3 , 'sqeuclidean');
Los resultados que se muestran en la figura son una ligera mejora con respecto a los resultados anteriores.
Mostrar resultados de clasificación
P5 = figura; clf
ptsymb = {'bo', 'ro', 'go', ', mo', ' c '};
MarkFace = {[0 0 1], [.8 0 0], [0 .5 0]}; para i =1:3
clust = find(cidx3 == i
plot(X(clust, 1), X(clust, 2), ptsymb{i} , 'MarkerSize', 3, 'MarkerFace', MarkFace{i}, 'MarkerEdgeColor', 'negro'
plot(cmeans3(i, 1), cmeans3(i, 2), ptsymb{); i}, 'MarkerSize', 10, 'MarkerFace', MarkFace{i});
end
Cerrar
Usar el modelo de distribución de mezcla gaussiana para el análisis de agrupamiento.
Muestra los resultados de Contour usando el mapa de distribución, el mapa de calor y el mapa de probabilidad respectivamente
Contour
options = statset('Display', 'off');
gm = gmdistribution.fit(X, 3, 'Opciones', opciones);
P6 = figura; clf
dispersión(X(:, 1) , [-15 15], [-15 10]);
esperar
P7 = figura; clf
dispersión(X(:, 1) , X(:2),10,'ro');
espera
ezsurf(@(x,y) pdf(gm,[x,y]),[ - 15 15], [-15 10]);
mantener desactivado
vista(33, 24)
Termograma
clúster1 = (cidx3 == 1);
cluster3 = (cidx3 == 2);
Por observación, el segundo tipo de método K-medias es el tercer tipo de gm p >
cluster2 = (cidx3 == 3);
Calcular probabilidad de clasificación
P = posterior(gm,X);
P8 = figura ; clf
plot3(X(cluster1, 1), X(cluster1, 2), P(cluster1, 1), 'r.'
cuadrícula activada; espera
plot3(X(cluster2, 1), X(cluster2, 2), P(cluster2, 2), .'bo')
plot3(X(cluster3, 1), , P(cluster3, 3), 'g*')
legend('Clase 1', 'Clase 2', 'Clase 3', 'Ubicación', 'NW')
clrmap = jet (80); mapa de colores(clrmap(9:72,:))
p>
ylabel(colorbar,'Component 1 Posterior Probability')
view(-45, 20);
El valor de probabilidad del componente puntual de la categoría 3 es bajo y puede ser necesario Se analizan otros datos.
Gráfico de probabilidad
P9 = figura; clf
[~, orden] = sort(P(:, 1));
plot(1:tamaño(X,1),P(orden,1),'r-',1:tamaño(X,1),P(orden,2),'b-',1:tamaño(X ,1),P(order,3),'y-');
legend({'Puntuación del grupo 1' 'Puntuación del grupo 2' 'Puntuación del grupo 3'}, 'ubicación', 'NW ');
ylabel('Puntuación de membresía del clúster');
xlabel('Ranking de puntos');
Encontrar el número óptimo de clasificaciones a través del AIC. estándar
La mayor ventaja del método de modelado de mezclas gaussianas es que proporciona un estándar para el efecto de clasificación
AIC = zeros(1, 4);
NlogL = AIC;
GM = celda(1, 4);
para k = 1:4
GM{k} = gmdistribution.fit(X , k);
AIC(k) = GM{k}.NlogL;
Fin
[minAIC, numComponents] = min(AIC); /p>
Fin
p>
Según el estándar AIC, el número óptimo de categorías es: 3 y el valor AIC correspondiente es: 8647.63
Posdata
(1) pluskid señala que el valor inicial del algoritmo K-means fue significativo para los resultados, pero no se encontraron resultados similares en tiempo de ejecución. Quizás Mathworks optimizó el algoritmo. Examinaré más de cerca el código cuando tenga la oportunidad y publicaré los resultados.
Reimpreso únicamente como referencia, los derechos de autor pertenecen al autor original.