데이터베이스에서 1D 데이터의 다른 클러스터 결정


24

다른 노드 간 데이터 전송 데이터베이스 테이블이 있습니다. 이것은 거의 4 천만 건의 전송이 가능한 거대한 데이터베이스입니다. 속성 중 하나는 0 바이트에서 2 테라 바이트 사이의 바이트 수 (nbytes) 전송입니다. 주어진 k 클러스터에 일부 x1 전송이 k1 클러스터에 속하고 x2 변환기가 k2 등에 속하도록 nbyte를 클러스터링하고 싶습니다.

내가 사용한 용어에서 당신은 내가 무슨 일을했는지 ​​추측했을 것입니다 : K- 평균. nbytes가 내가 관심있는 유일한 기능이기 때문에 이것은 1d 데이터입니다. 내가 다른 방법을 찾고 있었을 때 EM이 비 클러스터링 접근법과 함께 몇 번 언급되었다는 것을 알았습니다. 이 문제에 접근하는 방법 (특히 클러스터링할지 여부)에 대한 귀하의 견해에 대해 알고 싶습니다.

감사!


"x1 전송", "x2 전송"등은 무엇입니까? "전송 유형"이 두 번째 변수입니까?
Peter Flom-Monica Monica 복원

x1 전송은이 500 개의 전송이 어느 정도의 값으로 전송 크기를 가졌다 고 말하는 방법입니다.
Shaun

5
나는 클러스터링에 대한 전문가는 아니지만 많은 데이터와 1 차원 만 가지고 다른 대역폭을 사용하여 커널 밀도 플롯 을 만들고 찾을 수있는 모드 / 피크 ​​수와 결과가 어떻게 보이는지 궁금합니다. 그것은 당신에게 유용 할 것입니다.
gung-복직 모니카

1
클러스터 여부를 물었습니다. 클러스터링의 목표는 무엇입니까? 다른 목적으로 클러스터를 사용 하시겠습니까, 아니면 이론적으로 관심이 있습니까?
Peter Flom-Monica Monica 복원

표의 다른 속성 중 일부는 사용자 이름, 시작 및 종료 날짜입니다. 전송 크기를 기준으로 전송을 클러스터링하면 특정 전송의 다른 속성을 참조하여 누가 어느 달에 얼마나 많은 전송을하는지 확인할 수 있습니다. 우리가이 관찰로 무엇을할지, 나는 아직 모른다. 그러나 그것은 내가가는 곳의 종류입니다.
Shaun

답변:


43

1 차원 데이터에서는 군집 분석을 사용하지 마십시오.

군집 분석은 일반적으로 다변량 기법입니다. 또는 다른 방법으로 더 잘 정리해 보겠습니다. 완전히 정렬 된 1 차원 데이터의 경우 훨씬 더 나은 기술이 있습니다. 여기에서 k- 평균 및 이와 유사한 기술을 사용하면 실제로 1-d 사례에 맞게 최적화하기 위해 충분한 노력을 기울이지 않는 한 총 낭비입니다.

예를 들어 k- 평균의 경우 k 개의 임의의 객체를 초기 시드로 사용하는 것이 일반적입니다. 1 차원 데이터의 경우, 데이터를 한 번 정렬 한 후 적절한 Quantile (1 / 2k, 3 / 2k, 5 / 2k 등) 을 사용하고이 시작점에서 최적화 하면 더 쉽게 수행 할 수 있습니다. 그러나 2D 데이터는 완전히 정렬 할 수 없습니다. 그리고 그리드에는 빈 셀이있을 것입니다.

나는 또한 그것을 클러스터라고 부르지 않을 것이다. 나는 그것을 interval 이라고 부를 것이다 . 실제로 원하는 것은 간격 경계를 최적화하는 것입니다. k- 평균을 수행하는 경우 다른 객체로 이동해야하는 경우 각 객체를 테스트합니다. 1D에서는 의미가 없습니다. 구간 경계에있는 객체 만 확인하면됩니다. ~ 2k 객체 만 있기 때문에 분명히 훨씬 빠릅니다. 그들이 다른 간격을 아직 선호하지 않는다면, 더 중심적인 객체도 마찬가지입니다.

예를 들어 Jenks Natural Breaks 최적화 와 같은 기술을 살펴볼 수 있습니다 .

또는 커널 밀도 추정을 수행하고 밀도의 로컬 최소값을 찾아서 분할 할 수 있습니다. 좋은 점은 이것을 위해 k를 지정할 필요가 없다는 것입니다!

PS 검색 기능을 사용하십시오. 1-d 데이터 클러스터링에 대한 몇 가지 질문이 있습니다.


Quantile이 반드시 클러스터에 동의하지는 않습니다. 1 차원 분포는 3 개의 자연 군집을 가질 수 있으며, 여기서 2 개는 각각 10 %의 데이터를 보유하고 마지막 하나는 80 %의 데이터를 포함합니다. 따라서 씨앗을 현명하게 선택하거나 다른 아이디어를 사용하여 실행을 최적화하는 것이 합리적이지만 여기에 클러스터링하는 것이 가능하다고 생각합니다.
Bitwise

Quantile은 아마도 최적화를 위한 좋은 시드 포인트 일 것입니다 . 그리고 2D 차원에서는 잘 작동하지 않는 1D로 할 수있는 일의 예를 들기 위해.
Anony-Mousse

Quantile을 시드로 사용하는 것이 가치가 있다고 동의하지만 여전히 임의의 초기화를 시도합니다 (예 : 내가 한 것과 같은). 어쨌든 가장 좋은 방법은 히스토그램 / 밀도 플롯을보고 수동으로 시드를 선택한 다음 클러스터링으로 최적화하는 것입니다. 그것은 좋은 해결책으로 매우 빠르게 수렴 될 것입니다.
Bitwise

3
Jenks 1D의 k- 평균입니다.
whuber

1
@whuber는 수학적으로도 데이터를 주문할 수 있다는 점을 충분히 활용할 수 있기를 바랍니다 . 1 차원 데이터에서 k- 평균을 수행하기 위해 Lloyd 방식을 사용하는 경우 건너 뛸 수있는 많은 계산을 수행하기 때문에 어리 석습니다. 그리고 대부분의 사람들에게 k- 평균은 로이드입니다. 그리고 어떤 사람들은 불필요한 재 계산을 피하는 것을 걱정합니다.
Anony-Mousse

1

클러스터링해야하는지 또는 클러스터링에 사용해야하는 방법에 대한 질문이 있습니까?

클러스터해야하는지 여부에 따라 데이터를 자동으로 분할할지 여부에 따라 다릅니다 (예 :이 분할을 여러 번 반복하려는 경우). 이 작업을 한 번만 수행하는 경우 의견에 제안 된대로 값 분포의 히스토그램을보고 눈으로 분할 할 수 있습니다. 어쨌든 데이터를 눈으로 보는 것이 좋습니다. 원하는 클러스터 수와 클러스터링 작동 여부를 결정하는 데 도움이 될 수 있습니다.

군집화 유형과 관련하여 데이터에 "실제"군집이있는 경우 k- 평균은 양호해야합니다. 히스토그램에 클러스터가 표시되지 않으면 데이터 범위를 분할하면 유효한 클러스터가 제공되므로 (또는 임의의 kmeans를 시작하는 경우 다른 클러스터가 생성되므로) 클러스터링이 의미가 없습니다. 각 실행).


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