DBSCAN: Apa itu? Bila hendak menggunakannya? Bagaimana untuk menggunakannya.

DBSCAN (Clustering Spatial Based Density of Applications with Noise) merupakan kaedah pembelajaran yang tidak terjejas yang popular digunakan dalam model bangunan dan algoritma pembelajaran mesin. Sebelum kita melangkah lebih lanjut, kita perlu menentukan kaedah pembelajaran yang "tidak dikawal". Kaedah pembelajaran yang tidak diselia adalah apabila tiada tujuan atau hasil yang jelas yang kita cari. Sebaliknya, kami mengumpulkan data bersama berdasarkan persamaan pemerhatian. Untuk membantu menjelaskan, mari ambil Netflix sebagai contoh. Berdasarkan pertunjukan sebelumnya yang telah anda nonton di masa lalu, Netflix akan mencadangkan pertunjukan untuk anda menonton seterusnya. Sesiapa sahaja yang pernah menonton atau berada di Netflix telah melihat skrin di bawah dengan cadangan (Ya, imej ini diambil secara langsung dari akaun Netflix saya dan jika anda tidak pernah menonton Tidak Malu sebelum saya cadangkan anda mendapatkan ASAP itu).

Kerana saya melihat 'Tidak Malu', Netflix mengesyorkan beberapa rancangan serupa yang lain untuk menonton. Tetapi di mana Netflix mengumpulkan cadangan itu? Memandangkan ia mencuba untuk meramalkan masa depan dengan apa yang menunjukkan saya akan menonton seterusnya, Netflix tidak mempunyai apa-apa untuk mendasarkan ramalan atau cadangan pada (tidak ada tujuan muktamad jelas). Sebaliknya, Netflix melihat pengguna lain yang juga menyaksikan 'Tidak malu' pada masa lalu, dan melihat apa yang dilihat oleh pengguna-pengguna tersebut selain 'Tidak malu'. Dengan berbuat demikian, Netflix memasangkan penggunanya bersama-sama berdasarkan keserupaan kepentingan. Ini adalah bagaimana pembelajaran tanpa pengawasan berfungsi. Cukup mengamati pemerhatian bersama berdasarkan persamaan, dengan harapan dapat membuat kesimpulan yang tepat berdasarkan kluster.

Kembali ke DBSCAN. DBSCAN adalah kaedah kluster yang digunakan dalam pembelajaran mesin untuk memisahkan kluster kepadatan tinggi dari kluster kepadatan rendah. Memandangkan DBSCAN adalah algoritma kluster berasaskan ketumpatan, ia melakukan pekerjaan yang hebat untuk mencari kawasan dalam data yang mempunyai kepadatan tinggi pemerhatian, berbanding bidang data yang tidak terlalu padat dengan pemerhatian. DBSCAN boleh menyusun data ke dalam kelompok yang berbeza-beza, satu lagi kelebihan yang kuat. DBSCAN berfungsi seperti berikut:

  • Membahagi dataset ke dimensi n
  • Untuk setiap titik dalam dataset, DBSCAN membentuk bentuk dimensi n di sekitar titik data itu, dan kemudian mengira berapa banyak titik data yang jatuh dalam bentuk itu.
  • DBSCAN mengira bentuk ini sebagai kumpulan. DBSCAN secara beransur-ansur mengembangkan kluster, dengan melewati setiap titik individu dalam kluster, dan menghitung jumlah mata data lain yang berdekatan. Ambil grafik di bawah untuk contoh:

Melalui proses yang telah disebutkan di atas, DBSCAN akan bermula dengan membahagikan data ke dimensi n. Selepas DBSCAN berbuat demikian, ia akan bermula pada titik rawak (dalam kes ini, menganggap ia adalah salah satu mata merah), dan ia akan mengira berapa banyak mata lain yang berdekatan. DBSCAN akan meneruskan proses ini sehingga tidak ada titik data lain yang berdekatan, dan kemudian akan kelihatan membentuk gugusan kedua.

Seperti yang anda perhatikan dari grafik, terdapat beberapa parameter dan spesifikasi yang perlu kami berikan DBSCAN sebelum ia berfungsi. Kedua-dua parameter yang perlu kami nyatakan adalah seperti berikut:

Apakah bilangan mata data minimum yang diperlukan untuk menentukan kumpulan tunggal?
Sejauh mana satu titik dapat dari titik seterusnya dalam kluster yang sama?

Merujuk kepada grafik, epsilon adalah jejari yang diberikan untuk menguji jarak antara titik data. Sekiranya titik berada dalam jarak epsilon dari titik lain, kedua-dua mata akan berada dalam kelompok yang sama.

Selain itu, jumlah mata minimum yang diperlukan ditetapkan kepada 4 dalam senario ini. Apabila meneruskan setiap titik data, selagi DBSCAN menemui 4 mata dalam jarak epsilon antara satu sama lain, kluster dibentuk.

PENTING: Untuk titik yang dianggap sebagai titik "teras", ia mesti mengandungi bilangan mata minimum dalam jarak epsilon. Ergo, visualisasi sebenarnya hanya mempunyai DUA teras utama. Lihat dokumentasi di sini dan lihat parameter min_samples khususnya.

Anda juga akan mendapati bahawa titik Biru dalam grafik tidak terkandung dalam mana-mana kluster. DBSCAN TIDAK perlu mengkategorikan setiap titik data, dan oleh itu hebat dengan mengendalikan pendengar dalam dataset. Mari kita periksa grafik di bawah:

Imej kiri menggambarkan kaedah pengelompokan yang lebih tradisional yang tidak mengambil kira pelbagai dimensi. Sedangkan imej yang betul menunjukkan bagaimana DBSCAN dapat menyusun data ke dalam bentuk dan dimensi yang berbeza untuk mencari cluster yang sama.

Imej kiri menggambarkan kaedah kluster yang lebih tradisional, seperti K-Means, yang tidak menyumbang pelbagai dimensi. Sedangkan imej yang betul menunjukkan bagaimana DBSCAN dapat menyusun data ke dalam bentuk dan dimensi yang berbeza untuk mencari cluster yang sama. Kami juga melihat dalam imej yang betul, bahawa titik-titik di sepanjang tepi luar dataset tidak diklasifikasikan, menunjukkan bahawa ia adalah outliers di antara data.

Kelebihan DBSCAN:

  • Adalah bagus untuk memisahkan kelompok yang mempunyai ketumpatan tinggi berbanding kluster ketumpatan rendah dalam dataset yang diberikan.
  • Adalah bagus dengan mengatasi masalah dalam dataset.

Kelemahan DBSCAN:

  • Tidak berfungsi dengan baik apabila berurusan dengan kelompok dengan kepelbagaian yang berlainan. Walaupun DBSCAN hebat dalam memisahkan kluster ketumpatan tinggi daripada kelompok kerapatan rendah, DBSCAN bergelut dengan kelompok yang mempunyai ketumpatan yang sama.
  • Perjuangan dengan data dimensi tinggi. Saya tahu, artikel keseluruhan ini saya telah menyatakan bagaimana DBSCAN hebat dalam mengkontortasikan data ke dalam dimensi dan bentuk yang berbeza. Walau bagaimanapun, DBSCAN hanya boleh pergi sejauh ini, jika diberikan data dengan terlalu banyak dimensi, DBSCAN menderita

Di bawah ini saya telah memasukkan bagaimana untuk melaksanakan DBSCAN dalam Python, di mana selepas itu saya menerangkan metrik dan menilai Model DBSCAN anda

Pelaksanaan DBSCAN dalam Python

1. Menetapkan data sebagai nilai X kami
Ingat, kerana ini adalah pembelajaran tanpa pengawasan, kita tidak mempunyai nilai y yang jelas untuk ditetapkan.
2. Menyedia Model DBSCAN kami. Dalam kod di bawah, epsilon = 3 dan min_samples adalah bilangan minimum mata yang diperlukan untuk membentuk kelompok.
3. Menyimpan label yang dibentuk oleh DBSCAN
4. Mengenalpasti titik mana yang menjadi "teras utama"
5. Mengira bilangan kluster
6. Mengira Markah Siluet

Metrik untuk Mengukur Prestasi DBSCAN:

Skor siluet: Skor siluet dikira menggunakan jarak intra-kluster min di antara titik, DAN jarak purata kluster terdekat. Sebagai contoh, kumpulan dengan banyak titik data sangat dekat antara satu sama lain (kepadatan tinggi) DAN jauh dari kluster terdekat seterusnya (mencadangkan kluster yang sangat unik berbanding dengan yang terdekat), akan mempunyai skor siluet yang kuat . Skor siluet berkisar dari -1 ke 1, dengan -1 menjadi skor paling buruk yang mungkin dan 1 adalah skor terbaik. Skor siluet 0 menunjukkan kelompok tumpang tindih.

Inertia: Inertia mengukur jumlah kluster dalaman kuadrat (jumlah kotak adalah jumlah semua sisa). Inersia digunakan untuk mengukur bagaimana kluster berkaitan adalah di antara mereka sendiri, semakin rendah skor inersia lebih baik. Walau bagaimanapun, adalah penting untuk diperhatikan bahawa inersia sangat bergantung pada andaian bahawa kelompok itu cembung (bentuk sfera). DBSCAN tidak semestinya membahagikan data ke dalam kluster sfera, maka inersia bukan metrik yang baik untuk digunakan untuk menilai model DBSCAN (sebabnya saya tidak memasukkan inersia dalam kod di atas). Inersia lebih kerap digunakan dalam kaedah kluster lain, seperti clustering K-means.

Sumber Lain:

Blog Naftali Harris adalah sumber tambahan yang luar biasa untuk maklumat lanjut