Cluster ensemblesをRのcleuパッケージでなぞってみる

  • パッケージ名 "clue"
    • CLUster Ensembles
    • こちらで使ってみました。重み付き割り当て問題に利用しています
  • パッケージの解説PDFはこちら
  • 1 Introduction
  • 2 データ構造とアルゴリズム
    • clueパッケージが扱うのは「クラスタリング」構造、その2種類
    • 分割 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つの結果が一致しているかの探索は、M!通りの「クラスタIDの並べ替え」のうち、最も一致の程度が高いものを持って、2つのクラスタリング結果の「クラスタID付与」が同じであると考え、その「クラスタID付与の状態」で、個々のサンプルのクラスタ帰属状況の異同を定量する必要がある
        • したがって、クラスタ同士の遠近定量は次の2つのステップからなる
          • M!通りの順列から「最適」な並べ方を探索する
          • 「最適」な並べ方のもとで「異同」を測る
        • 最適な順列を求める処理は、「重み付き割り付け」問題なので、ここでsolve_LSAP()関数が使われている
    • 複数のクラスタリング結果のコンセンサスを求める
      • アプローチ3分類
        • "constructive" : 「再構成」する(どうやって?)
        • "axiomatic" : 公理的…「存在」と「一意」な解を求める(どうやって?)
        • "optimization" : 「最適」の定義を定め、それに沿って、「最適」なクラスタリングを探す(どうやって?)
  • 複数のクラスタリング結果を分類する