Hướng dẫn dbscan text clustering python - python phân cụm văn bản dbscan

Tiêu đềngàyThể loạiTags

Hướng dẫn phân cụm DBSCAN: Ví dụ với scikit-learn

2020-12-09

khung

SVM

phân nhóm

DBSCAN

machine-learning

Python

scikit-learn

unsupervised-learning

Có nhiều thuật toán để phân cụm có sẵn ngày hôm nay. DBSCAN, hoặc 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 trong những thuật toán phân cụm này. Nó có thể được sử dụng cho các điểm dữ liệu phân cụm dựa trên mật độ, tức là, bằng cách nhóm các khu vực với nhiều mẫu. Điều này làm cho nó đặc biệt hữu ích để thực hiện phân cụm trong điều kiện ồn ào: Như chúng ta sẽ thấy, bên cạnh việc phân cụm, DBSCAN cũng có khả năng phát hiện các điểm ồn ào, có thể - nếu muốn - bị loại bỏ khỏi bộ dữ liệu.density-based spatial clustering of applications with noise, is one of these clustering algorithms. It can be used for clustering data points based on density, i.e., by grouping together areas with many samples. This makes it especially useful for performing clustering under noisy conditions: as we shall see, besides clustering, DBSCAN is also capable of detecting noisy points, which can - if desired - be discarded from the dataset.

Trong bài viết này, chúng tôi sẽ xem xét DBSCAN chi tiết hơn. Đầu tiên, chúng ta sẽ xem xét một trường hợp sử dụng ví dụ để phân cụm, bằng cách tạo hai đốm dữ liệu nơi có một số mẫu nosiy. Sau đó, chúng tôi sẽ giới thiệu phân cụm dựa trên DBSCAN, cả các khái niệm của nó [điểm cốt lõi, điểm có thể tiếp cận trực tiếp, điểm có thể tiếp cận và ngoại lệ/nhiễu] và thuật toán của nó [bằng cách giải thích từng bước]. Sau đó, chúng tôi sẽ thực hiện một thuật toán phân cụm dựa trên DBSCAN với Python và Scikit-learn. Điều này cho phép chúng tôi vừa hiểu thuật toán vừa áp dụng nó.

Trong hướng dẫn này, bạn sẽ học ...

  • Các khái niệm đằng sau DBSCAN.
  • Làm thế nào các thuật toán DBSCAN hoạt động.
  • Làm thế nào bạn có thể tự thực hiện thuật toán DBSCAN, với Scikit-learn.

Đặt một câu hỏi

Hãy xem! 😎

Cập nhật 11/Jan/2021: Đã thêm ví dụ mã bắt đầu nhanh. added quick-start code example.

[toc]

Mã ví dụ: Làm thế nào để thực hiện phân cụm dbscan với scikit-learn?

Với ví dụ nhanh này, bạn có thể bắt đầu với DBSCAN trong Python ngay lập tức. Nếu bạn muốn hiểu cách thuật toán hoạt động chi tiết hơn hoặc xem các ví dụ từng bước để mã hóa phương thức phân cụm, hãy đảm bảo đọc toàn bộ bài viết dưới đây!

from sklearn.datasets import make_blobs
from sklearn.cluster import DBSCAN
import numpy as np

# Configuration options
num_samples_total = 1000
cluster_centers = [[3,3], [7,7]]
num_classes = len[cluster_centers]
epsilon = 1.0
min_samples = 13

# Generate data
X, y = make_blobs[n_samples = num_samples_total, centers = cluster_centers, n_features = num_classes, center_box=[0, 1], cluster_std = 0.5]

# Compute DBSCAN
db = DBSCAN[eps=epsilon, min_samples=min_samples].fit[X]
labels = db.labels_

no_clusters = len[np.unique[labels] ]
no_noise = np.sum[np.array[labels] == -1, axis=0]

print['Estimated no. of clusters: %d' % no_clusters]
print['Estimated no. of noise points: %d' % no_noise]

Phân cụm là gì?

DBSCAN là một thuật toán phân cụm và là một phần của lớp thuật toán học không giám sát. Nhưng phân cụm là gì? Trước tiên chúng ta hãy xem một định nghĩa:

Phân tích cụm & nbsp; hoặc & nbsp; phân cụm & nbsp; là nhiệm vụ nhóm một tập hợp các đối tượng theo cách mà các đối tượng trong cùng một nhóm [được gọi là A & NBSP; cụm] giống nhau hơn [theo một nghĩa nào đó] với nhau so với các nhóm khác trong các nhóm khác [ cụm]. or clustering is the task of grouping a set of objects in such a way that objects in the same group [called a cluster] are more similar [in some sense] to each other than to those in other groups [clusters].

Wikipedia [2004]

Aha!

Nó cho phép chúng tôi chọn các nhóm từ các bộ dữ liệu dựa trên các đặc điểm được chia sẻ cho các mẫu trong một nhóm cụ thể.

Điều đó thật thú vị, bởi vì - chỉ đưa ra một ví dụ - chúng ta có thể sử dụng phân cụm để tạo bộ dữ liệu được dán nhãn [ví dụ: để chọn các lớp nếu chúng ta không có chúng] để tạo mô hình dự đoán. Hơn nữa, như chúng ta sẽ thấy trong bài viết này, phân cụm cũng có thể được sử dụng để phát hiện các mẫu ồn ào, có thể được loại bỏ trước khi đào tạo mô hình học tập có giám sát.

Một loạt các ví dụ rộng lớn có sẵn ở đây.

Giới thiệu phân cụm DBSCAN

DBSCAN là một thuật toán để thực hiện phân tích cụm trên bộ dữ liệu của bạn.

Trước khi chúng tôi bắt đầu bất kỳ công việc nào trong việc thực hiện DBSCAN với Scikit-Learn, trước tiên hãy phóng to thuật toán. Như chúng ta đã đọc ở trên, nó là viết tắt của phân cụm không gian dựa trên mật độ của các ứng dụng có tiếng ồn, đây là một tên khá phức tạp cho một thuật toán tương đối đơn giản. Nhưng chúng ta có thể phá vỡ nó để chúng ta có thể nắm bắt trực giác những gì nó làm. Dựa trên mật độ có nghĩa là nó sẽ phóng to vào các khu vực có mật độ lớn, hay nói cách khác là một lượng lớn các mẫu gần nhau. Vì các cụm dày đặc, nên sự tập trung vào mật độ là tốt.density-based spatial clustering of applications with noise, which is quite a complex name for a relatively simple algorithm. But we can break it apart so that we can intuitively grasp what it does. Density-based means that it will zoom into areas that have great density, or in other words a large amount of samples closely together. Since clusters are dense, this focus on density is good.

Phân cụm không gian có nghĩa là nó thực hiện phân cụm bằng cách thực hiện các hành động trong không gian tính năng. Nói cách khác, trong khi một số kỹ thuật phân cụm hoạt động bằng cách gửi tin nhắn giữa các điểm, DBSCAN thực hiện các biện pháp khoảng cách trong không gian để xác định mẫu nào thuộc về nhau. Phân cụm nói cho chính nó và các ứng dụng có tiếng ồn có nghĩa là kỹ thuật có thể được sử dụng với các bộ dữ liệu ồn ào. Chúng ta sẽ thấy lý do tại sao đây là trường hợp tiếp theo, bởi vì bây giờ chúng ta sẽ xem xét các khái niệm cơ bản của DBSCAN: điểm cốt lõi, điểm trực tiếp có thể tiếp cận, điểm có thể tiếp cận và ngoại lệ.

Các khái niệm về dbscan

Trước khi chúng ta bắt đầu nhìn vào các khái niệm này, trước tiên chúng ta phải tạo ra một bộ dữ liệu tưởng tượng. Đây là. Giả sử rằng chúng ta đang xử lý một không gian tính năng hai chiều trong đó các mẫu của chúng ta có thể được biểu thị dưới dạng điểm [nghĩa là [latex] [x_1, x_2] [/latex] tọa độ]. Sau đó, nó có thể trông như thế này:

Khi thực hiện DBSCAN, hai tham số phải được cung cấp trước khi thuật toán được chạy. Đầu tiên là giá trị epsilon hoặc [latex] \ epsilon [/latex]. Giá trị này chỉ ra một số khoảng cách xung quanh một điểm, có thể được hiển thị dưới dạng một vòng tròn với một diamater của [latex] \ epsilon [/latex] xung quanh một điểm. Lưu ý rằng mỗi điểm có cùng một epsilon, nhưng chúng tôi vẽ vòng tròn chỉ một điểm bên dưới.epsilon value, or [latex]\epsilon[/latex]. This value indicates some distance around a point, which can be visualized as a circle with a diamater of [latex]\epsilon[/latex] around a point. Note that each point has the same epsilon, but that we draw the circle for just one point below.

Thứ hai là số lượng mẫu tối thiểu. Số này cho biết số lượng mẫu tối thiểu [bao gồm cả điểm chính] phải nằm trong phạm vi Epsilon [tức là, vòng tròn] để một điểm được coi là điểm cốt lõi. Bây giờ chúng ta sẽ xem xét những gì là những gì.minimum number of samples. This number indicates the minimum number of samples [including the point itself] that should be within the epsilon range [i.e., the circle] for a point to be considered a core point. We will now look at what these are.

Điểm cốt lõi

Giả sử rằng chúng ta có một số epsilon [latex] \ epsilon [/latex] và đặt số điểm tối thiểu thành 3. Bây giờ chúng ta sẽ xem xét hai điểm của bộ dữ liệu. Ở bên trái, chúng tôi nhìn vào điểm trên, trong khi ở bên phải, chúng tôi nhìn vào một trong những điểm giữa.

Một điểm & nbsp; p & nbsp; là a & nbsp; điểm cốt lõi & nbsp; nếu ít nhất & nbsp; minpts & nbsp; điểm nằm trong khoảng cách & nbsp; ε & nbsp; của nó [bao gồm & nbsp; p].

Wikipedia [2007]

Nói cách khác, trong ví dụ của chúng tôi, một điểm là một điểm cốt lõi nếu ít nhất 3 điểm, bao gồm cả chính nó, nằm trong vòng tròn. Như đã trở nên rõ ràng, cả hai điểm mà chúng ta đang xem xét là những điểm được gọi là điểm cốt lõi.

Điều tuyệt vời của các điểm cốt lõi là chúng có khả năng là một phần của một cụm, bởi vì chúng ở trong vùng lân cận của các điểm khác. Đó là lý do tại sao chúng rất quan trọng trong thuật toán DBSCAN.

Nếu bộ dữ liệu lớn hơn [ví dụ: vì chúng tôi phóng to vào một khu vực cụ thể] và một điểm khác sẽ được kiểm tra, chúng tôi có thể đi đến kết luận rằng nó không phải là điểm cốt lõi. Ví dụ dưới đây minh họa lý do tại sao: chỉ có hai điểm, bao gồm cả chính nó, trong vùng lân cận [latex] \ epsilon [/latex] của điểm. Vì [latex] \ text {minpts} = 3 [/latex] và [latex] 2

Bài Viết Liên Quan

Chủ Đề