階層的クラスタリングパッケージ
関数FindClustersは,距離(非類似度)関数に基づいてデータのクラスタを見付ける.このパッケージには,クラスタ階層を生成する関数と階層的クラスタの融合を可視化する関数が含まれている.
Agglomerate[data] | data の要素を集めてクラスタの階層にする |
Agglomerate関数はデータのクラスタ階層を計算する.AgglomerateはFindClustersと同じ形式のデータを取る.Agglomerateの出力は,階層的クラスタリングを表すネストされたClusterオブジェクトである.
Cluster[c1,c2,d,n1,n2] | クラスタ階層の融合を表す.要素 c1と c2は距離(非類似度)の値 d で融合されたサブクラスタである.サブクラスタのデータ要素数はそれぞれ n1と n2である |
ClusterFlatten[cluster] | クラスタに含まれるデータ要素のリストを返す cluster を平坦化する |
ClusterSplit[cluster,n] | 実質的に最後の n-1回の融合を取り消して,cluster を n 個のクラスタに分割する |
Cluster式の操作のための関数
関数ClusterFlattenおよびClusterSplitは,Clusterオブジェクトの操作のためのユーティリティである.
オプション名
|
デフォルト値
| |
DistanceFunction | Automatic | 使用する距離(非類似度)測定法 |
Linkage | Automatic | 使用するクラスタ連結法 |
Agglomerateのオプション
DistanceFunctionオプションはFindClustersのものと同じである.DistanceFunctionはデータ点間の距離(非類似度)を定義し,Linkageはデータ点のクラスタ間の非類似度を定義する.
"Single" | クラスタ間の最小非類似度 |
"Average" | クラスタ間の平均非類似度 |
"Complete" | クラスタ間の最大非類似度 |
"WeightedAverage" | クラスタ間の重み付き平均非類似度 |
"Centroid" | クラスタの重心からの距離 |
"Median" | クラスタのメジアンからの距離 |
"Ward" | ウォードの最小分散非類似度 |
f | 純関数 |
Linkageオプションで取れる値
連結法は,メンバ要素間に非類似性がある場合,そのクラスタ間の非類似性(融合レベル)を決定する.一般的なアルゴリズムには,要素間の最短距離を選ぶ単連結法,要素間の最長距離を選ぶ完全連結法,クラスタの重心間の非類似度を使う重心法等がある.
Linkage->f と設定すると,f は連結法を定義する純関数となる.クラスタ間の距離(非類似度)は,新しく融合されるクラスタの非類似度を決定するために,未融合のクラスタと融合されているクラスタの距離(非類似度)についての情報を再帰的に使って決定される.i と j が融合されるクラスタを表しているとすると,新しい距離(非類似度)は,この融合したクラスタと残りの k 個のクラスタとの間で再帰的に計算される.関数 f は再帰を定義し,引数 f[dik,djk,dij,ni,nj,nk]が渡される.ここで d はクラスタ間の距離(非類似度)を,n はクラスタ内のデータ要素数を表す.この関数は,クラスタ i と j の融合により形成されるクラスタと k との間の非類似度を返す.
規則のリストや単独のリストを使って,要素にラベルを付けることができる.要素間の距離(非類似度)は規則の左辺の式を使って計算される.出力のClusterオブジェクトには規則の右辺が含まれる.
距離(非類似度)関数の代りに,すべてのデータ要素間のペア毎の距離(非類似度)を提供する距離(非類似度)行列を直接使って,クラスタ階層を構築することも可能である.距離行列には,i 行目,j 列目の要素に i 番目と j 番目のデータ要素間の距離の値が保存される.距離(非類似度)は対称なので,行列の上三角部(つまり i<j)だけが使われる.
DistanceMatrix[data] | 距離(非類似度)の対称行列を計算する |
DirectAgglomerate[mat] | 平方距離行列 mat に基づくクラスタ階層を構築する |
DirectAgglomerate[mat,list] | list の要素を距離行列 mat の対応する行に関連付ける |
距離尺度を定義するために,DistanceMatrix関数にDistanceFunctionオプションを与えることができる.
階層的クラスタの二分木構造は,自然に樹形図というグラフィカルな表現になる.樹形図は,クラスタを表す2本の線を融合レベルの横棒でつなぐことにより,融合歴を視覚的に表す.
DendrogramPlot[list] | クラスタリング list から導かれる樹形図をプロットする |
DendrogramPlot[cluster] | Clusterオブジェクト cluster の樹形図をプロットする |
オプション名
|
デフォルト値
| |
TruncateDendrogram | All | 樹形図を切り捨てるレベル |
HighlightLevel | None | クラスタをハイライトするレベル |
HighlightStyle | Automatic | ハイライトされた各々のクラスタのスタイルを指定するグラフィックス指示子 |
LeafLabels | None | 葉のラベル |
DistanceFunction | Automatic | 使用する距離(非類似度)尺度 |
Linkage | Automatic | クラスタリングに使用する方法 |
Orientation | Top | 樹形図の向き |
PlotStyle | Automatic | 樹形図のスタイルを指定するグラフィックス指示子 |
DendrogramPlotのオプション
樹形図のラベル付けをサポートするために,オプションLeafLabelsが提供されている.データでは,LeafLabels->Automaticという値のときはラベルに対してデータ要素の位置を使うが,このオプションは式のリスト,あるいは関数を取ることもできる.関数はラベル式を生成するために,各データ要素に適用される.Clusterオブジェクトでは,LeafLabelsオプションは関数を取るが,リストやAutomaticは取らない.これは,Clusterオプジェクトのラベルとデータ点の間での明確な対応がないためである.
大きなデータでは,完全な樹形図の要約版の方がよい場合がある.樹形図は,1つの整数か2つの整数のリストを与えることにより,TruncateDendrogramオプションを使って切り捨てることができる.2つの整数のリストとして与えられた場合は,最初の値は,融合が表示される最上限のレベルを指定し,2つ目の値は表示する最下限の融合レベルを示す.単独の整数 n では,TruncateDendrogram->n はTruncateDendrogram->{1,n}と等価である.2つ目の値として∞を与えることもでき,下からの切捨てのない完全なクラスタリングを表示する.クラスタが切り捨てられ,ラベルが指定されているとき,ラベルの代りに箱が置かれ,切り捨てられたクラスタのサイズを示す.