Khám phá DBSCAN: một thuật toán phân cụm mạnh mẽ để xác định các mẫu, xử lý nhiễu và phân tích các tập dữ liệu phức tạp trong machine learning.
DBSCAN (Phân cụm không gian dựa trên mật độ của các ứng dụng có nhiễu) là một thuật toán được sử dụng rộng rãi trong học máy (ML) được thiết kế để xác định các nhóm riêng biệt trong một tập dữ liệu dựa trên mật độ của các điểm dữ liệu. Không giống như các thuật toán giả định các cụm có hình cầu hoặc yêu cầu số lượng nhóm được xác định trước, DBSCAN vượt trội trong việc khám phá các cụm có hình dạng và kích thước tùy ý. Thuật toán này đặc biệt hiệu quả trong các tác vụ học không giám sát , trong đó dữ liệu chứa nhiễu hoặc giá trị ngoại lai, khiến nó trở thành một công cụ mạnh mẽ để khám phá dữ liệu và nhận dạng mẫu.
Nguyên lý cơ bản của DBSCAN là một cụm bao gồm một vùng điểm dày đặc, được phân tách với các cụm khác bằng các vùng có mật độ thấp hơn. Thuật toán dựa trên hai siêu tham số quan trọng để xác định mật độ này:
eps): Khoảng cách tối đa giữa hai điểm để một điểm được coi là nằm gần điểm kia. Bán kính này xác định khu vực điều tra cục bộ.
min_samples): Số lượng điểm tối thiểu cần thiết để tạo thành một vùng dày đặc trong eps bán kính.
Dựa trên các thông số này, DBSCAN phân loại mọi điểm dữ liệu thành ba loại cụ thể, lọc bỏ nhiễu hiệu quả trong giai đoạn xử lý dữ liệu trước :
min_samples điểm (bao gồm cả chính nó) trong eps hàng xóm.
Để tìm hiểu sâu hơn về mặt kỹ thuật, tài liệu Scikit-learn về DBSCAN cung cấp thông tin chi tiết về cách triển khai toàn diện và bạn có thể khám phá các khái niệm cơ bản trong bài báo nghiên cứu ban đầu năm 1996 .
Hiểu được sự khác biệt giữa DBSCAN và K-Means Clustering là điều cần thiết để lựa chọn công cụ phù hợp cho quy trình phân tích dữ liệu của bạn.
Mặc dù DBSCAN là một thuật toán phân cụ chung, nhưng nó đóng vai trò quan trọng trong quy trình làm việc về thị giác máy tính (CV) và AI hiện đại, thường đóng vai trò là bước hậu xử lý.
Ví dụ sau đây minh họa cách sử dụng DBSCAN để phân cụm dữ liệu không gian. Trong một đường ống thị giác,
detections mảng có thể đại diện cho (x, y) tọa độ của các đối tượng được phát hiện bởi một
YOLO người mẫu.
import numpy as np
from sklearn.cluster import DBSCAN
# Simulated centroids from YOLO11 detections (x, y coordinates)
# Points clustered around (10,10) and (50,50), with one outlier at (100,100)
detections = np.array([[10, 10], [11, 12], [10, 11], [50, 50], [51, 52], [100, 100]])
# Initialize DBSCAN with a neighborhood radius of 5 and min 2 points per cluster
clustering = DBSCAN(eps=5, min_samples=2).fit(detections)
# Output labels: 0 and 1 are clusters, -1 represents the noise point (outlier)
print(f"Cluster Labels: {clustering.labels_}")
# Expected Output: [ 0 0 0 1 1 -1]
DBSCAN thường được sử dụng kết hợp với các mô hình học sâu để tinh chỉnh kết quả. Ví dụ, sau khi thực hiện phân đoạn ảnh hoặc phân đoạn thực thể , thuật toán có thể tách các thực thể riêng biệt của các đối tượng liền kề về mặt không gian mà nếu không sẽ bị gộp lại. Trong học bán giám sát , việc truyền nhãn từ một tập dữ liệu nhỏ đã được gắn nhãn đến các điểm chưa được gắn nhãn gần đó trong các vùng có mật độ cao cũng rất hữu ích.
Đối với các nhà nghiên cứu và kỹ sư, các thư viện như NumPy và Scikit-learn tạo điều kiện thuận lợi cho việc tích hợp DBSCAN vào các quy trình lớn hơn được hỗ trợ bởi các nền tảng như PyTorch . Việc hiểu các kỹ thuật cổ điển này giúp nâng cao khả năng diễn giải và xử lý đầu ra của các mạng nơ-ron phức tạp.