コンテンツにスキップ

Mean Shift

点が集まっている中心を探してクラスタリングします。クラスタ数を指定しません。 いくつに分かれるかはデータ次第です。

入出力

ポート内容
入力データ分けたいデータ
出力データ入力データに クラスタ番号 の列を足したもの

分かれ具合を数字で確かめたいときは、クラスタリング結果比較の平均シルエット値を使ってください。このノード自体は数字を出しません。

Spark エンジンでは動きません。

設定項目

「オプション」はチェックを入れるまで中身が出ません。 見出しの横のチェックボックスを on にすると、バンド幅を指定する / サンプリングデータに対して実行する / 乱数シードを固定する が出ます。

対象列を選択
クラスタリングに使う数値列。複数選べます。
バンド幅を指定する
中心を探す範囲の広さ。空のままにするとデータから自動で決めます。
サンプリングデータに対して実行する
0 より大きく 1 以下の小数を入れると、その割合の行だけを使って中心を探します。行が多くて遅いときに使います。クラスタ番号はすべての行に付きます。
乱数シードを固定する
「サンプリングデータに対して実行する」を使うときだけ効きます。どの行を取り出すかを固定するので、整数を入れると毎回同じ結果になります。サンプリングを使わないときは、この手法はもともと同じデータなら同じ結果になります。考え方は乱数シードを参照。

前処理が要る

空欄があると計算できません。 欠損値処理で埋めるか除いてください。

エラーと対処

どのエラーも、入力データか設定を直して実行し直せば消えます。

処理対象列に欠損値がある

処理対象列に欠損値が含まれています。欠損値を除外するか補完してください。

直し方 — 欠損値処理で埋めるか、欠損のある行を外します

処理対象列に数値以外がある

処理対象列に数値型以外のデータが含まれてます。型変換をするか、数値型以外の列を除去してください。

直し方 — 列の型変更で数値にするか、その列を外します

サンプリングの割合が範囲外

サンプリング比率は0以上1以下の値を指定してください。

直し方 — 「サンプリングデータに対して実行する」に 0.1 のように、0 より大きく 1 以下の小数を入れます。0 は使えません

よく使う例

1. いくつに分かれるか決めずに試す

お題 — 顧客を何グループに分けるべきか見当がつかない

入力 — 顧客 1 人が 1 行のデータ(購入金額・来店回数)

設定 — 対象列に 2 列を選び、bandwidth は空のまま

出力 — 入力データに クラスタ番号 の列が付きます。いくつに分かれたかをここで数えて、他の手法を試すときのクラスタ数に使います

2. 大きいデータで終わらない

お題 — 行数が多く実行が返ってこない

入力 — 行数の多い顧客データ

設定 — 小数を入力(0~1) に 0.1 を入れる

出力 — 1 割のデータから bandwidth を決めるので速く終わり、クラスタ番号 は全行に付きます

関連