階層クラスタリングって何? デンドログラムの読み方からクラスター数の決め方まで

階層クラスタリングは、似ている行をグループにまとめ、すべてのグループを1つのツリーで表します。Exploratory v16.4 では、この手法をアナリティクスで使えるようになりました。この記事では、手法のしくみ、ツリーの読み方、Exploratory での使い方を説明します。

数を決める前に、グループを見つける

K-Means クラスタリングでは、分析の前にクラスターの数を決める必要があります。しかし多くの場合、この数はまだわかりません。まずは、データの構造を見たいはずです。

階層クラスタリングでは、この数は必要ありません。データ点を少しずつ大きなグループにまとめ、そのたびに結合をツリーに記録します。クラスターの数は、分析の後にツリーを見て選びます。

この手法は、小〜中規模のデータに向いています。たとえば、50店舗、200製品、1,000件のアンケート回答などです。

手法のしくみ

最もよく使われるのは、凝集型と呼ばれる方法です。各データ点を1つのクラスターとして始め、下から上へとまとめていきます。手順は次の6つです。

  1. すべてのデータ点のペアについて、距離を計算します。

  2. 各データ点を、それぞれ1つのクラスターにします。

  3. 距離が最も短い2つのクラスターを見つけます。

  4. その2つのクラスターを、1つのクラスターに結合します。

  5. 新しいクラスターと、ほかの各クラスターとの距離を計算します。

  6. すべてのデータ点が1つのクラスターになるまで、手順3〜5を繰り返します。

14個のデータ点で試してみましょう。次のステップをクリックすると、結合が1つずつ進みます。左の散布図にクラスターが、右のデンドログラムに各結合の高さが表示されます。

1回のステップで、2つのクラスターを1つに結合します。データ点が n 個なら、結合は全部で n − 1 回です。

最初に必要なのは距離

最初の結合の前に、2つのデータ点がどれだけ離れているかを決める必要があります。最もよく使われるのは、ユークリッド距離です。2つのデータ点を結ぶ直線の長さのことです。

点 P と点 Q を結ぶ直角三角形。斜辺がユークリッド距離 d です。
点 P と点 Q を結ぶ直角三角形。斜辺がユークリッド距離 d です。

図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ドルです。年齢の差は大きく、収入の差は小さいといえます。しかし元の値のままでは、距離はほぼ収入で決まってしまいます。

良い例:各変数を標準化すると、年齢が距離の2乗の99.8%を占めます。悪い例:元の値のままでは、収入が99.98%を占めます。
良い例:各変数を標準化すると、年齢が距離の2乗の99.8%を占めます。悪い例:元の値のままでは、収入が99.98%を占めます。

距離を計算する前に、変数を標準化してください。Exploratory では、標準化がデフォルトで有効です。

連結法:グループどうしの距離

最初の結合が終わると、1つのクラスターに複数のデータ点が入ります。そこで、2つのクラスターの距離を決めるルールが必要になります。このルールを連結法と呼びます。よく使われる連結法は4つです。

3点ずつの2つのクラスターで見る、最短距離法、最長距離法、群平均法、ウォード法
3点ずつの2つのクラスターで見る、最短距離法、最長距離法、群平均法、ウォード法
連結法 クラスター1とクラスター2の距離 よくある結果
最短距離法 クラスター1の点からクラスター2の点までの、最も短い距離。 細長いクラスター。ノイズの点が1つあるだけで、2つのグループがつながることがあります。
最長距離法 クラスター1の点からクラスター2の点までの、最も長い距離。 直径が同じくらいの、まとまったクラスター。
群平均法 2つのクラスターの点どうしの、すべての距離の平均。 最短距離法と最長距離法の中間の結果。
ウォード法(Exploratory のデフォルト) 結合した後の、クラスター内平方和の増加。 大きさが同じくらいの、まとまったクラスター。

どの連結法を選ぶかで、結果が変わります。上の操作パネルに戻り、最短距離法を選んですべて表示をクリックしてください。点 N は、左下のグループと右のグループの間にあります。最短距離法では、点 N が橋の役目をして、2つのグループを1本の長い鎖のようにつないでしまいます。ウォード法では、3つのグループが分かれたままです。

同じデータでも、連結法によってクラスターが変わることがあります。最初はウォード法を使うのがおすすめです。

デンドログラムの読み方

デンドログラムは、すべての結合を1つの図で表します。各結合の高さは、その結合のときの2つのクラスターの距離です。クラスターに分けるには、ツリーを水平な線で切ります。

6枚の葉、3つのクラスター、カットラインを示したデンドログラム
6枚の葉、3つのクラスター、カットラインを示したデンドログラム

図2. 6個のデータ点のデンドログラム。カットラインで3つのクラスターに分かれます。

  1. 葉。 下に並ぶ葉の1枚1枚が、1つのデータ点です。

  2. 結合の高さ。 横線の高さは、その結合のときの距離です。

  3. 長い縦線。 縦線が長いほど、2つのクラスターの間の隔たりが大きいことを示します。

  4. カットライン。 水平なカットラインでツリーを分けます。線より下の枝の1本1本が、1つのクラスターです。

注意: データ点どうしを、横方向の位置で比べないでください。隣り合う葉でも、離れていることがあります。比べるときは、結合の高さを使います。

最も長い縦線を横切る位置で、ツリーを切ります。そうすると、線より下のクラスターどうしがはっきり分かれます。

階層クラスタリングと K-Means、どちらを使うか

どちらの手法もクラスターを見つけます。ただし、しくみも結果も違います。次の表を参考に、手法を選んでください。

項目 階層クラスタリング K-Means クラスタリング
クラスター数 分析の後で選びます。 分析の前に設定します。
結果 すべての結合を表すツリー。 1組のクラスター。
毎回同じ結果か はい。 いいえ。ランダムな初期点によって結果が変わります。
データの大きさ 小〜中規模。メモリは n² に比例して増えます。 大きなデータにも使えます。
クラスターの形 連結法によって変わります。 大きさが同じくらいの、丸いクラスター。

Exploratory v16.4 で試す

Exploratory v16.4 では、アナリティクスに階層クラスタリングが加わりました。コードを書く必要はありません。ツリーの計算は一度だけです。あとはデンドログラム上で、クラスターの数を比べられます。

  1. データフレームのアナリティクス・ビューを開きます。新しいアナリティクスを追加します。

  2. タイプのメニューで、クラスタリング分析 › 階層クラスタリングを選びます。

  3. クラスタリング対象で、行を選びます。

  4. 変数に、数値の列を選びます。

  5. 必要なら、ラベルに使う列を選びます。その列の値が、葉のラベルになります。

  6. 実行をクリックします。

  7. デンドログラムのクラスター数スライダーを動かします。候補を比べます。

  8. 枝をクリックします。そのグループの行が、詳細データの表示で開きます。

設定 値 デフォルト
クラスタリング対象 行、変数 行
クラスターの数 2以上 3
連結法 ウォード法、最長距離法、群平均法、最短距離法 ウォード法
距離 ユークリッド距離、マンハッタン距離 ユークリッド距離
インタラクティブ表示の最大クラスター数 2以上 10
最適なクラスターの数を探索する なし、シルエット法、エルボー法 シルエット法
変数を標準化する TRUE、FALSE TRUE

ウォード法は、ユークリッド距離だけを使います。ウォード法を選ぶと、距離の設定は表示されません。クラスタリング対象: 変数を選ぶと、行ではなく変数をクラスターに分けます。距離は 1 − 相関係数(ピアソンまたはスピアマン)です。このモードでは、ウォード法は使えません。

Exploratory のデンドログラムの模式図。クラスター数のスライダー、カットライン、枝のツールチップ
Exploratory のデンドログラムの模式図。クラスター数のスライダー、カットライン、枝のツールチップ

図3. Exploratory v16.4 のデンドログラムの模式図(ラベルに都市名の列を使った例)。スクリーンショットではありません。

  1. クラスター数。 スライダーを動かすか、− と + をクリックします。カットラインと色がすぐに変わります。分析をやり直す必要はありません。

  2. カットライン。 カットラインより葉の側にある枝の1本1本が、1つのクラスターです。クラスター番号は上から順に付きます。

  3. 枝。 枝にポインターを合わせると、行数、割合、結合距離が表示されます。枝をクリックすると、詳細データの表示が開きます。

  4. ズーム。 拡大、縮小、全体表示ができます。マウスホイールも使えます。

  5. 向きと軸。 ツリーを横向きまたは縦向きで表示します。結合距離は、線形または対数のスケールで表示します。

レポートを読む

実行をクリックすると、6つのセクションからなるレポートが表示されます。

レポートのセクション 内容
サマリ 分析条件と、各クラスターの行数とシルエットスコア。
クラスターの階層構造 インタラクティブなデンドログラム。
クラスター数の選択 結合の高さの表。加えて、シルエットスコアまたはエルボー曲線。
クラスターの特徴 クラスター平均のレーダーチャート、箱ひげ図、各変数の η²。
クラスター・マップ クラスタリングの距離から PCoA で計算した、2次元上の行。
出力データ 各行と、その行のクラスター。

まとめ

  • 階層クラスタリングは、考えられるすべてのグループ分けを1つのツリーにまとめます。

  • 距離を計算する前に、変数を標準化します。

  • 連結法によって、クラスターの形が変わります。最初はウォード法がおすすめです。

  • 長い縦線を横切る位置で、ツリーを切ります。

  • Exploratory v16.4 では、スライダーを動かすだけで、分析をやり直さずにクラスターの数を比べられます。

Exploratory v16.4 で階層クラスタリングを試す

Exploratory を v16.4 に更新してください。アナリティクスを開き、クラスタリング分析 › 階層クラスタリングを選びます。