
階層クラスタリングは、似ている行をグループにまとめ、すべてのグループを1つのツリーで表します。Exploratory v16.4 では、この手法をアナリティクスで使えるようになりました。この記事では、手法のしくみ、ツリーの読み方、Exploratory での使い方を説明します。
K-Means クラスタリングでは、分析の前にクラスターの数を決める必要があります。しかし多くの場合、この数はまだわかりません。まずは、データの構造を見たいはずです。
階層クラスタリングでは、この数は必要ありません。データ点を少しずつ大きなグループにまとめ、そのたびに結合をツリーに記録します。クラスターの数は、分析の後にツリーを見て選びます。
この手法は、小〜中規模のデータに向いています。たとえば、50店舗、200製品、1,000件のアンケート回答などです。
最もよく使われるのは、凝集型と呼ばれる方法です。各データ点を1つのクラスターとして始め、下から上へとまとめていきます。手順は次の6つです。
すべてのデータ点のペアについて、距離を計算します。
各データ点を、それぞれ1つのクラスターにします。
距離が最も短い2つのクラスターを見つけます。
その2つのクラスターを、1つのクラスターに結合します。
新しいクラスターと、ほかの各クラスターとの距離を計算します。
すべてのデータ点が1つのクラスターになるまで、手順3〜5を繰り返します。
14個のデータ点で試してみましょう。次のステップをクリックすると、結合が1つずつ進みます。左の散布図にクラスターが、右のデンドログラムに各結合の高さが表示されます。
1回のステップで、2つのクラスターを1つに結合します。データ点が n 個なら、結合は全部で n − 1 回です。
最初の結合の前に、2つのデータ点がどれだけ離れているかを決める必要があります。最もよく使われるのは、ユークリッド距離です。2つのデータ点を結ぶ直線の長さのことです。
図1. ユークリッド距離 d は、P から Q までの直線の長さです。
変数が2つの場合は、次の式を使います。
\[\begin{aligned} d(P, Q) = \sqrt{(x_2 - x_1)^2 + (y_2 - y_1)^2} \end{aligned}\]変数が3つ以上の場合は、変数ごとに差の2乗を足します。そして、その合計の平方根を計算します。ほかの距離もあります。たとえば、マンハッタン距離や相関距離です。
数値の大きい変数は、距離に大きく影響します。2人の顧客を例にします。年齢は30歳と60歳、収入は50,000ドルと52,000ドルです。年齢の差は大きく、収入の差は小さいといえます。しかし元の値のままでは、距離はほぼ収入で決まってしまいます。
距離を計算する前に、変数を標準化してください。Exploratory では、標準化がデフォルトで有効です。
最初の結合が終わると、1つのクラスターに複数のデータ点が入ります。そこで、2つのクラスターの距離を決めるルールが必要になります。このルールを連結法と呼びます。よく使われる連結法は4つです。
| 連結法 | クラスター1とクラスター2の距離 | よくある結果 |
|---|---|---|
| 最短距離法 | クラスター1の点からクラスター2の点までの、最も短い距離。 | 細長いクラスター。ノイズの点が1つあるだけで、2つのグループがつながることがあります。 |
| 最長距離法 | クラスター1の点からクラスター2の点までの、最も長い距離。 | 直径が同じくらいの、まとまったクラスター。 |
| 群平均法 | 2つのクラスターの点どうしの、すべての距離の平均。 | 最短距離法と最長距離法の中間の結果。 |
| ウォード法(Exploratory のデフォルト) | 結合した後の、クラスター内平方和の増加。 | 大きさが同じくらいの、まとまったクラスター。 |
どの連結法を選ぶかで、結果が変わります。上の操作パネルに戻り、最短距離法を選んですべて表示をクリックしてください。点 N は、左下のグループと右のグループの間にあります。最短距離法では、点 N が橋の役目をして、2つのグループを1本の長い鎖のようにつないでしまいます。ウォード法では、3つのグループが分かれたままです。
同じデータでも、連結法によってクラスターが変わることがあります。最初はウォード法を使うのがおすすめです。
デンドログラムは、すべての結合を1つの図で表します。各結合の高さは、その結合のときの2つのクラスターの距離です。クラスターに分けるには、ツリーを水平な線で切ります。
図2. 6個のデータ点のデンドログラム。カットラインで3つのクラスターに分かれます。
葉。 下に並ぶ葉の1枚1枚が、1つのデータ点です。
結合の高さ。 横線の高さは、その結合のときの距離です。
長い縦線。 縦線が長いほど、2つのクラスターの間の隔たりが大きいことを示します。
カットライン。 水平なカットラインでツリーを分けます。線より下の枝の1本1本が、1つのクラスターです。
注意: データ点どうしを、横方向の位置で比べないでください。隣り合う葉でも、離れていることがあります。比べるときは、結合の高さを使います。
最も長い縦線を横切る位置で、ツリーを切ります。そうすると、線より下のクラスターどうしがはっきり分かれます。
どちらの手法もクラスターを見つけます。ただし、しくみも結果も違います。次の表を参考に、手法を選んでください。
| 項目 | 階層クラスタリング | K-Means クラスタリング |
|---|---|---|
| クラスター数 | 分析の後で選びます。 | 分析の前に設定します。 |
| 結果 | すべての結合を表すツリー。 | 1組のクラスター。 |
| 毎回同じ結果か | はい。 | いいえ。ランダムな初期点によって結果が変わります。 |
| データの大きさ | 小〜中規模。メモリは n² に比例して増えます。 | 大きなデータにも使えます。 |
| クラスターの形 | 連結法によって変わります。 | 大きさが同じくらいの、丸いクラスター。 |
Exploratory v16.4 では、アナリティクスに階層クラスタリングが加わりました。コードを書く必要はありません。ツリーの計算は一度だけです。あとはデンドログラム上で、クラスターの数を比べられます。
データフレームのアナリティクス・ビューを開きます。新しいアナリティクスを追加します。
タイプのメニューで、クラスタリング分析 › 階層クラスタリングを選びます。
クラスタリング対象で、行を選びます。
変数に、数値の列を選びます。
必要なら、ラベルに使う列を選びます。その列の値が、葉のラベルになります。
実行をクリックします。
デンドログラムのクラスター数スライダーを動かします。候補を比べます。
枝をクリックします。そのグループの行が、詳細データの表示で開きます。
| 設定 | 値 | デフォルト |
|---|---|---|
| クラスタリング対象 | 行、変数 | 行 |
| クラスターの数 | 2以上 | 3 |
| 連結法 | ウォード法、最長距離法、群平均法、最短距離法 | ウォード法 |
| 距離 | ユークリッド距離、マンハッタン距離 | ユークリッド距離 |
| インタラクティブ表示の最大クラスター数 | 2以上 | 10 |
| 最適なクラスターの数を探索する | なし、シルエット法、エルボー法 | シルエット法 |
| 変数を標準化する | TRUE、FALSE | TRUE |
ウォード法は、ユークリッド距離だけを使います。ウォード法を選ぶと、距離の設定は表示されません。クラスタリング対象: 変数を選ぶと、行ではなく変数をクラスターに分けます。距離は 1 − 相関係数(ピアソンまたはスピアマン)です。このモードでは、ウォード法は使えません。
図3. Exploratory v16.4 のデンドログラムの模式図(ラベルに都市名の列を使った例)。スクリーンショットではありません。
クラスター数。 スライダーを動かすか、− と + をクリックします。カットラインと色がすぐに変わります。分析をやり直す必要はありません。
カットライン。 カットラインより葉の側にある枝の1本1本が、1つのクラスターです。クラスター番号は上から順に付きます。
枝。 枝にポインターを合わせると、行数、割合、結合距離が表示されます。枝をクリックすると、詳細データの表示が開きます。
ズーム。 拡大、縮小、全体表示ができます。マウスホイールも使えます。
向きと軸。 ツリーを横向きまたは縦向きで表示します。結合距離は、線形または対数のスケールで表示します。
実行をクリックすると、6つのセクションからなるレポートが表示されます。
| レポートのセクション | 内容 |
|---|---|
| サマリ | 分析条件と、各クラスターの行数とシルエットスコア。 |
| クラスターの階層構造 | インタラクティブなデンドログラム。 |
| クラスター数の選択 | 結合の高さの表。加えて、シルエットスコアまたはエルボー曲線。 |
| クラスターの特徴 | クラスター平均のレーダーチャート、箱ひげ図、各変数の η²。 |
| クラスター・マップ | クラスタリングの距離から PCoA で計算した、2次元上の行。 |
| 出力データ | 各行と、その行のクラスター。 |
階層クラスタリングは、考えられるすべてのグループ分けを1つのツリーにまとめます。
距離を計算する前に、変数を標準化します。
連結法によって、クラスターの形が変わります。最初はウォード法がおすすめです。
長い縦線を横切る位置で、ツリーを切ります。
Exploratory v16.4 では、スライダーを動かすだけで、分析をやり直さずにクラスターの数を比べられます。
Exploratory を v16.4 に更新してください。アナリティクスを開き、クラスタリング分析 › 階層クラスタリングを選びます。