이진 행렬 클러스터링


22

250k x 100 차원 의 이진 피처 로 반 소형 행렬이 있습니다 . 각 행은 사용자이며 열은 일부 사용자 동작의 이진 "태그"입니다 (예 : "likes_cats").

user  1   2   3   4   5  ...
-------------------------
A     1   0   1   0   1
B     0   1   0   1   0
C     1   0   0   1   0

사용자를 5-10 개의 클러스터에 맞추고로드를 분석하여 사용자 동작 그룹을 해석 할 수 있는지 확인하고 싶습니다. 이진 데이터에 클러스터를 맞추는 데는 몇 가지 접근 방식이 있습니다.이 데이터에 가장 적합한 전략은 무엇이라고 생각하십니까?

  • PCA

  • Jaccard 유사성 매트릭스를 만들고, 계층 적 클러스터에 맞추고 최상위 "노드"를 사용합니다.

  • K- 중간

  • K- 메도 이드

  • 근위 ?

  • 아그네스

지금까지는 계층 적 클러스터링을 사용하여 약간의 성공을 거두었지만 이것이 최선의 방법인지는 확실하지 않습니다.

tags = read.csv("~/tags.csv")
d = dist(tags, method = "binary")
hc = hclust(d, method="ward")
plot(hc)
cluster.means = aggregate(tags,by=list(cutree(hc, k = 6)), mean)

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


1
대규모 (다수의 노드) 및 고차원 데이터의 경우 그래프 클러스터링 알고리즘 (예 : Louvain clustering, RNSC, mcl과 같은 tanimoto 유사성 및 방법 사용)을 사용해 보는 것이 좋습니다. 귀하의 데이터 유형이 의미있는 클러스터를 생성하는지 여부는 의심의 여지가 있지만 (물론 물론) 특정 유형의 클러스터링이 아니라 일반적으로 클러스터링과 관련이 있습니다. PCA는 확실히 시도해야 할 것입니다.
micans

6
솔직히 말해서, 나는이 질문이 그런 작은 관심을 끌었다는 것에 놀랐습니다. 왜 그래야만하지? 나에게 이것은 매우 흥미로운 질문처럼 들린다.
Dror Atariah

답변:


9

잠재 클래스 분석은 하나의 가능한 접근법입니다.

A, B 및 C가 1 또는 0의 값을 취할 수있는 다음 확률 분포를 취하십시오.

(에이나는,j,기음케이)

이것들이 서로 독립적이라면 우리는 다음을 보게 될 것입니다.

(에이나는,j,기음케이)=(에이나는)(j)(기음케이)

이러한 가능성이 제거되면 관찰 된 의존성이 관찰되지 않은 부분 군 내의 값 군집으로 인한 것으로 가정 할 수 있습니다. 이 아이디어를 테스트하기 위해 다음 모델을 추정 할 수 있습니다.

(에이나는,j,기음케이)=(엑스)(에이나는|엑스)(j|엑스)(기음케이|엑스)

여기서 는 수준 의 잠재 범주 형 변수입니다 . 당신은 지정하고있는 및 모델 매개 변수 (클래스 회원의 한계 확률, 각 변수에 대한 클래스의 특정 확률은) 기대 - 극대화를 통해 추정 할 수있다.N N엑스

실제로, 여러 모델을 추정 할 수 있으며 이론, 가능성 기반 적합 지수 및 분류 품질 (클래스 멤버쉽의 사후 확률을 계산하여 평가할 수 있음)을 기반으로 가장 적합한 모델을 "선택"할 수 있습니다. 관찰).510

그러나 5-10 개의 그룹으로 100 개의 변수에서 의미있는 패턴을 식별하려면 모델을 추정하기 전에 해당 목록을 줄여야 할 수 있습니다. 이는 REF 자체의 주제로는 충분하지 않습니다 .


훌륭하고 흥미 롭습니다. 다른 기술에 비해이 기술을 사용하면 어떤 이점이 있습니까?
wije

한 가지 장점은 클러스터링이 흐려서 후속 클래스 할당에서 불확실성을 설명 할 수 있다는 것입니다. 또 다른 방법은 모델 기반 방법이기 때문입니다. 모형 선택을 안내하는 데 도움이 될 가능성 기반 적합 지수를 얻습니다. 이것은 물론 배포 가정을 만들어야 할 비용이 듭니다 ... 다른 유효한 방법에는 자체 트레이드 오프가있을 것이라고 확신합니다.
DL Dahly 2014

5

실제로 이러한 데이터를 클러스터링하는 것보다 빈번한 항목 세트 마이닝 이 더 나은 선택 일 수 있습니다.

일반적인 벡터 지향 알고리즘 세트는 의미가 없습니다. 예를 들어 K- 평균은 더 이상 이항이 아닌 평균을 생성합니다.


태그 (열) 대신 사용자를 클러스터하려는 경우에도 빈번한 항목을 사용하는 것이 합리적입니까?
wije

1
이모 예. 그러나 명백한 이유로 연결 규칙은 데이터 세트를 엄격하게 분할하지 않습니다. 사용자는 둘 이상의 "자주 쓰는 항목 집합"의 구성원 일 수 있습니다. 즉, 사용자는 고양이 팬 및 개 팬일 수 있으며; 이 두 그룹은 분리되지 않습니다.
Anony-Mousse

어떤 IMHO가 실제로 좋은지. 모든 사용자가 정확히 하나의 클러스터의 구성원이라고 가정하면 지나치게 순진한 것처럼 보입니다.
Anony-Mousse
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.