DBSCAN (Density-Based Spatial Clustering of Applications with Noise)
密度ベースのクラスタリングと異常検知のためのDBSCANを探索します。Ultralytics YOLO26と併用し、データセット内の任意の形状やノイズを特定する方法を学びましょう。
DBSCAN (Density-Based Spatial Clustering of Applications with Noise) は、密度に基づいてデータ内の明確なグループを識別するために使用される強力な教師なし学習アルゴリズムです。球状のクラスターを前提としたり、事前にグループ数を指定したりする必要がある従来のクラスタリング手法とは異なり、DBSCANは低密度の領域によって分離された高密度の領域を見つけ出します。この機能により、任意の形状やサイズのクラスターを発見できるため、基礎となる構造が未知である複雑な 実世界のデータセット を分析するのに非常に効果的です。このアルゴリズムの大きな利点は、低密度の領域にある点をクラスターに強制的に含めるのではなく、自動的にノイズとして分類するため、異常検知 機能が組み込まれている点です。
Link to this section主要な概念とパラメータ#
このアルゴリズムは、各データ点の周囲に近傍領域を定義し、その近傍内にいくつの点が収まるかを数えることで機能します。このプロセスは2つの主要なハイパーパラメータによって制御されており、データの特定の特性に合わせて ハイパーパラメータチューニング を行う必要があります。
- Epsilon (eps): このパラメータは、近傍点を探すための点の周囲の最大半径を指定します。これは「到達可能性」の距離を定義します。
- Minimum Points (minPts): これは、密な領域(「コア」)を形成するために、Epsilon半径内に必要な最小データ点数を設定します。
これらのパラメータに基づいて、DBSCANはデータセット内のすべての点を次の3つのタイプのいずれかに分類します。
-
Core Points: Points that have at least
minPtsneighbors within theepsradius. These points form the interior of a cluster. -
境界点: コア点の
eps半径内にあるものの、それ自身の近傍点はminPts個未満である点です。これらがクラスターの端を形成します。 -
ノイズ点: コア点でも境界点でもない点です。これらは実質的に外れ値として扱われ、外れ値検知 などのタスクに役立ちます。
Link to this sectionDBSCANとK-Meansクラスタリングの比較#
どちらも 機械学習 (ML) の基本ですが、DBSCANは特定のシナリオにおいて K-Meansクラスタリング よりも明確な利点があります。K-Meansは重心と ユークリッド距離 に依存しており、多くの場合、クラスターが凸状または球状であることを前提としています。そのため、細長い形状や三日月状のデータに対してはパフォーマンスが低下する可能性があります。対照的に、DBSCANの密度ベースのアプローチでは、データ分布の自然な輪郭に従うことができます。
もう一つの大きな違いは初期化にあります。K-Meansでは、ユーザーが事前にクラスター数 (k) を指定する必要があり、事前の知識なしに行うのは困難です。DBSCANはデータ密度から自然にクラスター数を推論します。さらに、K-Meansはすべての点をグループに強制的に割り当てるため外れ値の影響を受けやすく、クラスターの中心を歪ませる可能性があります。一方、DBSCANは点をノイズとしてラベル付けできるため、データ異常 が有効なクラスターを汚染するのを防ぎ、予測モデリング などの後続のタスクに対してよりクリーンな結果を保証します。
Link to this section実社会での応用#
DBSCANは、空間分析と堅牢なノイズ処理を必要とする業界で広く適用されています。
- 地理空間分析: 都市計画や物流において、アナリストはDBSCANを使用して、配送フリートやライドシェアサービスのGPS座標をグループ化しています。高密度のドロップオフゾーンを特定することで、企業は ルート計画 や倉庫の場所を最適化できます。たとえば、物流におけるAI では、効率を向上させるために配送地点をクラスタリングすることがよくあります。
- 視覚ベースの異常検知: 製造業において、YOLO26 などのモデルを利用した外観検査システムは、表面の欠陥を検知する場合があります。DBSCANは、製品マップ上のこれらの欠陥の座標をクラスタリングできます。孤立した検知結果はセンサーノイズとして無視される可能性がありますが、高密度のクラスターは体系的な製造上の欠陥を示しており、品質検査 のためのアラートをトリガーします。
Link to this sectionコード例: 検出された重心のクラスタリング#
コンピュータビジョンのワークフローにおいて、開発者は 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]Link to this sectionディープラーニングとの統合#
While DBSCAN is a classic algorithm, it pairs effectively with modern deep learning. For instance, high-dimensional features extracted from a convolutional neural network (CNN) can be reduced using dimensionality reduction techniques like PCA or t-SNE before applying DBSCAN. This hybrid approach allows for clustering complex image data based on semantic similarity rather than just pixel location. This is particularly useful in unsupervised learning scenarios where labeled training data is scarce, helping researchers organize vast archives of unlabeled images efficiently.






