DBSCAN từ con trăn đầu
Phân cụm là một kỹ thuật học tập không giám sát giúp tìm các mẫu trong dữ liệu mà không được thông báo rõ ràng mẫu cần tìm DBSCAN thực hiện điều này bằng cách đo khoảng cách giữa mỗi điểm với nhau và nếu đủ các điểm đủ gần nhau, thì DBSCAN sẽ phân loại nó thành một cụm mới Như đã thấy ở trên, có hai cụm riêng biệt trong Dữ liệu thử nghiệm. KMeans, một kỹ thuật phân cụm phổ biến khác, không thể phân cụm chính xác dữ liệu này vì KMeans tạo ra một ranh giới có thể phân tách tuyến tính giữa các cụm khi k=2 Thay vào đó, DBSCAN xác định các cụm dựa trên hai tham số. Epsilon và Min_Points
Lợi ích của DBSCANNó yêu cầu kiến thức miền tối thiểu để xác định các tham số đầu vàoCác thuật toán phân cụm khác như KMeans yêu cầu người dùng biết có bao nhiêu cụm tồn tại trong dữ liệu Thay vì yêu cầu phải tìm bao nhiêu cụm, DBSCAN yêu cầu người dùng nhập khoảng cách tối đa mà mỗi điểm dữ liệu có thể được coi là một phần của cụm và cần bao nhiêu điểm dữ liệu để tạo thành cụm Nó phát hiện ra các cụm có hình dạng bất kỳVì DBSCAN tạo các cụm dựa trên epsilon và số lượng lân cận mà mỗi điểm có, nên nó có thể tìm thấy các cụm có hình dạng bất kỳ. DBSCAN hoạt động tốt nhất khi các cụm có cùng mật độ (khoảng cách giữa các điểm). Khi có các cụm có mật độ khác nhau, điều này có thể khiến DBSCAN khó xác định các cụm Dõi theoNhấp vào đây để mở Google Colab Notebook triển khai Scikit-Learns DBSCAN và DBSCAN2 từ đầu. Nếu bạn muốn tìm hiểu thêm về những gì đang diễn ra bên dưới mui xe thì hãy tiếp tục đọc
Để hiểu và triển khai DBSCAN từ đầu, chúng ta sẽ cần biết cách DBSCAN phân cụm dữ liệu. Cùng với Epsilon và Điểm tối thiểu, có ba thuật ngữ cần thiết hơn để hiểu
Chúng tôi sẽ triển khai DBSCAN bằng một Lớp và gọi nó là dbscan2. Nó sẽ có hai phương pháp chính. phù hợp và dự đoán
Lớp sẽ được khởi tạo với hai mảng tính năng được tiêu chuẩn hóa, epsilon và số điểm cần thiết để tạo cụm. Nó cũng sẽ được khởi tạo với nhãn cụm và nhãn nhiễu
Chức năng trợ giúpChúng tôi sẽ sử dụng khoảng cách euclide để đo mỗi điểm cách nhau bao xa. Khoảng cách Euclide sẽ đo khoảng cách đường thẳng thông thường từ một cặp tọa độ này đến một cặp khác
Hàm trợ giúp khác mà chúng ta cần sẽ được gọi là rangeQuery. Hàm này sẽ giúp chúng ta tìm ra mỗi điểm có bao nhiêu láng giềng nằm trong epsilon
Hàm phù hợp của chúng tôi sẽ lặp qua toàn bộ tập dữ liệu và xác định có bao nhiêu điểm lân cận mà mỗi điểm trong tập dữ liệu của chúng tôi có Nếu một điểm không có đủ hàng xóm (hàng xóm < min_points), thì nó sẽ được gắn nhãn là nhiễu Nếu một điểm có đủ hàng xóm (hàng xóm ≥ min_points) thì điểm đó sẽ được gán nhãn cụm mới và tất cả các hàng xóm của nó cũng sẽ được cấp cùng một nhãn. Hàm phù hợp sẽ nhập một vòng lặp while thêm tất cả các hàng xóm vào Hàng đợi để chúng có thể được gắn nhãn chính xác là một phần của cụm mới cùng với các hàng xóm của hàng xóm mới được tìm thấy Quá trình này sẽ tiếp tục cho đến khi thuật toán đã kiểm tra tất cả các điểm
Khi đưa ra dự đoán, thuật toán sẽ xác định xem điểm đầu vào mới có hàng xóm nào hay không bằng cách sử dụng rangeQuery. Nếu đúng như vậy, thì điểm mới sẽ được dự đoán có cùng nhãn với các điểm lân cận của nó Đây là những gì lớp học đã hoàn thành của chúng tôi trông như thế nàoLàm thế nào để nó so sánh với phiên bản Scikit-Learn?Như mong đợi, quá trình triển khai của chúng tôi từ đầu có kết quả giống như phiên bản Scikit-Learn. Phiên bản DBSCAN của chúng tôi mất nhiều thời gian hơn và tôi vẫn sẽ sử dụng phiên bản Scikit-Learns, nhưng hy vọng việc triển khai thuật toán từ đầu đã giúp bạn hiểu rõ hơn về cách tìm thấy các hình dạng cụm tùy ý bằng cách sử dụng DBSCAN |