Realiza clustering basado en modelos utilizando el algoritmo EM (Expectation-Maximization). Esta acción ajusta modelos de mezcla gaussiana a los datos, permitiendo la identificación de subgrupos o clústeres latentes. Es útil para la segmentación de datos, la detección de anomalías y el análisis exploratorio de datos.
| Parámetro | Descripción |
|---|---|
| table | Especifica la tabla de datos de entrada que contiene las variables a analizar. |
| model | Define el modelo a ajustar, incluyendo las variables de análisis (efectos). |
| effects | Dentro de 'model', especifica las variables numéricas que se utilizarán para el clustering. |
| nClusters | Especifica el número de clústeres gaussianos a ajustar. Puede ser un solo valor o una lista de valores para probar múltiples modelos. |
| covStruct | Especifica el/los modelo(s) de estructura de covarianza a utilizar. 'EEE' (elipsoidal, igual volumen, igual forma) es una opción común. |
| criterion | Especifica el criterio de selección del modelo (por ejemplo, BIC, AIC) para elegir el mejor modelo cuando se prueban múltiples configuraciones. |
| noise | Especifica si se debe incluir un clúster de ruido para capturar valores atípicos que no pertenecen a ningún clúster principal. |
| seed | Especifica la semilla aleatoria para la reproducibilidad, especialmente cuando se utiliza un método de inicialización aleatorio. |
| output | Define la tabla de salida donde se almacenarán los resultados por observación, como las probabilidades de pertenencia al clúster. |
| store | Guarda el modelo ajustado en una tabla de almacenamiento de CAS para su uso posterior en la puntuación de nuevos datos con la acción mbcScore. |
| maxIter | Establece el número máximo de iteraciones para el algoritmo EM. |
| emEpsilon | Define el criterio de convergencia para el logaritmo de la verosimilitud en el algoritmo EM. |
Este bloque de código crea una tabla en CAS llamada 'sample_data' con tres variables numéricas. Estos datos se utilizarán para realizar el clustering basado en modelos.
| 1 | DATA mycas.sample_data; |
| 2 | DO i = 1 to 100; |
| 3 | x1 = rand('NORMAL', 10, 2); |
| 4 | x2 = rand('NORMAL', 20, 5); |
| 5 | x3 = rand('NORMAL', 5, 1); |
| 6 | OUTPUT; |
| 7 | END; |
| 8 | DO i = 1 to 100; |
| 9 | x1 = rand('NORMAL', 30, 3); |
| 10 | x2 = rand('NORMAL', 10, 2); |
| 11 | x3 = rand('NORMAL', 15, 3); |
| 12 | OUTPUT; |
| 13 | END; |
| 14 | RUN; |
Este ejemplo realiza un clustering basado en modelos en la tabla 'sample_data', buscando 3 clústeres con una estructura de covarianza EEE (elipsoidal, igual volumen y forma).
| 1 | PROC CAS; |
| 2 | mbc.mbcFit RESULT=res / |
| 3 | TABLE={name='sample_data'}, |
| 4 | model={effects={{vars={'x1', 'x2', 'x3'}}}, |
| 5 | nClusters=3, |
| 6 | covStruct='EEE', |
| 7 | seed=12345; |
| 8 | RUN; |
| 9 | PRINT res; |
| 10 | QUIT; |
Este ejemplo prueba un rango de número de clústeres (de 2 a 4) y múltiples estructuras de covarianza (EEE, EEV, VVV). Utiliza el Criterio de Información Bayesiano (BIC) para seleccionar el mejor modelo. El modelo final se guarda en una tabla de almacenamiento llamada 'mbc_store' para su uso posterior en la puntuación.
| 1 | PROC CAS; |
| 2 | mbc.mbcFit RESULT=res / |
| 3 | TABLE={name='sample_data'}, |
| 4 | model={effects={{vars={'x1', 'x2', 'x3'}}}, |
| 5 | nClusters={2, 3, 4}, |
| 6 | covStruct={'EEE', 'EEV', 'VVV'}, |
| 7 | criterion='BIC', |
| 8 | noise='Y', |
| 9 | seed=12345, |
| 10 | OUTPUT={casOut={name='mbc_output', replace=true}, copyVars={'x1', 'x2', 'x3'}, maxpost='Cluster'}, |
| 11 | store={name='mbc_store', replace=true}; |
| 12 | RUN; |
| 13 | PRINT res.ModelInfo; |
| 14 | PRINT res.TopModels; |
| 15 | QUIT; |