Affinity Propagation
点どうしで「代表」を選び合うことでクラスタリングします。クラスタ数を指定しません。
入出力
| ポート | 内容 |
|---|---|
| 入力データ | 分けたいデータ |
| 出力データ | 入力データに クラスタ番号 の列を足したもの |
分かれ具合を数字で確かめたいときは、クラスタリング結果比較の平均シルエット値を使ってください。このノード自体は数字を出しません。
Spark エンジンでは動きません。
設定項目
「オプション」はチェックを入れるまで中身が出ません。 見出しの横のチェックボックスを on にすると、Dampingを入力(0.5〜1.0) / 最大繰り返し回数を入力 / サンプリングデータに対して実行する / 乱数シードを固定する が出ます。
- 対象列を選択
- クラスタリングに使う数値列。複数選べます。
- Dampingを入力(0.5〜1.0)
- 計算の揺れを抑える度合い。いまは入れた値が計算に届かず、つねに
0.5で動きます。揺れを抑えたいときは「最大繰り返し回数を入力」を増やすか、「サンプリングデータに対して実行する」で行を減らして試してください。 - 最大繰り返し回数を入力
- 既定は
200。 - サンプリングデータに対して実行する
- 0 より大きく 1 以下の小数を入れると、その割合の行だけを使って代表を選びます。この手法は行数が増えると急に重くなるので、大きいデータでは下げてください。クラスタ番号はすべての行に付きます。
- 乱数シードを固定する
- 整数を入れると毎回同じ結果になります。空のままだと実行のたびに変わります。考え方は乱数シードを参照。
前処理が要る
空欄があると計算できません。 欠損値処理で埋めるか除いてください。
エラーと対処
どのエラーも、入力データか設定を直して実行し直せば消えます。
処理対象列に欠損値がある
処理対象列に欠損値が含まれています。欠損値を除外するか補完してください。
直し方 — 欠損値処理で埋めるか、欠損のある行を外します
処理対象列に数値以外がある
処理対象列に数値型以外のデータが含まれてます。型変換をするか、数値型以外の列を除去してください。
直し方 — 列の型変更で数値にするか、その列を外します
サンプリングの割合が範囲外
サンプリング比率は0以上1以下の値を指定してください。
直し方 — 「サンプリングデータに対して実行する」に 0.1 のように、0 より大きく 1 以下の小数を入れます。0 は使えません
よく使う例
1. 代表となる顧客を選ばせる
お題 — 各グループの「典型的な 1 人」を知りたい
入力 — 顧客 1 人が 1 行のデータ(購入金額・来店回数・単価)
設定 — 対象列に 3 列を選び、Damping は既定の 0.5
出力 — 入力データに クラスタ番号 の列が付きます。グループごとに代表が選ばれるので、同じ番号の行の中から代表に近い顧客を見ていきます
2. 結果を毎回そろえる
お題 — 実行のたびにクラスタ番号が変わる
入力 — 同上
設定 — 乱数シードを固定するに 42 のような整数を入れる
出力 — 同じ値を入れているあいだは、同じ行に同じ クラスタ番号 が付きます
3. 行が多くて終わらない
お題 — 行数が増えたら実行が返ってこない
入力 — 行数の多い顧客データ
設定 — 「サンプリングデータに対して実行する」に 0.1 を入れる
出力 — 1 割の行で代表を選び、その結果を全行に当てはめた クラスタ番号 が付きます