올바른 클러스터 수를 결정하는 방법은 무엇입니까?


54

우리는 클러스터 센터를 찾고 k-means 클러스터링 에서 k 개의 다른 클러스터 빈에 포인트를 할당합니다.이 클러스터 는 매우 잘 알려진 알고리즘이며 거의 모든 기계 학습 패키지에서 찾을 수 있습니다. 그러나 내 생각에 빠지고 가장 중요한 부분은 올바른 k를 선택하는 것입니다. 가장 좋은 가치는 무엇입니까? 그리고, 무엇을 의미 최선 ?

나는 여기논의 된 k를 결정하기위한 방법으로 실루엣 플롯을 보는 과학 계산에 MATLAB을 사용한다 . 그러나 베이지안 접근 방식에 더 관심이 있습니다. 모든 제안을 부탁드립니다.


2
좋은 질문 ...


아래 의 시각화를위한 클러스터링 (에헴) MSTS를 사용하여, K-클러스터를 사진과 한 번에 여러 K의 효과를 볼 수있는 방법이 있습니다.
데니스

나는에 대여섯 방법으로이 질문에 대답 한 R이상 여기에

1
"최상의" k 개의 클러스터를 결정한다는 것은 다른 k와 클러스터 솔루션을 비교하는 것을 의미합니다. 그런 점에서이 작업 은 데이터에 "더 나은" 클러스터링 방법을 비교하는 방법 과 유사하게 나타납니다 . 일반적인 지침은 다음같습니다 .
ttnphns 17

답변:


28

이것은 stackoverflow에 대해 몇 번 요청되었습니다 : here , herehere . 여러분은이 질문 (또는 그 작은 변형)에 대해 군중이 어떻게 생각하는지 살펴볼 수 있습니다.

stackoverflow.com에서이 질문에 대한 답변을 직접 복사하겠습니다.

불행히도 "올바른"K를 자동으로 설정할 방법이없고 "올바른"이 무엇인지에 대한 정의도 없습니다. "올바른 K"를 설정할 수있는 원리 적 통계 방법은 간단하거나 복잡하지 않습니다. 휴리스틱 (heuristics), 경험 법칙이 있으며 때로는 작동하지 않습니다.

많은 클러스터링 방법에 이러한 유형의 매개 변수가 있기 때문에 상황이 더 일반적이며, 이는 클러스터링 / 비지도 학습 학습 커뮤니티에서 큰 개방적 문제라고 생각합니다.


+1이 글을 읽은 후-그것은 매우 직관적 인 것 같습니다. ...하지만 나는 이것에 대해 전혀 생각하지 않았다고 말해야합니다. 실제로 PCA에서 PC 수를 선택하는 문제는 K- 평균에서 클러스터 수를 선택하는 문제와 동일합니다.
Dov

2
@Dov이 두 가지는 완전히 다릅니다. PCA 솔루션의 품질을 검사하는 데 사용할 수있는 특정 조치 (대부분 재구성 오류, 캡처 된 분산의 % 등)가 있으며, 대부분 일관성이 있습니다. 그러나 군집화에는 하나의 "정답"이없는 경우가 있습니다. 한 군집화는 한 지표별로 다른 군집보다 나을 수 있으며 다른 지표를 사용하면 그 반대도 마찬가지입니다. 경우에 따라 동일한 메트릭에서 두 개의 서로 다른 클러스터링을 동일하게 수행 할 수 있습니다.
tdc

@tdc 그러나이없는 en.wikipedia.org/wiki/...은 더 많거나 적은 이렇게 있습니다 improvedoutcomes.com/docs/WebSiteDocs/PCA/... ?
Dov

2
@Dov 예, 그들은 서로 "더 많거나 적습니다". 그러나 단순히 클러스터 수를 선택하는 문제는 PC 수를 선택하는 것보다 훨씬 더 어려워집니다. 즉, "동등하지"않습니다.
tdc

1
+1 네가 맞아. 우리는 최고의 k를 결정하기 위해 다른 모델이나 가정을 소개하지만 질문은 왜 그 모델이나 가정이 가장
좋은지로 밝혀졌습니다

19

먼저 경고. 클러스터링에는 종종 하나의 "정답"이 없습니다. 한 클러스터링은 하나의 메트릭으로 다른 클러스터보다 낫고 다른 메트릭을 사용하면 그 반대 일 수도 있습니다. 경우에 따라 동일한 메트릭에서 두 개의 다른 클러스터링이 동일하게 발생할 수 있습니다.

그런 말을 한 후에 Dirichlet Processes를 살펴볼 수 있습니다 . 이 튜토리얼 도 참조하십시오 .

가우스 혼합 모델로 시작하는 경우 k- 평균과 동일한 문제가 있으므로 군집 수를 선택해야합니다. 모형 증거를 사용할 수 있지만이 경우에는 강력하지 않습니다. 따라서 트릭은 혼합 구성 요소보다 먼저 Dirichlet Process를 사용하여 잠재적으로 무한한 수의 혼합 구성 요소를 가질 수 있지만 모델은 (보통) "정확한"구성 요소 수를 자동으로 찾습니다. 모델).

αα


1
어떤 농도 매개 변수 하에서 디리클레 공정? 그것은 k와 같은 원래의 질문과 같은 것입니다. 비록 실제 데이터에 대한 복잡한 알고리즘의 동작이라는 Direchlet 분포를 더 잘 이해한다는 데 동의합니다.
carlosdc 2019

@carlosdc 좋은 지적, 나는 농도 매개 변수에 대한 약간의 토론을 포함하도록 답변을 업데이트했습니다
tdc

1
내 경험상 유한 혼합 모델의 군집 수를 결정하는 것보다 알파와 같은 연속 값 농도 매개 변수를 배우는 것이 훨씬 쉽습니다. 유한 혼합 모델을 고수하고 베이지안 압정을 원한다면 뒤집을 수있는 점프 MCMC ( onlinelibrary.wiley.com/doi/10.1111/1467-9868.00095/abstract )

1
좋은 대답입니다. 나는 베이지안 비모수를 통한 K-Means Reviseting K-Means : New Algorithms 라는 논문을 추가 할 것이다 . K-Means에 대한 "연속적인"접근 방식을 제공합니다. 그런 다음 최적화를 사용하여 최적의 값을 쉽게 찾을 수 있습니다.
Royi

9

나는 팔꿈치 방법을 사용합니다 :

  • K = 2로 시작하여 각 단계에서 1 씩 증가시키면서 클러스터와 훈련에 따른 비용을 계산하십시오. K의 가치는 비용이 급격히 하락한 후, 더 증가 시키면 정체에 도달합니다. 이것이 원하는 K 값입니다.

이론적 근거는이 후 클러스터 수를 늘리지 만 새 클러스터는 기존 클러스터의 일부에 가깝다는 것입니다.


이것은 L 방법 (내 답변 참조)이 평가하는 원리 인 것 같습니다.
winwaed

6

클러스터 크기는 데이터와 결과를 사용할 대상에 따라 크게 다릅니다. 사물을 범주로 나누기 위해 데이터를 사용하는 경우 먼저 몇 개의 범주를 원하는지 상상해보십시오. 데이터 시각화를 위해 구성 할 수 있으면 사람들이 큰 클러스터와 작은 클러스터를 모두 볼 수 있습니다.

자동화해야하는 경우 k를 늘리면 페널티를 추가하고 그런 식으로 최적 클러스터를 계산할 수 있습니다. 그리고 당신은 당신이 많은 클러스터를 원하는지 아니면 아주 적은지를 원하는지에 따라 k를 가중시킵니다.



5

지리적 응용 프로그램에서 클러스터 수를 결정하기 위해 "L 방법"을 사용했습니다 (즉, 기술적으로 비 유클리드가 아니지만 본질적으로 2d 문제).

L 방법은 여기에 설명됩니다 : 계층 적 군집 / 분할 알고리즘에서 군집 / 세그먼트 수 결정 Stan Salvador 및 Philip Chan

본질적으로 이것은 다양한 k 값에 대한 적합성을 평가합니다. 그래프에서 무릎으로 표시되는 최적의 k 값으로 "L"모양의 그래프를 볼 수 있습니다. 니 포인트를 찾기 위해 간단한 이중선 최소 제곱 피팅 계산이 사용됩니다.

k의 각 값에 대해 반복적 인 k- 평균을 계산해야하기 때문에 방법이 매우 느리다는 것을 알았습니다. 또한 k-means는 여러 번 실행하고 가장 잘 선택하는 것이 가장 좋습니다. 각 데이터 포인트의 치수는 2 차원이지만 간단한 피타고라스 거리는 사용할 수 없습니다. 그래서 그것은 많은 계산입니다.

한 가지 생각은 k의 다른 모든 값을 계산의 절반으로 건너 뛰거나 k- 평균 반복 횟수를 줄인 다음 결과 곡선을 약간 부드럽게하여보다 정확한 맞춤을 만드는 것입니다. 나는 StackOverflow -IMHO 에서 이것에 대해 물었 습니다. 평활화 질문은 열린 연구 질문입니다.


4

케이

그러나 데이터 세트가 실제로 Voronoi 구성표에 맞지 않으면 어떻게됩니까?

케이케이

케이


3
첫 번째 단락에서 K- 평균에 대한 설명이 잘못되지는 않았지만 일부 사람들은이 방법을 원래 데이터를 기반으로 한 보로 노이 분할과 동일시하는 것으로 오도 할 수 있습니다 . 파티션은 클러스터 수단의 위치를 ​​기반으로하므로 원래 데이터와 일치하지 않을 수도 있습니다.
whuber

3

전체적으로 두 개의 다른 경로에서 클러스터 수를 선택할 수 있습니다.

  1. 지식 중심 : 비즈니스 관점에서 얼마나 많은 클러스터가 필요한지 아이디어가 있어야합니다. 예를 들어, 고객을 클러스터링하는 경우 이러한 고객을 확보 한 후 다음에 어떻게해야합니까? 당신은 다른 클러스터에 대해 다른 치료를받을 수 있습니까? (예 : 이메일 또는 전화 광고). 그렇다면 몇 가지 가능한 치료법을 계획하고 있습니까? 이 예에서는 100 개의 클러스터가 너무 의미가 없다고 선택합니다.

  2. 데이터 중심 : 더 많은 수의 클러스터가 과적 합되고 적은 수의 클러스터가 과적 합하지 않습니다. 항상 데이터를 반으로 나누고 교차 검증을 수행하여 얼마나 많은 클러스터가 좋은지 확인할 수 있습니다. 클러스터링에서는 여전히 감독 설정과 유사한 손실 기능이 있습니다.

마지막으로 항상 지식 기반과 데이터 기반의 데이터를 현실 세계에서 결합해야합니다.


2

아직 아무도 지적하지 않았기 때문에 나는 이것을 공유 할 것이라고 생각했습니다. 베이지안 정보 기준 (BIC)을 사용하여 적절한 수의 군집을 추정하는 X- 평균이라는 방법이 있습니다 ( 이 링크 참조 ). 본질적으로 이것은 다른 K를 사용하여 K 평균을 시도하고 각 K에 대한 BIC를 계산하고 최상의 K를 선택하는 것과 같습니다.이 알고리즘은 효율적으로 수행합니다.

weka 구현 도 있습니다 . 자세한 내용은 여기를 참조하십시오 .


0

다른 접근법은 개개의 길이가 다른 염색체를 가진 진화 알고리즘을 사용하는 것입니다. 각 개인은 후보 솔루션입니다. 각 개인은 중심 좌표를 가지고 있습니다. 최고의 클러스터링 평가 점수를 산출하는 솔루션에 도달하기 위해 중심 수와 좌표가 진화합니다.

이 백서에서는 알고리즘에 대해 설명합니다.

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