すべてのプロダクト
Search
ドキュメントセンター

PolarDB:k-means クラスタリングアルゴリズム (k-means)

最終更新日:Mar 29, 2026

k-means は、PolarDB for MySQL に組み込まれた反復型のクラスタリングアルゴリズムです。数値型の特徴列に基づいてテーブル内の行を K 個の明確なクラスターにグループ化できます — データを外部 ML プラットフォームにエクスポートすることなく、データベース内で直接実行可能です。

仕組み

k-means は、以下の手順でデータをパーティション分割します:

  1. データセットを K 個のグループに分割し、K 行をランダムに選択して初期重心として設定します。

  2. 各行とすべての重心との間の距離を計算します。

  3. 各行を最も近い重心に割り当てます。

  4. 各重心を、その重心に割り当てられたすべての行の平均値として再計算します。

  5. 重心が安定する(割り当てが変化しなくなる)か、反復回数の上限に達するまで、ステップ 2~4 を繰り返します。

このアルゴリズムでは、x_cols パラメーターで指定した列を特徴量として使用し、各行に対してクラスターラベルを出力します。

適用範囲/利用シーン

k-means は、数値データ内に自然なグループ構造を発見する必要がある場合に有効です。主な応用例は以下のとおりです:

  • ドキュメント分類:文書を語彙頻度(TF)を用いたベクターで表現し、これらのベクターをクラスタリングすることで、トピックや内容に基づく類似文書のグループを特定します。

  • 顧客セグメンテーション:購入履歴、関心事項、またはアクティビティデータに基づいて顧客をグループ化し、ターゲットキャンペーン向けのセグメントを特定します。例えば、通信事業者のサブスクライバーを支払い行動(チャージ、テストメッセージ送信、ウェブサイト閲覧)に基づいてセグメント化します。

  • 不正検出:過去のトランザクション履歴をクラスタリングし、不正請求に関連するパターンを特定します。その後、既知の不正クラスターと一致する新規レコードをモデルでフラグ付けします。この手法は、自動車保険、医療保険、および一般保険分野の不正検出に採用されています。

  • IT アラートのクラスタリング:ネットワーク、ストレージ、またはデータベースインフラストラクチャから生成されるアラートをクラスタリングし、アラートのカテゴリ、平均修復時間(MTTR)を特定するとともに、カスケード障害の発生を事前に予測します。

  • 通話記録分析:通話詳細記録(CDR)と顧客プロファイルを統合し、利用行動に基づいてサブスクライバーをクラスタリングすることで、サービス需要の予測や解約率低減を支援します。

  • 犯罪パターン分析:犯罪の種別および発生場所に基づいて事件をクラスタリングし、ホットスポットを特定し、捜査優先順位付けを支援します。

パラメーター

以下のパラメーターを model_parameter オプションに設定します(CREATE MODEL 文内)。

パラメーター説明デフォルト値
n_clustersクラスター数(K)。4

サンプル

以下のサンプルでは、数値型の列 dx1 および dx2 を含む db4ai.testdata1 テーブルを使用します。

k-means モデルの作成

/*polar4ai*/CREATE MODEL test_kmeans WITH
(model_class = 'kmeans', x_cols = 'dx1,dx2',
 y_cols='', model_parameter=(n_clusters=2))
 AS (SELECT * FROM db4ai.testdata1);

この文は、test_kmeans という名前の k-means モデルをトレーニングします。モデルは、dx1 および dx2 列に基づき、行を 2 個のグループにクラスタリングします。

予測の実行

モデルのトレーニング完了後、PREDICT を使用して各行のクラスター割り当てを取得します:

/*polar4ai*/SELECT dx1, dx2 FROM
PREDICT(MODEL test_kmeans,
SELECT * FROM db4ai.testdata1 LIMIT 10)
WITH (x_cols = 'dx1,dx2',
      y_cols='');

結果の各行には、元の特徴量値(dx1dx2)と、その行が割り当てられたクラスターを示すクラスターラベルが含まれます。

注意事項

  • x_cols で指定する列は、浮動小数点型または整数型である必要があります。