노이즈가 많은 데이터 또는 이상 값으로 클러스터링


9

이 같은 두 변수의 노이즈 데이터가 있습니다.

x1 <- rep(seq(0,1, 0.1), each = 3000)
set.seed(123)
y1 <- rep (c(0.2, 0.8, 0.3, 0.9, 0.65, 0.35,0.7,0.1,0.25, 0.3, 0.95), each = 3000)
set.seed(1234)
e1 = rnorm(length(x1), 0.07,0.07)
set.seed(1223)
e2 = rnorm(length(x1), 0.07,0.07)
set.seed(1334)
yn <- rnorm(20000, 0.5,0.9)
set.seed(2344)
xn <- rnorm(20000, 0.5,0.9)
y <- c(y1 + e1,yn) 
x <- c(x1 + e2, xn) 
plot(x,y,  xlim=c(0,1.2), ylim = c(0,1.2), pch = ".", col = "gray40") 

좀 더 자세히 살펴볼 수있는 10 개의 클러스터가있는 것을 시각적으로 볼 수 있습니다.

여기에 이미지 설명을 입력하십시오

그러나 전체 데이터에는 많은 포인트가 퍼져 있습니다.

plot(x,y,   pch = ".", col = "gray40") 

여기에 이미지 설명을 입력하십시오

클러스터를 10 개 만들고 싶습니다. K- 평균 군집 분석을 시도했습니다.

xm1 <- cbind(x,y)
cl1 <- kmeans(xm1, 10)
colrs <- c("red", "green", "blue1", "pink", "green4","tan", 
 "gray40", "yellow", "black", "purple") 
plot(xm1, col = colrs[cl1$cluster], pch = ".", xlim=c(0,1.2), ylim = c(0,1.2))

여기에 이미지 설명을 입력하십시오

plot(xm1, col = colrs[cl1$cluster], pch = ".")

여기에 이미지 설명을 입력하십시오

어쨌든이 유형의 데이터에 대해 더 많은 정의를 수행 할 수있는 (커널 k- 평균, 가장 가까운 이웃 일 수 있음) 있습니까? 그렇다면 어떻게해야합니까?


1
지금까지 무엇이 잘못 되었나요? 왜 당신이 가지고있는 것 ( k- 평균 군집 분석 )이 허용되지 않습니까?
Steve S

dbscan하는 모습이나 광학 알고리즘 (볼이 en.wikibooks.org/wiki/Data_Mining_Algorithms_In_R/Clustering/...를 )
조르지오 Spedicato

답변:


7

데이터가 가우스 혼합 으로 구성된 것처럼 가우스 혼합 모델링 (일명 EM 클러스터링)을 사용해보십시오 . 이 유형의 데이터에서 k- 평균보다 훨씬 우수한 결과를 얻을 수 있습니다.

"노이즈"가 균일 분포 인 경우 혼합 모형에 균일 분포를 추가 할 수도 있습니다.

데이터가 훨씬 덜 깨끗하다면 DBSCAN, MeanShift, OPTICS, HDBSCAN * 등을 사용하는 것이 좋습니다. 밀도 기반 클러스터 는이 데이터에 적합한 것으로 보입니다. DBSCAN은 노이즈에 매우 관대합니다 ( "N"은 노이즈에 대한 것임).


4

기사 를 볼 것을 권장합니다 . 저자는 특이 치를 제거하고 나머지 데이터를 군집화하는 강력한 방법을 제안합니다. 그래서 그들은 "트리밍"방법을 호출했습니다. 에 R 패키지도 있었다 tclust 그러나에 따르면 , 그것은 CRAN에서 제거되었다. 어쨌든 기사는 읽을 가치가 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.