- パッケージ名 "clue"
- CLUster Ensembles
- こちらで使ってみました。重み付き割り当て問題に利用しています
- パッケージの解説PDFはこちら
- 1 Introduction
- 2 データ構造とアルゴリズム
- clueパッケージが扱うのは「クラスタリング」構造、その2種類
- グループに分ける・分けたもの(Partitions)
- 階層型クラスタリング(Hierarchies)
- 分割 Partitions
- Soft partition と hard partition
- Soft partitionは複数のカテゴリに重み付きで割り当てる方法
- Hard partitionは複数のカテゴリのうち1つに割り当てる方法
- Partitionsに関する関数
- n_of_classes() : 要素を持つカテゴリの数
- is.cl_partition(),is.cl_hard_partition(),is.cl_soft_partition() : Partitionか否か、ソフトかハードかの判定
- 階層型クラスタリング Hierarichies
- 階層型では"ultrametric"という「ペアワイズ距離情報」を使う
- Hierarchiesに関する関数
- is.cl_hierarchy() : Hierarchyか否か
- plot() : dendrogramを描く
- Rのクラスタリング関係パッケージ・関数(これらを統合して使うのがclueパッケージ)
- package名
- RWeka, ape, cba, cclust, cluster, e1071, flexclust, flexmix, kernlab, and mclust (and of course, clue itself).
- たとえば
- base package, "stats":kmeans()
- package "cluster":pam()
- package "mclust":Mclust()
- Clusterをアンサンブルにする
- cl_ensemble() : サンプル数が同じで、PartitionsかHierarchiesかのどちらかに統一された複数のアンサンブルをリストに納めて、「統合処理用」のオブジェクトにする
- たとえば、Hierarchyクラスタリングをその方法メニューで選べるhclust()関数について、利用可能な複数の方法メニューを1つのデータに適用して、それを「アンサンブル化」するときは以下のようにlapply()関数を用いればよい。hclust_resultsは個々のクラスタリング出力を収めたリストになっている
d <- dist(USArrests)
hclust_methods <-
c("ward", "single", "complete", "average", "mcquitty")
hclust_results <- lapply(hclust_methods, function(m) hclust(d, m))
hclust_results[[1]]
plot(hclust_results[[1]])
-
- クラスタ同士の遠近関係の評価
- Partitionsの場合とHierarchiesの場合と
- Partitionsの場合
- N個のサンプルがM個のクラスタに分類されている
- 2通りの手法で分類されているので2つの結果がある
- 2つの結果は、「分類」は同じだとしても、「クラスタ」のID付けが異なるかもしれない
- 2つの結果が一致しているかの探索は、通りの「クラスタIDの並べ替え」のうち、最も一致の程度が高いものを持って、2つのクラスタリング結果の「クラスタID付与」が同じであると考え、その「クラスタID付与の状態」で、個々のサンプルのクラスタ帰属状況の異同を定量する必要がある
- したがって、クラスタ同士の遠近定量は次の2つのステップからなる
- 通りの順列から「最適」な並べ方を探索する
- 「最適」な並べ方のもとで「異同」を測る
- 最適な順列を求める処理は、「重み付き割り付け」問題なので、ここでsolve_LSAP()関数が使われている
- 複数のクラスタリング結果のコンセンサスを求める
- アプローチ3分類
- "constructive" : 「再構成」する(どうやって?)
- "axiomatic" : 公理的…「存在」と「一意」な解を求める(どうやって?)
- "optimization" : 「最適」の定義を定め、それに沿って、「最適」なクラスタリングを探す(どうやって?)
- 複数のクラスタリング結果を分類する
- クラスタリングの結果が出たら、それらの間の関係に興味がある(かもしれない)。そして、このパッケージはクラスタリングのそれなのだから、「複数のものの間柄」は「クラスタリング(PartitionsとHierarchies)」するのが(も)手