コンテンツにスキップ

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(外れ値)が増えます。 分かれすぎたら値を戻してください

関連