Hướng dẫn implement dbscan from scratch - triển khai dbscan từ đầu
Đáng ngạc nhiên như câu nói trên có thể nghe, nó hoàn toàn đúng. Bây giờ chúng ta đã chuyển sang một thế giới nơi dữ liệu là sức mạnh thực sự nhưng như chúng ta đã biết,
Có lẽ không phải tất cả chúng ta nhưng các kỹ sư dữ liệu ngoài kia biết những gì & nbsp; tôi đang nói về. Nhiều lần chúng ta có những khối dữ liệu lan truyền ngẫu nhiên không có ý nghĩa gì từ cái nhìn đầu tiên. Đây là nơi phân cụm đến viện trợ của chúng tôi. Trong các điều khoản đơn giản nhất, phân cụm đang tạo ra các nhóm trong dữ liệu của các điểm trông tương tự. Có nhiều thuật toán phân cụm đã được chứng minh rất hiệu quả,
… đến tên một vài. Đối với bài viết này, chúng tôi quên mất hai cái đầu tiên và tập trung vào phần cuối cùng là phân cụm DBSCAN. DBSCAN 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.stands for Density-based spatial clustering of applications with noise. Bài viết này sẽ bao gồm những điều sau đây;
Chúng ta hãy đi đến đó. Lưu ý: Phần thưởng thú vị ở cuối Hiểu thuật toánGiả sử chúng tôi có một số điểm dữ liệu ngẫu nhiên. Trực quan, không thể đưa ra những điểm nào nên được nhóm lại với nhau vì nhiều điểm có sự khác biệt rất nhỏ trong chúng. Để bắt đầu thuật toán, chúng tôi chọn một điểm ngẫu nhiên. Điểm đỏ sẽ là điểm được chọn của chúng tôiĐã đến lúc giới thiệu 2 tham số chính cho phân cụm DBSCAN.
Đây là bán kính của vòng tròn mà chúng ta phải vẽ xung quanh trọng tâm điểm của chúng ta. 2. Số điểm tối thiểu Minimum number of points Đây là số điểm mà chúng tôi muốn trong khu phố của điểm tập trung của chúng tôi (trong vòng tròn). … Tiếp tục với thuật toán Chúng tôi vẽ một vòng tròn bán kính ‘Epsilon‘ xung quanh điểm được chọn và kiểm tra khu phố.epsilon‘ around the chosen point and inspect the neighbourhood. Bây giờ, hãy để giả sử rằng chúng tôi giữ tham số ‘điểm tối thiểu‘ là 3. Đây là cách nó sẽ quan trọng.minimum points‘ parameter to be 3. This is how it would matter. Có rất ít quy tắc để tuân theo ở đây;
Theo các quy tắc của thuật toán, điểm này là một điểm cốt lõi vì nó có nhiều hàng xóm (5) hơn số chúng tôi quyết định (3). Tất cả những điểm này được cho là một phần của một cụm duy nhất. tập hợp lại với nhautìm thấy một điểm đi lạc khác Kiểm tra khu phố của tất cả các hàng xóm mà chúng ta thấy rằng có một điểm nữa nằm trong khu phố nhưng không phải là một phần của cụm. Bây giờ nó trở thành một phần của cụm màu đỏ. Điểm trong khu phố mà điểm mới này nằm cũng là một điểm cốt lõi. Một điểm cốt lõi khácVì vậy, chúng tôi kiểm tra điểm mới này để tiếp tục cụm. Một điểm biên giới được tìm thấyCó vẻ như đây là một điểm biên giới, mặc dù nó trở thành một phần của cụm màu đỏ, chúng tôi sẽ không kiểm tra khu phố của nó để tiếp tục cụm.not check its neighbourhood to continue the cluster. Có vẻ như chúng tôi đã tấn công một ngõ cụt; Không có thêm điểm để xem xét cho cụm này. Chà, điều này có nghĩa là chúng tôi bắt đầu thuật toán trên tất cả với các điểm mới, tạo ra một cụm mới. Điểm mớiĐiểm này có vẻ như là một ngõ cụt của riêng mình; Nó không có bất kỳ hàng xóm. Điều tốt là chúng tôi xác định các quy tắc cho mọi tình huống. Điểm này là những gì chúng tôi dán nhãn là ‘tiếng ồn‘Noise‘ Tiếng ồn tìm thấyCó vẻ như chúng ta phải bắt đầu lại. Tiếp tục quá trìnhTheo thuật toán, chúng tôi áp dụng các quy tắc đã đặt cho tất cả các điểm không được biết đến cho đến khi chúng tôi có tất cả trong một cụm. Ưu điểm của DBSCAN
Thuật toán DBSCAN yêu cầu không có nhãn để tạo các cụm do đó nó có thể được áp dụng cho tất cả các loại dữ liệu.
Không giống như đối tác nổi tiếng hơn nhiều của nó, K có nghĩa là, DBSCAN không yêu cầu một số cụm được xác định trước. Nó tạo thành các cụm bằng cách sử dụng các quy tắc chúng tôi xác định ở trên.
Như đã chứng minh ở trên, nó không bị ảnh hưởng bởi các điểm ồn ào và có thể phát hiện và cô lập bất kỳ ngoại lệ nào trong dữ liệu. Thực hiệnMã đầy đủ có sẵn ở đây. Chúng tôi bắt đầu bằng cách nhập tất cả các thư viện hữu ích.
Bây giờ chúng tôi rõ ràng cần một số dữ liệu mà chúng tôi có thể phân cụm. Dữ liệu được tạo tổng hợp ** Lưu ý: Các điểm dữ liệu có màu khác nhau biểu thị 3 phân phối khác nhau mà dữ liệu được rút ra từ ** Dữ liệu mà thuật toán của chúng tôi sẽ hoạt động sẽ trông như thế này; Tất cả đều giống nhauHãy để xác định hai chức năng chính của chúng tôi;
Hàm trên sẽ xem xét từng điểm trong tiêu điểm và xác định xem đó là điểm cốt lõi, điểm biên giới hay nhiễu.
Đây là chức năng chính của chúng tôi nơi toàn bộ logic thuật toán của chúng tôi nằm. Trước khi chạy mã này, có một điều quan trọng cần xem xét khi mã hóa thuật toán. Có một trường hợp cạnh cụ thể có thể khiến thuật toán chạy mãi mãi hoặc gây ra vấn đề trong phân cụm. & nbsp; Bất cứ khi nào chọn ra một điểm, có thể điểm đầu tiên bạn chọn ra có thể hóa ra là điểm biên giới. Bây giờ ở đây chúng ta có 3 khả năng;
Tùy chọn đầu tiên ở trên có vẻ hợp lý nhưng chúng ta có thể gặp phải một ngõ cụt. Phân phối dữ liệu của bạn có thể sao cho cuối cùng bạn còn lại một số điểm như vậy chỉ tạo thành các cụm nhỏ. Thuật toán của bạn sẽ chỉ đơn giản là tiếp tục bỏ qua những điểm này và chạy mãi mãi. Tùy chọn thứ hai có vẻ tốt quá nhưng các cụm nhỏ như vậy không có ý nghĩa trong dữ liệu và có vẻ vô dụng. Tôi đã đi với tùy chọn thứ ba để giữ cho phân cụm càng sạch càng tốt,
Đoạn trích này là từ chức năng chính ở trên và liên quan đến trường hợp cạnh này. Kết quảBây giờ chúng tôi chạy thuật toán và kiểm tra kết quả. Phân cụm bằng DBSCAN Có vẻ như chúng tôi có các cụm hợp lý. Nếu bạn cảm thấy như một số dữ liệu đã bị kết nối sai thì bạn có thể chơi xung quanh với giá trị Epsilon và Min-Points. Dưới đây là một số kết quả từ việc thay đổi các giá trị này. EPS = 0,5 - minpts = 3EPS = 0,55 - minpts = 3EPS = 0,58 - minpts = 4Dbscan vs k có nghĩa làK có nghĩa là, mặc dù phổ biến hơn nhiều, nhưng thiếu đằng sau DBSCAN trong một số trường hợp. Đầu tiên, nó cần một số được xác định trước cho bao nhiêu cụm chúng ta cần. Chúng tôi có thể không phải lúc nào cũng có thông tin này và có thể khá khó phân tích dữ liệu. K có nghĩa là cũng không xác định các ngoại lệ và cố gắng nhóm mọi điểm trong một cụm.
Chúng tôi sẽ áp dụng K có nghĩa là phân cụm từ thư viện Sklearn vào cùng một dữ liệu. Có nghĩa là K với 3 cụm3 cụm dường như được hình thành ổn nhưng chúng tôi có nhiều ngoại lệ không nên ở trong bất kỳ cụm nào. Có một số trường hợp trong đó k có nghĩa là vs dbscan, dbscan lấy bánh. Các minh họa dưới đây giải thích điều này một cách hoàn hảo. Nội dung tiền thưởng Để có một hình ảnh thú vị của phân cụm DBSCAN, hãy truy cập liên kết sau. Sự kết luậnDBSCAN có thể không phải là thuật toán phân cụm được biết đến rộng rãi nhất nhưng nó chắc chắn có lợi ích của nó. Hình minh họa ở trên cho thấy cách K có nghĩa là có thể tạo ra các cụm thực sự có thể không có ý nghĩa trong khi DBSCAN tìm thấy các mẫu phù hợp. Quyết định cuối cùng phụ thuộc vào loại dữ liệu của bạn và điều này sẽ có lợi cho bạn nhiều hơn. |