クラスタ解釈用データを作る
クラスタリングした結果を入力すると、クラスタごとの代表値をまとめた表を作ります。クラスタ番号だけでは分からない「このグループは何者か」を読むための機能です。
入出力
| ポート | 内容 |
|---|---|
| 入力データ | クラスタ番号 の列を持つデータ |
| クラスタ特徴 | クラスタごとの代表値・データ数・特徴の列をまとめた表 |
| グラフ用データ | 代表値の列だけを縦長に並べ替えたもの。棒グラフにそのまま使えます |
入力には クラスタ番号 の列が要ります。 K-means などのクラスタリングの出力をそのままつないでください。
Spark エンジンでは動きません。
設定項目
「オプション」はチェックを入れるまで中身が出ません。 見出しの横のチェックボックスを on にすると、集約関数を選択 が出ます。
- クラスタリングに利用した列を指定する
- チェックを入れると、下に列を選ぶ欄が出ます。入れないときは、データの中の数値列すべてがまとめの対象になります。
- 対象列を選択
- 上のチェックを入れたときだけ出ます。まとめたい数値の列を選びます。複数選べます。クラスタリングに使った列をそのまま選ぶと読みやすくなります。
- 集約関数を選択
- 平均(既定)か中央値。選んだほうで代表値を出します。
出力される列
クラスタ特徴
| 列 | 中身 |
|---|---|
| クラスタ番号 | 元のクラスタ番号 |
| 平均_(列名) | その列のクラスタごとの平均。集約関数に中央値を選ぶと 中央値_(列名) になります |
| データ数 | そのクラスタに入っている行数 |
| 特徴_高 | そのクラスタでとくに高い列の名前をカンマでつないだもの |
| 特徴_低 | そのクラスタでとくに低い列の名前をカンマでつないだもの |
特徴_高 と 特徴_低 は、列ごとの代表値をクラスタ間で並べ直して決めています。 クラスタの中で飛び抜けて高い(低い)列が、そのクラスタの名札になります。どちらにも当てはまらないクラスタでは空欄になります。
グラフ用データ
クラスタ番号・特徴量名・値の 3 列です。縦棒グラフに入れると、クラスタごとの代表値を並べて見られます。
読み方の例
アヤメのデータを 3 つに分けたときの出力
アヤメ(iris)150 行を K-means(クラスタ数 3、乱数シード 42)で分け、集約関数は既定の平均で実行したときの クラスタ特徴 です。
| クラスタ番号 | 平均_がく長さ | 平均_がく幅 | 平均_花弁長さ | 平均_花弁幅 | データ数 | 特徴_高 | 特徴_低 |
|---|---|---|---|---|---|---|---|
| 0 | 5.902 | 2.748 | 4.394 | 1.434 | 62 | (空欄) | 平均_がく幅 |
| 1 | 5.006 | 3.428 | 1.462 | 0.246 | 50 | 平均_がく幅 | 平均_がく長さ,平均_花弁長さ,平均_花弁幅 |
| 2 | 6.850 | 3.074 | 5.742 | 2.071 | 38 | 平均_がく長さ,平均_花弁長さ,平均_花弁幅 | (空欄) |
ここから読めること
- クラスタ 1(50 行) — 花弁が飛び抜けて小さく、そのわりにがくは最も幅広い。
特徴_高が平均_がく幅だけ、特徴_低が残り 3 列、という組み合わせがそのまま名札になります - クラスタ 2(38 行) — がくの長さと花弁の 2 列が高い側。
特徴_低は空欄です - クラスタ 0(62 行) — どの列も飛び抜けていないので
特徴_高が空欄になります。「中間のグループ」はこの形で見分けられます
特徴_高 / 特徴_低 は、列ごとの代表値をクラスタ間で偏差値に直して決めています。 クラスタが 3 つのときは、最も高い 1 つが 特徴_高 に、最も低い 1 つが 特徴_低 に入ることがほとんどで、差が小さい列はどちらにも入りません。 クラスタ 0 の 平均_がく長さ(5.902、3 つの真ん中)が入っていないのがその例です。
クラスタ番号の振られ方は乱数シードで変わります。 上の 0 / 1 / 2 という番号そのものに意味はありません。
エラーと対処
どのエラーも、つなぎ方か入力データを直して実行し直せば消えます。
クラスタ番号の列がない
クラスタ番号列にクラスタリング結果が入っているデータを入力してください。
直し方 — K-means などのクラスタリングの出力をつなぎます。途中で列名を変えていたら クラスタ番号 に戻してください
処理対象列に数値以外がある
処理対象列に数値型以外のデータが含まれてます。型変換をするか、数値型以外の列を除去してください。
直し方 — 列の型変更で数値にするか、その列を外します。「クラスタリングに利用した列を指定する」で数値列だけを選んでも直ります
よく使う例
1. クラスタの特徴を読む
お題 — クラスタ番号は出たが、各グループが何者か分からない
入力 — K-means の出力(購入金額・来店回数・クラスタ番号)
設定 — 既定のまま(チェックなし、集約関数は平均)
出力 — クラスタごとの平均と 特徴_高 / 特徴_低。名札になる列がそのまま読める
2. まとめる列を絞る
お題 — ID や年号の列まで平均されてしまう
入力 — クラスタリングの出力(数値列が 20 列ある)
設定 — 「クラスタリングに利用した列を指定する」にチェックを入れ、意味のある数値列だけ選ぶ
出力 — 選んだ列だけの平均になり、表が読める幅に収まる
3. 外れ値に引っぱられないようにする
お題 — 1 件だけ桁違いの行があり、平均が実態とずれる
入力 — クラスタリングの出力
設定 — 集約関数に 中央値 を選ぶ
出力 — 列名が 中央値_(列名) に変わり、真ん中の値で比べられる
4. グラフにして見比べる
お題 — 表の数字だけでは差が分かりにくい
入力 — このノードの グラフ用データ ポート
設定 — 縦棒グラフで、横軸に特徴量名、縦軸に値、色分けにクラスタ番号
出力 — クラスタごとの高さの違いが並んで見える