DBSCAN hoạt động như thế nào với Python?

DBSCAN [Phân cụm không gian dựa trên mật độ của các ứng dụng có tiếng ồn] là một phương pháp học tập không giám sát phổ biến được sử dụng trong các thuật toán học máy và xây dựng mô hình. Trước khi tiến xa hơn, chúng ta cần định nghĩa phương pháp học “không giám sát” là gì. Phương pháp học tập không giám sát là khi không có mục tiêu hoặc kết quả rõ ràng mà chúng ta đang tìm kiếm. Thay vào đó, chúng tôi đang nhóm dữ liệu lại với nhau dựa trên sự giống nhau của các quan sát. Để giúp làm rõ, hãy lấy Netflix làm ví dụ. Dựa trên các chương trình trước đây bạn đã xem trước đây, Netflix sẽ đề xuất các chương trình để bạn xem tiếp theo. Bất kỳ ai đã từng xem hoặc đã từng xem Netflix đều đã thấy màn hình bên dưới với các đề xuất [Có, hình ảnh này được lấy trực tiếp từ tài khoản Netflix của tôi và nếu bạn chưa từng xem Shameless trước đây thì tôi khuyên bạn nên xem càng sớm càng tốt]

Vì tôi đã xem ‘Shameless’ nên Netflix đề xuất một số chương trình tương tự khác để xem. Nhưng Netflix thu thập những đề xuất đó từ đâu? . Thay vào đó, Netflix xem xét những người dùng khác trước đây cũng đã xem ‘Shameless’ và xem những gì những người dùng đó đã xem ngoài ‘Shameless’. Bằng cách đó, Netflix đang tập hợp người dùng của mình lại với nhau dựa trên sự tương đồng về sở thích. Đây chính xác là cách học tập không giám sát hoạt động. Chỉ đơn giản là nhóm các quan sát lại với nhau dựa trên sự giống nhau, hy vọng đưa ra kết luận chính xác dựa trên các cụm

Quay lại DBSCAN. DBSCAN là một phương pháp phân cụm được sử dụng trong học máy để tách các cụm có mật độ cao khỏi các cụm có mật độ thấp. Cho rằng DBSCAN là một thuật toán phân cụm dựa trên mật độ, nó thực hiện rất tốt việc tìm kiếm các khu vực trong dữ liệu có mật độ quan sát cao, so với các khu vực dữ liệu không có mật độ quan sát cao. DBSCAN cũng có thể sắp xếp dữ liệu thành các cụm có hình dạng khác nhau, một ưu điểm mạnh khác. DBSCAN hoạt động như vậy

  • Chia tập dữ liệu thành n chiều
  • Đối với mỗi điểm trong tập dữ liệu, DBSCAN tạo thành một hình dạng n chiều xung quanh điểm dữ liệu đó, sau đó đếm xem có bao nhiêu điểm dữ liệu nằm trong hình dạng đó
  • DBSCAN tính hình dạng này là một cụm. DBSCAN lặp lại mở rộng cụm, bằng cách đi qua từng điểm riêng lẻ trong cụm và đếm số điểm dữ liệu khác gần đó. Lấy đồ họa dưới đây làm ví dụ

Thực hiện từng bước quy trình nói trên, DBSCAN sẽ bắt đầu bằng cách chia dữ liệu thành n chiều. Sau khi DBSCAN thực hiện xong, nó sẽ bắt đầu tại một điểm ngẫu nhiên [trong trường hợp này, giả sử đó là một trong những điểm màu đỏ] và nó sẽ đếm xem có bao nhiêu điểm khác ở gần đó. DBSCAN sẽ tiếp tục quá trình này cho đến khi không có điểm dữ liệu nào khác ở gần và sau đó nó sẽ hình thành cụm thứ hai

Như bạn có thể nhận thấy từ hình ảnh, có một số thông số và thông số kỹ thuật mà chúng tôi cần cung cấp cho DBSCAN trước khi nó hoạt động. Hai tham số chúng ta cần chỉ định là như vậy

Số điểm dữ liệu tối thiểu cần thiết để xác định một cụm là bao nhiêu?

Một điểm có thể cách điểm tiếp theo trong cùng một cụm bao xa?

Quay trở lại đồ họa, epsilon là bán kính được cung cấp để kiểm tra khoảng cách giữa các điểm dữ liệu. Nếu một điểm nằm trong khoảng cách epsilon của một điểm khác, thì hai điểm đó sẽ nằm trong cùng một cụm

Hơn nữa, số điểm tối thiểu cần thiết được đặt thành 4 trong trường hợp này. Khi đi qua từng điểm dữ liệu, miễn là DBSCAN tìm thấy 4 điểm trong khoảng cách epsilon của nhau, một cụm sẽ được hình thành

QUAN TRỌNG. Để một điểm được coi là điểm “lõi”, điểm đó phải chứa số lượng điểm tối thiểu trong khoảng cách epsilon. Bản thân điểm được bao gồm trong số. Xem tài liệu và xem cụ thể thông số min_samples

Bạn cũng sẽ nhận thấy rằng điểm Xanh lam trong đồ họa không nằm trong bất kỳ cụm nào. DBSCAN KHÔNG nhất thiết phải phân loại mọi điểm dữ liệu và do đó rất tuyệt vời với việc xử lý các giá trị ngoại lệ trong tập dữ liệu. Hãy kiểm tra đồ họa dưới đây

Hình ảnh bên trái mô tả một phương pháp phân cụm truyền thống hơn không tính đến tính đa chiều. Trong khi hình ảnh bên phải cho thấy cách DBSCAN có thể biến đổi dữ liệu thành các hình dạng và kích thước khác nhau để tìm các cụm tương tự

Hình ảnh bên trái mô tả một phương pháp phân cụm truyền thống hơn, chẳng hạn như K-Means, không tính đến tính đa chiều. Trong khi hình ảnh bên phải cho thấy cách DBSCAN có thể biến đổi dữ liệu thành các hình dạng và kích thước khác nhau để tìm các cụm tương tự. Chúng tôi cũng nhận thấy trong hình ảnh bên phải, rằng các điểm dọc theo cạnh ngoài của tập dữ liệu không được phân loại, cho thấy chúng là các điểm nằm ngoài dữ liệu

Ưu điểm của DBSCAN

  • Rất tốt trong việc phân tách các cụm có mật độ cao so với các cụm có mật độ thấp trong một tập dữ liệu nhất định
  • Tuyệt vời với việc xử lý các ngoại lệ trong tập dữ liệu

Nhược điểm của DBSCAN

  • Mặc dù DBSCAN rất giỏi trong việc tách các cụm có mật độ cao khỏi các cụm có mật độ thấp, nhưng DBSCAN lại gặp khó khăn với các cụm có mật độ tương tự
  • Đấu tranh với dữ liệu chiều cao. Tôi biết, toàn bộ bài viết này tôi đã nói DBSCAN tuyệt vời như thế nào trong việc biến dữ liệu thành các kích thước và hình dạng khác nhau. Tuy nhiên, DBSCAN chỉ có thể đi xa, nếu dữ liệu được cung cấp với quá nhiều kích thước, DBSCAN sẽ bị ảnh hưởng

Dưới đây tôi đã bao gồm cách triển khai DBSCAN trong Python, sau đó tôi sẽ giải thích các số liệu và đánh giá Mô hình DBSCAN của bạn

Triển khai DBSCAN bằng Python

1. Chỉ định dữ liệu dưới dạng giá trị X của chúng tôi

# setting up data to cluster
X = data
# scale and standardizing data
X = StandardScaler[].fit_transform[X]

2. Khởi tạo Mô hình DBSCAN của chúng tôi. Trong đoạn mã dưới đây, epsilon = 3 và min_samples là số điểm tối thiểu cần thiết để tạo thành một cụm

# instantiating DBSCAN
dbscan = DBSCAN[eps=3, min_samples=4]
# fitting model
model = dbscan.fit[X]

3. Lưu trữ các nhãn được tạo bởi DBSCAN

labels = model.labels_

4. Xác định điểm nào tạo nên “điểm cốt lõi” của chúng tôi

import numpy as np
from sklearn import metrics
# identify core samples
core_samples = np.zeros_like[labels, dtype=bool]
core_samples[dbscan.core_sample_indices_] = True
print[core_samples]

5. Tính số cụm

# declare the number of clusters
n_clusters = len[set[labels]] - [1 if -1 in labels else 0]
print[n_clusters_]

6. Tính Điểm Hình Bóng

print["Silhoette Coefficient: %0.3f" % metrics.silhouette_score[X, labels]

Số liệu đo lường hiệu suất của DBSCAN

Điểm bóng. Điểm hình bóng được tính toán bằng cách sử dụng khoảng cách trung bình trong cụm giữa các điểm VÀ khoảng cách trung bình của cụm gần nhất. Chẳng hạn, một cụm có nhiều điểm dữ liệu rất gần nhau [mật độ cao] VÀ cách xa cụm gần nhất tiếp theo [cho thấy cụm này rất độc đáo so với cụm gần nhất tiếp theo], sẽ có điểm bóng mạnh. Điểm bóng nằm trong khoảng từ -1 đến 1, với -1 là điểm kém nhất có thể và 1 là điểm tốt nhất. Điểm hình bóng bằng 0 gợi ý các cụm chồng chéo

quán tính. Quán tính đo tổng bình phương của cụm bên trong [tổng bình phương là tổng của tất cả các phần dư]. Quán tính được sử dụng để đo mức độ liên quan của các cụm với nhau, điểm quán tính càng thấp thì càng tốt. TUY NHIÊN, điều quan trọng cần lưu ý là quán tính phụ thuộc rất nhiều vào giả định rằng các cụm là lồi [có dạng hình cầu]. DBSCAN không nhất thiết phải chia dữ liệu thành các cụm hình cầu, do đó quán tính không phải là thước đo tốt để sử dụng để đánh giá các mô hình DBSCAN [đó là lý do tại sao tôi không đưa quán tính vào mã ở trên]. Quán tính thường được sử dụng nhiều hơn trong các phương pháp phân cụm khác, chẳng hạn như phân cụm K-nghĩa

Làm cách nào để sử dụng DBSCAN trong Python?

Các bước liên quan đến thuật toán phân cụm DBSCAN .
Chọn bất kỳ điểm p ngẫu nhiên
Xác định tất cả các điểm có thể truy cập mật độ từ p với tham số ε và minPts
Nếu p là điểm cốt lõi, hãy tạo một cụm [với ε và minPts ]
Nếu p là điểm biên, hãy truy cập điểm tiếp theo trong tập dữ liệu
Tiếp tục thuật toán cho đến khi tất cả các điểm được truy cập

Thuật toán DBSCAN hoạt động như thế nào?

Dựa trên một tập hợp các điểm [hãy nghĩ trong không gian hai chiều như minh họa trong hình], DBSCAN nhóm các điểm gần nhau lại với nhau dựa trên phép đo khoảng cách [ . Nó cũng đánh dấu các điểm nằm ngoài vùng có mật độ thấp. . It also marks as outliers the points that are in low-density regions.

Mật độ như thế nào

Công cụ Phân cụm dựa trên mật độ hoạt động bằng cách phát hiện các khu vực tập trung nhiều điểm và nơi chúng được phân tách bằng các khu vực trống hoặc thưa thớt . Các điểm không phải là một phần của cụm được gắn nhãn là nhiễu.

Làm cách nào để DBSCAN sử dụng các điểm đó để phân cụm tập dữ liệu?

Các bước thuật toán để phân cụm DBSCAN . Nếu có ít nhất các điểm 'minPoint' trong bán kính 'ε' đến điểm thì chúng tôi coi tất cả các điểm này là một phần của cùng một cụm. arbitrarily picking up a point in the dataset [until all points have been visited]. If there are at least 'minPoint' points within a radius of 'ε' to the point then we consider all these points to be part of the same cluster.

Chủ Đề