Modificación del algoritmo EM para resolver el problema de la agrupación en clústeres con valores atípicos

El principal problema del análisis de conglomerados de datos prácticos es la presencia de valores atípicos. La mayoría de los métodos de agrupamiento existentes no tienen en cuenta su existencia, por lo que en la composición de algunos conglomerados se incluyen observaciones claramente anómalas, que pueden desplazar gravemente sus centros y afectar la calidad de la clasificación. Por supuesto, primero puede verificar los datos iniciales en busca de valores atípicos, eliminarlos, etc., pero luego la tarea se convertirá en una de dos etapas, pero nos gustaría que fuera "todo a la vez".





Uno de los enfoques para resolver este problema (para que el método de agrupación en clústeres filtre automáticamente los valores atípicos) se denominó "estimador de máxima verosimilitud inapropiada robusto optimizado" y se describió en este artículo de 2017 ( http://dx.doi.org/10.1080/ 01621459.2015. 1100996 ), y recientemente recibió una implementación en R. Hablemos de ello.





Un momento de teoría

En resumen, la agrupación mediante algoritmos EM se basa en la suposición de que las agrupaciones específicas tienen una forma cercana a la forma de una distribución normal multivariada. Entonces, el problema de la agrupación se puede considerar como el problema de separar los componentes de la mezcla, y las agrupaciones se determinan según la probabilidad de caer en uno u otro componente.





La actualización matemática del algoritmo clásico es que se asume una suposición ligeramente diferente. Se cree que la función de probabilidad de la distribución de puntos es la suma de una mezcla de gaussianos y una distribución uniforme de puntos de ruido (se supone que los valores atípicos se distribuyen uniformemente), es decir





δ - densidad constante inadecuada (densidad de ruido)
δ - densidad constante inadecuada (densidad de ruido)

Esto conduce a alguna complicación de la solución del problema de optimización, que ahora parece una solución al problema máximo.





pero con tales restricciones





Este problema de optimización (especialmente con condiciones impuestas sobre la relación de valores propios) no siempre tiene solución. Los autores son honestos al respecto, pero también afirman que su algoritmo es bastante fácil de manejar con grupos de una forma bastante compleja. Vamos a revisar





Experimentar

- , .





library(ggplot2)
#   
set.seed(739)
n <- 500 # numer of points
y <- abs(c(rnorm(n,5,2)))
x <- c(rnorm(n,5,1))/sqrt(y)
class<-rep(1,n)
dat1 <- as.data.frame(cbind(x,y,class)) #   - -    
y <- c(rnorm(n,8,0.4))
x <- rlnorm(n, meanlog = log(7), sdlog = 0.2) 
class<-rep(2,n)
dat2 <- as.data.frame(cbind(x,y,class)) #   -       
y <- c(runif(n, min = 2, max = 7))
x <- c(rnorm(n,8,0.4))
class<-rep(3,n)
dat3 <- as.data.frame(cbind(x,y,class)) #   -  
y <- c(runif(n/10, min = 0, max = 10))
x <- c(runif(n/10, min = 0, max = 10))
class<-rep(0,n/10)
dat4 <- as.data.frame(cbind(x,y,class)) # 
dat <- rbind(dat1,dat2,dat3,dat4)
colnames(dat) <- c("x","y", "class")
dat$class <- as.factor(dat$class)
dat_test <- as.data.frame(dat)
p_base <- ggplot(dat,aes(x=x,y=y,color=class)) + geom_point()
ggExtra::ggMarginal(p_base, groupColour = TRUE, groupFill = TRUE)
      
      







En adelante, la etiqueta "0" denota observaciones definidas como ruido
"0" ,

otrimle , , . 2 5, .





library(otrimle)
clus <- otrimleg(dat[,c(1,2)], G=2:5, monitor=1) #  monitor    
      
      



-





, ( , , , , iloglik . , , 4 5 3 - ). . , ,





clus$solution
      
      







Noise - , . ( 1,2,10 ) - 5 .





clus_2 <-otrimle(dat[,c(1,2)], G = 5, npr.max = 0.01, erc = 20, monitor = TRUE)
# npr.max -     
# erc -  /  
clus_2$code
clus_2$flag
      
      



clus_2$code 0, , , clus_2$code = 1, , EM- ( ), clus_2$code = 2, , .





clus_2$flag .





clus_2$flag = 1,





, , 0.





clus_2$flag = 2,





clus_2$flag = 3,





clus_2$flag = 4,





(clus_2$code = 2, clus_2$flag = 4), .





clus_2$mean #  
head(clus_2$tau) #    
head(clus_2$cluster) #   
      
      



. , .





Izquierda - partición verdadera, derecha - propuesta por el algoritmo para el caso de 5 clústeres
- , - 5
Izquierda - partición verdadera, derecha - propuesta por el algoritmo para el caso de 4 clústeres
- , - 4
Izquierda - partición verdadera, derecha - propuesta por el algoritmo para el caso de 3 clústeres
- , - 3
Izquierda - partición verdadera, derecha - propuesta por el algoritmo para el caso de 2 clústeres
- , - 2

Se puede observar que incluso si uno adivina con el número de clusters (3), entonces los resultados del clustering, de hecho, serán muy diferentes de los verdaderos, y las particiones con un número mayor de clústeres que en la realidad. Esto se debió a la forma no elíptica de los grupos, pero en general el algoritmo funciona bien incluso en condiciones de ruido.








All Articles