DBSCAN
密度の高いところを 1 つのかたまりと見なしてクラスタリングします。クラスタ数を指定しません。 いくつに分かれるかはデータ次第で、どのかたまりにも入らない点は外れ値として分けられます。
入出力
| ポート | 内容 |
|---|---|
| 入力データ | 分けたいデータ |
| 出力データ | 入力データに クラスタ番号 の列を足したもの |
分かれ具合を数字で確かめたいときは、クラスタリング結果比較の平均シルエット値を使ってください。このノード自体は数字を出しません。
Spark エンジンでは動きません。
設定項目
「オプション」はチェックを入れるまで中身が出ません。 見出しの横のチェックボックスを on にすると、εの最大値 / クラスタ毎の最小サンプルサイズ が出ます。
- 対象列を選択
- クラスタリングに使う数値列。複数選べます。
- εの最大値
- 同じかたまりと見なす距離。既定は
0.5。大きくするとかたまりが粗くなり、小さくすると外れ値が増えます。 - クラスタ毎の最小サンプルサイズ
- かたまりと認めるのに要る点の数。既定は
5。
前処理が要る
空欄があると計算できません。 欠損値処理で埋めるか除いてください。
エラーと対処
どのエラーも、入力データか設定を直して実行し直せば消えます。
処理対象列に欠損値がある
処理対象列に欠損値が含まれています。欠損値を除外するか補完してください。
直し方 — 欠損値処理で埋めるか、欠損のある行を外します
処理対象列に数値以外がある
処理対象列に数値型以外のデータが含まれてます。型変換をするか、数値型以外の列を除去してください。
直し方 — 列の型変更で数値にするか、その列を外します
よく使う例
1. 外れ値だけを取り出す
お題 — 購買データから、どのかたまりにも入らない特異な顧客を見つけたい
入力 — 顧客 1 人が 1 行のデータ(購入金額・来店回数)。10 行のうち 8 行が 11,000〜14,000 円 / 2〜5 回 に固まっていて、480,000 円 / 1 回 と 300 円 / 20 回 が 1 行ずつ混ざっている
設定 — 手前に数値の正規化を置いて 2 列を 0〜1 に揃え、対象列にその 2 列。εの最大値は既定の 0.5、クラスタ毎の最小サンプルサイズも既定の 5
出力 — 固まっている 8 行が クラスタ番号 0、残りの 2 行が -1。条件で行をフィルタで -1 だけ残せば、外れている 2 人が取り出せます
正規化を飛ばして生の金額のまま同じ設定で実行すると、10 行すべてが -1 になります。 0.5 円以内に 5 人が固まっていることはないためです
2. かたまりが 1 つにまとまってしまう
お題 — 全部が同じクラスタ番号になった
入力 — 同上(正規化済み)
設定 — εの最大値を小さくする(0.5 → 0.3 など)
出力 — クラスタ番号 が細かく分かれるようになります。行き過ぎると -1(外れ値)が増えます。 分かれすぎたら値を戻してください