DBSCAN (Density-Based Spatial Clustering of Applications with Noise)
密度ベースのクラスタリングと異常検知のためのDBSCANを探索します。Ultralytics YOLO26と併用し、データセット内の任意の形状やノイズを特定する方法を学びましょう。
DBSCAN(Density-Based Spatial Clustering of Applications with Noise)は、密度に基づいてデータ内の明確なグループを特定するために使用される強力な教師なし学習アルゴリズムです。球形のクラスターを前提としたり、あらかじめグループ数を指定する必要がある従来のクラスタリング手法とは異なり、DBSCANは低密度領域で区切られた高密度領域を特定します。この機能により、任意の形状やサイズのクラスターを発見できるため、背後にある構造が不明な複雑な現実世界のデータセットの分析に非常に効果的です。このアルゴリズムの大きな利点は、低密度領域の点をクラスターに強制的に含めるのではなく、自動的にノイズとして分類するという組み込みの異常検知機能です。
主要な概念とパラメータ#
アルゴリズムは、各データポイントの周囲に近傍領域を定義し、その近傍に他のポイントがいくつ入るかを数えることで動作します。このプロセスは2つの主要なハイパーパラメータによって制御され、データの特定の特性に合わせて慎重なハイパーパラメータチューニングが必要です。
- Epsilon (eps): このパラメータは、近傍点を探すための点の周囲の最大半径を指定します。これは「到達可能性」の距離を定義します。
- Minimum Points (minPts): これは、密な領域(「コア」)を形成するために、Epsilon半径内に必要な最小データ点数を設定します。
これらのパラメータに基づいて、DBSCANはデータセット内のすべての点を次の3つのタイプのいずれかに分類します。
-
コアポイント:
epsの半径内に少なくともminPts個の近傍点を持つポイント。これらのポイントはクラスターの内部を形成します。 -
ボーダーポイント: コアポイントの
epsの半径内にあるが、自分自身の近傍点はminPts個未満であるポイント。これらはクラスターの端を形成します。 -
ノイズポイント: コアポイントでもボーダーポイントでもないポイント。これらは実質的に外れ値として扱われ、外れ値検知などのタスクに役立ちます。
DBSCANとK-Meansクラスタリングの比較#
どちらも機械学習(ML)において基本となるものですが、DBSCANは特定のシナリオにおいてK-Meansクラスタリングに比べて明確な利点を提供します。K-Meansはセントロイドとユークリッド距離に依存しており、多くの場合、クラスターが凸状または球形であると仮定します。これにより、細長いデータや三日月型のデータに対してパフォーマンスが低下する可能性があります。対照的に、DBSCANの密度ベースのアプローチでは、データ分布の自然な輪郭に追従することができます。
もう一つの大きな違いは初期化にあります。K-Meansでは、事前の知識なしでは難しい場合があるクラスター数(k)をユーザーが事前に指定する必要があります。DBSCANは、データの密度からクラスター数を自然に推論します。さらに、K-Meansはすべてのポイントをグループに強制的に含めるため外れ値に対して敏感であり、クラスターの中心を歪める可能性があります。DBSCANがポイントをノイズとしてラベル付けする能力により、データの異常が有効なクラスターを汚染するのを防ぎ、予測モデリングなどの後続タスクでよりクリーンな結果を保証します。
実社会での応用#
DBSCANは、空間分析と堅牢なノイズ処理を必要とする業界で広く適用されています。
- 地理空間分析: 都市計画やロジスティクスにおいて、アナリストはDBSCANを使用して、配送フリートやライドシェアサービスのGPS座標をグループ化します。高密度な降車ゾーンを特定することで、企業はルート計画や倉庫の場所を最適化できます。たとえば、ロジスティクスにおけるAIでは、効率を向上させるために配送ストップのクラスタリングが行われることがよくあります。
- ビジョンベースの異常検知: 製造業において、YOLO26などのモデルを活用した外観検査システムが表面の欠陥を検知することがあります。DBSCANは、製品マップ上のこれら欠陥の座標をクラスタリングできます。孤立した検知はセンサーノイズとして片付けられる可能性がありますが、高密度なクラスターは体系的な製造上の欠陥を示しており、品質検査のためのアラートをトリガーします。
コード例: 検出された重心のクラスタリング#
コンピュータビジョンのワークフローでは、開発者は通常Ultralytics Platformを使用してオブジェクト検出器をトレーニングし、その結果を後処理します。次の例は、sklearnライブラリを使用して検出されたオブジェクトのセントロイドをクラスタリングする方法を示しています。これは、空間的に関連する検出をグループ化し、同じオブジェクトに対して複数のバウンディングボックスをマージしたり、オブジェクトのグループを特定したりするのに役立ちます。
import numpy as np
from sklearn.cluster import DBSCAN
# Simulated centroids of objects detected by YOLO26
# [x, y] coordinates representing object locations
centroids = np.array(
[
[100, 100],
[102, 104],
[101, 102], # Cluster 1 (Dense group)
[200, 200],
[205, 202], # Cluster 2 (Another group)
[500, 500], # Noise (Outlier)
]
)
# Initialize DBSCAN with a radius (eps) of 10 and min_samples of 2
# This groups points close to each other
clustering = DBSCAN(eps=10, min_samples=2).fit(centroids)
# Labels: 0, 1 are cluster IDs; -1 represents noise
print(f"Cluster Labels: {clustering.labels_}")
# Output: [ 0 0 0 1 1 -1]ディープラーニングとの統合#
DBSCANは古典的なアルゴリズムですが、現代のディープラーニングと効果的に組み合わせることができます。たとえば、畳み込みニューラルネットワーク(CNN)から抽出された高次元特徴量は、DBSCANを適用する前にPCAやt-SNEなどの次元削減手法を使用して削減できます。このハイブリッドアプローチにより、単なるピクセル位置ではなく、意味的類似性に基づいて複雑な画像データをクラスタリングすることが可能になります。これは、ラベル付けされたトレーニングデータが不足している教師なし学習のシナリオで特に役立ち、研究者がラベルなし画像の膨大なアーカイブを効率的に整理するのに役立ちます。






