현재 문서 항목에서 계층 구조를 조사하고 있습니다. 첫 번째 단계로 내 문서의 벡터 표현을 찾은 다음 문서의 주제 내에 주제가 있는지 여부를 결정하기 위해 계층 적 클러스터링을 사용합니다. 나는 적어도 2 % 원래의 데이터를 담고있는 (중첩 된) 클러스터만을 고려하기를 원한다. 이를 위해 R을 사용하고 있습니다.클러스터 계층 구조 및 중첩 된 클러스터 할당 얻기
이제 클러스터링 결과에서 클러스터 계층을 효율적으로 추출하는 데 어려움을 겪고 있습니다. 클러스터링은 원래 "hclust"기능과 유사한 결과를 제공하는 "빠른 클러스터"패키지로 수행됩니다.
최종 출력물은 다음과 같아야합니다. 두 테이블
클러스터 할당이있을 것이다 :
docID , ClusterLabel
1, A
2, A
3, B
4, B
5, B
3, C
4, D
5, C
...
클러스터 계층 구조 : 당신이 볼 수 있듯이
Parent, Child
B, C
B, D
...
이 관찰 3, 4, 5 클러스터 할당 테이블에 여러 번 발생 여기서 클러스터 중 하나는 상위 클러스터의 서브 클러스터입니다. 이것은 Hierarchy 테이블에서 볼 수 있습니다.
현재 "Dendextend"패키지의 cutree.dendogram 함수를 사용하여 k 값의 눈금에 대한 클러스터 할당을 찾은 다음 출력에서 클러스터 계층과 할당을 추론합니다. 그러나이 접근법은 매우 순진한 것으로 많은 수의 관측과 클러스터에서는 매우 느립니다.
이 문제를 효율적으로 처리 할 수있는 방법에 대한 제안은 쉽게 사용할 수있는 패키지를 사용하는 것이 좋습니다.
EDIT : 샘플을 출력 데이터에 대응하는, 다음의 예를 생각해 우리 높이 6의 트리를 절단 할 경우
data <- matrix(data = c(1,2,3,4,5,1,3,5,9,10), nrow = 5, ncol = 2)
plot(data)
hc<- hclust(dist(data))
plot(hc)
, 우리는 2 개 클러스터의 출력이라는 및 B를 수득한다. 그러나 높이 4의 나무를 자르면 출력에 A, C 및 D라는 3 개의 클러스터가 생깁니다. 이제 예를 들어 docID 3을 사용한 관찰은 클러스터 C와 마찬가지로 클러스터 B에 있습니다 (트리를 자르는 높이에 따라 다름). 이는 샘플 출력 클러스터 할당의 두 항목에 해당합니다. 클러스터 B는 클러스터 Hierachy 출력에서 볼 수있는 두 개의 클러스터 C 및 D에서 분리됩니다.
이제 내 목표는 클러스터 할당 및 계층 구조의 전체 목록을 얻고, 덤 드로 그램을 아래로 이동하는 것입니다. (하위 클러스터의 관측 값이 일정한 관측 값보다 적 으면 중지하는 것이 바람직 함)
지금까지는 합리적인 효율적인 방법으로이 작업을 수행하지 못했지만 아무도 나에게 제공하지 못할 수도 있습니다. 생각.
안녕하세요 @ Bartdp1, 자체 재현 가능한 예를 사용하여 질문을 업데이트 해 주시겠습니까? –
@TalGalili 질문을 고쳐 주셔서 감사합니다 – BDP1