階層クラスタリング
近いものから順にまとめていき、最後に指定した数で切り分けます。
入出力
| ポート | 内容 |
|---|---|
| 入力データ | 分けたいデータ |
| 出力データ | 入力データに クラスタ番号 の列を足したもの |
分かれ具合を数字で確かめたいときは、クラスタリング結果比較の平均シルエット値を使ってください。このノード自体は数字を出しません。
Spark エンジンでは動きません。
設定項目
「オプション」はチェックを入れるまで中身が出ません。 見出しの横のチェックボックスを on にすると、Linkageの手法を選択 / 類似度の計算方法を選択 が出ます。
- 対象列を選択
- クラスタリングに使う数値列。複数選べます。
- クラスタ数を入力必須
- いくつに分けるか。自分で決める必要があります。
- Linkageの手法を選択
- まとめ方。Ward法 / Complete / Average から選びます。
- 類似度の計算方法を選択
- ユークリッド距離 / L1 / L2 / マンハッタン距離 / コサイン類似度。Linkage に Complete か Average を選んだときだけ欄が出ます。
欄が出ない・選べない組み合わせ
Ward法を選んでいるあいだは「類似度の計算方法を選択」の欄が出ません。 Ward法はユークリッド距離で計算する手法なので、距離を選ばせる意味がないためです。ほかの距離で測りたいときは Linkage を Complete か Average に変えると欄が出ます。
どちらも空のままなら Ward法とユークリッド距離で計算します。
前処理が要る
空欄があると計算できません。 欠損値処理で埋めるか除いてください。
エラーと対処
どのエラーも、入力データか設定を直して実行し直せば消えます。
処理対象列に欠損値がある
処理対象列に欠損値が含まれています。欠損値を除外するか補完してください。
直し方 — 欠損値処理で埋めるか、欠損のある行を外します
処理対象列に数値以外がある
処理対象列に数値型以外のデータが含まれてます。型変換をするか、数値型以外の列を除去してください。
直し方 — 列の型変更で数値にするか、その列を外します
よく使う例
1. まとまり方の順序を見る
お題 — どのグループが近いのかを知りたい
入力 — 商品 1 つが 1 行のデータ(売上・粗利・販売数)
設定 — クラスタ数に 4、Linkage は Ward法
出力 — 入力データに クラスタ番号 の列が付き、指定した数に分かれます
2. コサイン類似度でまとめる
お題 — 値の大きさより向きの近さでまとめたい
入力 — 同上
設定 — Linkage を Average か Complete にしてから、類似度の計算方法に コサイン類似度 を選ぶ
出力 — 距離ではなく向きの近さでまとまった クラスタ番号 が付きます