現在、ドキュメントのトピックで階層を検討しています。最初のステップとして、私はドキュメントのベクトル表現を見つけ、その後、ドキュメントのトピック内にトピックがあるかどうかを判断するために階層的クラスタリングを使用します。少なくとも2%の元のデータを含むクラスター(ネストされたクラスター)のみを考えたい。これを達成するために、私はRを使用しています。クラスタ階層およびネストされたクラスタ割り当ての取得
今、私はクラスタリング結果からクラスタ階層を効率的に抽出することに苦労しています。クラスタリングは "fastcluster"パッケージで行われます。これは、元の "hclust"機能と同様の結果を提供します。
私の最終的な出力は次のようになります。あなたが見ることができるように、観測3,4及び5は、クラスタ割当テーブルに複数回発生し、
Parent, Child
B, C
B, D
...
:
docID , ClusterLabel
1, A
2, A
3, B
4, B
5, B
3, C
4, D
5, C
...
クラスタ階層:二つのテーブル
クラスタの割り当てがあるでしょうここで、クラスタの1つは、その親クラスタのサブクラスタである。これは階層テーブルに表示されます。
私の現在のアプローチは、 "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つのクラスタ、出力における名前AとBを得ることができます。しかし、ツリーを高さ4で切断すると、出力にA、C、Dという3つのクラスターがあります。例えば、docID 3の観測値は、クラスタCのようにいずれかのクラスタBにあります(ツリーを切り取った高さによって異なります)。これは、サンプル出力クラスタ割り当ての2つのエントリに対応しています。クラスタBは2つのクラスタCとDに分割されており、クラスタHierachy出力に見ることができます。
私の目標は、クラスタの割り当てと階層の完全なリストを取得し、デンドログラムを移動することです。 (サブクラスタの観測量がある程度の観測値を下回ったときに停止することが好ましい)
これまで、私はこれを行うための合理的な効率的な方法を思いつきませんでした。アイディア。 cutree
機能で
こんにちは@ Bartdp1、自己完結型の再現可能なサンプルで質問を更新できますか? –
@TalGalili質問をお寄せいただき、ありがとうございます – BDP1