Yolo 深圳
深セン
今すぐ参加
用語集

K-平均法クラスタリング

教師なし学習のためのK-Meansクラスタリングを探求しましょう。このアルゴリズムがデータを分割し、AIアプリケーションを強化し、Ultralytics モデルに情報を提供する仕組みを発見してください。

K-Meansクラスタリングは、 教師なし学習の分野において基礎的かつ広く用いられるアルゴリズムであり、 ラベル付けされていないデータ内の隠れた構造を明らかにすることを目的としています。 その主な目的は、データセットをクラスタと呼ばれる明確なサブグループに分割し、 同一グループ内のデータポイントが可能な限り類似している一方で、 異なるグループ内のデータポイントが明確に区別されるようにすることです。データマイニングと探索的分析の基盤として、K-Meansはデータサイエンティストが事前定義されたラベルや人間の監督なしに、複雑な情報を管理可能なカテゴリへ自動的に整理することを可能にします。

アルゴリズムの仕組み

K-Meansの動作は反復的であり、距離メトリックに基づいて学習データの最適なグループ分けを決定する。 このアルゴリズムは、各項目をK個のクラスターに分類することで動作する。各項目は、最も近い平均値(重心)を持つクラスターに属する。 このプロセスにより、各グループ内の分散が最小化される。 ワークフローは一般的に以下の手順に従う:

  1. 初期化:アルゴリズムはK個の初期点を中心点として選択する。これらはランダムに選択するか、収束を早めるためにk-means++のような最適化手法を用いて選択することができる。
  2. 課題:データセット内の各データポイントは、特定の距離測定基準(最も一般的なのはユークリッド距離)に基づいて、最も近い重心点に割り当てられる。
  3. 更新:クラスタに割り当てられた全データポイントの平均(算術平均)を算出することで、 中心点が再計算されます。
  4. 反復処理:ステップ2と3は、中心点が著しく移動しなくなるか、最大反復回数に達するまで繰り返される。

クラスタの適切な数(K)を決定することは、このアルゴリズムを使用する上で重要な側面である。実務者は、エルボー法のような手法を用いたり、シルエットスコアを分析したりして、結果として得られるクラスタがどれだけ分離されているかを評価することが多い。

AIの実世界での応用

K-Meansクラスタリングは汎用性が高く、様々な産業分野においてデータの簡素化や前処理に活用されています。

  • 画像圧縮と色量子化: コンピュータビジョン(CV)において、K-Meansはピクセルの色をクラスタリングすることで画像のファイルサイズを削減します。数千の色をより少ない主要な色セットにグループ化することで、このアルゴリズムは画像の視覚的構造を保持しつつ効果的に次元削減を行います。この手法は、高度な物体検出モデルを訓練する前に入力データを正規化するためによく用いられます。
  • 顧客セグメンテーション:企業はクラスタリングを活用し、購買履歴、人口統計、またはウェブサイト上の行動に基づいて顧客をグループ化します。これにより、小売ソリューションにおけるAIの重要な要素であるターゲットを絞ったマーケティング戦略が可能になります。高価値顧客や離反リスクを特定することで、企業は効果的にメッセージをカスタマイズできます。
  • 異常検出:システムは「正常」なデータクラスターの構造を学習することで、 いかなる中心点からも大きく外れた外れ値を特定できる。これは 金融分野における不正検知やネットワークセキュリティの異常検出に有用であり、 標準パターンから逸脱した不審な活動を検知するのに役立つ。
  • アンカーボックス生成:従来、古いYOLO などの物体検出器は、 トレーニングデータセットから最適なアンカーボックスを計算するためにK-Meansを利用していた。 一方、YOLOv26などの現代的なモデルは高度なアンカーフリー手法を採用しているが、 K-Meansの理解は検出アーキテクチャの進化において依然として重要である。

実施例

Ultralytics 深層学習フレームワークが複雑なトレーニングパイプラインを処理する一方で、K-Meansはデータセットの統計分析によく用いられます。以下のPython 、人気のあるScikit-learnライブラリを使用して2次元座標(物体の重心点をシミュレート)をクラスタリングする方法を示しています。

import numpy as np
from sklearn.cluster import KMeans

# Simulated coordinates of detected objects (e.g., from YOLO26 inference)
points = np.array([[10, 10], [12, 11], [100, 100], [102, 101], [10, 12], [101, 102]])

# Initialize K-Means to find 2 distinct groups (clusters)
kmeans = KMeans(n_clusters=2, random_state=0, n_init="auto").fit(points)

# Output the cluster labels (0 or 1) for each point
print(f"Cluster Labels: {kmeans.labels_}")
# Output: [1 1 0 0 1 0] -> Points near (10,10) are Cluster 1, near (100,100) are Cluster 0

関連アルゴリズムとの比較

プロジェクトに適切なツールを選択するためには、K-Meansを類似した名称や機能を持つ他のアルゴリズムと区別することが重要です。

  • K-MeansとK-Nearest Neighbors (KNN):これらは名称に「K」が含まれるため、しばしば混同される。 K-Meansはラベル付けされていないデータのクラスタリングに用いられる教師なしアルゴリズムである。一方、K-Nearest Neighbors(KNN)画像分類や回帰に用いられる教師あり学習アルゴリズムであり、ラベル付きデータに依存し、近傍の多数派クラスに基づいて予測を行う。
  • K-MeansとDBSCANの比較:どちらもデータをクラスタリングするが、K-Meansはクラスタが球状であると仮定し、 クラスタ数を事前に定義する必要がある。 DBSCANは 密度に基づいてデータをグループ化し、任意の形状のクラスタを発見でき、ノイズへの耐性が優れている。このため、 クラスタ数が不明な不規則な構造を持つデータセットに見られる複雑な空間データに対しては、 DBSCANの方が優れている。

Ultralytics コミュニティに参加する

AIの未来を共に切り開きましょう。グローバルなイノベーターと繋がり、協力し、成長を。

今すぐ参加