コンテンツにスキップ

BIRCH

データを木の形にまとめながらクラスタリングします。大きなデータでも比較的速いのが特徴です。

入出力

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

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

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

設定項目

「オプション」はチェックを入れるまで中身が出ません。 見出しの横のチェックボックスを on にすると、CF Treeの閾値を入力 / サブクラスタの最大サンプルサイズを入力 / サンプリングデータに対して実行する / 乱数シードを固定する が出ます。

対象列を選択
クラスタリングに使う数値列。複数選べます。
クラスタ数を入力必須
いくつに分けるか。自分で決める必要があります。
CF Treeの閾値を入力
同じ枝にまとめる距離。既定は 0.5。
サブクラスタの最大サンプルサイズを入力
1 つの枝に持てる数。既定は 50。
サンプリングデータに対して実行する
0 より大きく 1 以下の小数を入れると、その割合の行だけを使って木を組み立てます。行が多くて遅いときに使います。クラスタ番号はすべての行に付きます。
乱数シードを固定する
「サンプリングデータに対して実行する」を使うときだけ効きます。どの行を取り出すかを固定するので、整数を入れると毎回同じ結果になります。サンプリングを使わないときは、入れても入れなくても結果は変わりません。考え方は乱数シードを参照。

前処理が要る

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

エラーと対処

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

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

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

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

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

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

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

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

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

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

よく使う例

1. 大きいデータを速く分ける

お題 — 行数が多く k-means だと遅い

入力 — 行数の多い数値データ(購入金額・来店回数)

設定 — クラスタ数に 3、閾値は既定の 0.5

出力 — 入力データに クラスタ番号 の列が付きます。k-means と近い分かれ方が速く出ます

2. 分かれ方が粗い

お題 — クラスタの境目が大まかすぎる

入力 — 同上

設定 — CF Treeの閾値を小さくする(0.5 → 0.2)

出力 — 木が細かく枝分かれし、同じクラスタ数のまま境目が引き直されます。クラスタの数そのものは「クラスタ数を入力」で決めた数から変わりません

関連