DBSCAN ile K-means Farkı: Merkezler mi, Yoğun Bölgeler mi?
Karşılaştırma

DBSCAN ile K-means Farkı: Merkezler mi, Yoğun Bölgeler mi?

Hazırlayan: Mindset Institute EditörlüğüGüncellendi: 5 dk okuma

K-means veriyi sizin belirlediğiniz sayıda merkeze böler ve her noktayı mutlaka bir kümeye atar; DBSCAN ise yoğun bölgeleri küme sayar, şekle bakmaz ve hiçbir yoğun bölgeye ait olmayan noktaları gürültü olarak ayırır. Verinin şekli ve içindeki gürültü, seçimi belirleyen iki sorudur.

Bir bakışta

  1. K-means küme sayısını sizden ister, DBSCAN yoğunluk tanımını ister. DBSCAN'de küme sayısı, eps ve min_samples parametrelerinin sonucunda ortaya çıkar.
  2. K-means dışbükey, yuvarlak kümeler varsayar; DBSCAN her şekli bulabilir. scikit-learn belgeleri, k-means'in uzamış ve düzensiz şekilli kümelerde zayıf kaldığını belirtir.
  3. DBSCAN aykırı noktaları gürültü olarak ayırır, K-means ayırmaz. K-means'te uç bir nokta bile bir kümeye atanır ve o kümenin merkezini kendine doğru çeker.
  4. Farklı yoğunluktaki kümeler DBSCAN'i zorlar. Tek bir eps değeri tüm veriye uygulandığı için seyrek ve sık kümeler aynı anda iyi yakalanamayabilir.

İki farklı küme tanımı

DBSCAN ve K-means, etiketsiz veride benzer gözlemleri gruplayan denetimsiz öğrenme yöntemleridir ve ikisi de noktalar arasındaki uzaklığa dayanır. Bu yüzden ikisinde de değişkenlerin ölçeklenmesi şarttır: birimi büyük olan bir değişken, uzaklığı tek başına belirler. Ortak nokta burada biter, çünkü iki yöntem "küme" sözcüğünden farklı şeyler anlar.

scikit-learn belgelerine göre K-means, örnekleri eşit varyanslı gruplara ayırmaya çalışır ve eylemsizlik denen ölçüyü, yani noktaların kendi küme merkezine uzaklıklarının karelerinin toplamını küçültür. Küme burada bir merkezin çevresindeki noktalardır ve bu tanım dışbükey, yuvarlağa yakın kümeler varsayar.

DBSCAN ise kümeleri düşük yoğunluklu bölgelerle ayrılmış yüksek yoğunluklu bölgeler olarak görür. Bir noktanın çevresinde eps uzaklığı içinde en az min_samples kadar komşu varsa o nokta çekirdek noktadır; birbirine ulaşabilen çekirdek noktalar ve çevrelerindeki noktalar bir küme oluşturur. Hiçbir çekirdek noktaya yeterince yakın olmayan noktalar gürültü sayılır. Belgeler bu genel bakış sayesinde DBSCAN'in herhangi bir şekildeki kümeleri bulabildiğini vurgular.

Ölçüt ölçüt karşılaştırma

İki yöntemi seçerken şu ölçütleri tartın:

  • Girdi parametresi: K-means: küme sayısı. / DBSCAN: eps ve min_samples; küme sayısı sonuçta ortaya çıkar.
  • Küme şekli: K-means: dışbükey ve yaklaşık yuvarlak kümeler. / DBSCAN: hilal, halka ya da uzamış şekiller dahil her şekil.
  • Aykırı değer: K-means: her nokta bir kümeye atanır, uç noktalar merkezi kaydırır. / DBSCAN: uç noktalar gürültü olarak ayrılır.
  • Farklı yoğunluklar: K-means yoğunluktan etkilenmez ama şekil varsayımı sürer. / DBSCAN: tek bir eps tüm veriye uygulandığı için yoğunluğu çok farklı kümelerde zorlanır.
  • Yeni veri: K-means: yeni bir nokta en yakın merkeze atanabilir. / DBSCAN: scikit-learn uygulamasında yeni nokta için doğrudan bir tahmin yöntemi yoktur.
  • Tekrarlanabilirlik: K-means: başlangıç merkezlerine bağlıdır ve yerel bir çözüme yakınsayabilir. / DBSCAN: aynı veri aynı sırayla verildiğinde aynı kümeleri üretir, ama sıra değişirse sınırdaki noktaların ataması değişebilir.
  • Bellek: DBSCAN'in scikit-learn uygulaması, ağaç yapıları kullanılamadığında tüm nokta çiftleri için uzaklık matrisi kurduğundan büyük veride bellek sorunu çıkarabilir.

Bu farklar yöntemlerin birbirinin yerine değil, farklı veri şekillerine göre kullanıldığını gösterir.

Verinin şekline ve küme sayısı bilgisine göre seçim

Seçimi iki soruya indirgemek işe yarar: kümeler yuvarlak ve benzer büyüklükte mi, yoksa düzensiz şekilli ya da gürültülü mü? Kaç küme olduğunu biliyor musunuz?

Kümeler yuvarlağa yakın ve küme sayısı biliniyorsa, örneğin bir pazarlama ekibi müşterileri önceden kararlaştırdığı sayıda segmente ayıracaksa, K-means doğal seçimdir; hızlıdır ve yorumu kolaydır. Kümeler yuvarlak ama sayı bilinmiyorsa yine K-means kullanılabilir; farklı küme sayıları denenip siluet skoru gibi ölçütlerle karşılaştırılır.

Kümeler düzensiz şekilli ya da veri gürültülüyse ve sayı bilinmiyorsa, DBSCAN tam bu durum için tasarlanmıştır; sayıyı sormadan yoğun bölgeleri bulur ve aykırı noktaları ayırır. Kümeler düzensiz ama sayı biliniyorsa, K-means'i zorlamak yerine DBSCAN çalıştırıp bulduğu küme sayısını beklentinizle karşılaştırmak daha sağlıklıdır; tutmuyorsa eps değerini gözden geçirin.

Şekil 1

Küme şekli ve küme sayısı bilgisi, yöntemi belirler

Yuvarlak, benzer kümelerDüzensiz şekil ya da gürültü
DBSCAN, sonucu beklentiyle sınaBulunan küme sayısı beklentiyi tutmuyorsa eps gözden geçirilir.
DBSCANSayı sormadan yoğun bölgeleri bulur, aykırı noktaları ayırır.
K-meansHızlı, yorumu kolay; sayı doğrudan girilir.
K-means, birkaç sayı deneFarklı küme sayıları siluet gibi ölçütlerle karşılaştırılır.
Küme sayısı biliniyorKüme sayısı bilinmiyor
Kaynak: sayfa içeriği; scikit-learn Clustering kılavuzuMindset Institute

DBSCAN parametrelerini ayarlamak

DBSCAN'in en zor yanı eps değerini seçmektir. scikit-learn belgeleri bu parametrenin veri setine ve uzaklık fonksiyonuna göre özenle seçilmesi gerektiğini ve genellikle varsayılan değerde bırakılamayacağını vurgular. eps çok küçükse verinin büyük kısmı kümelenmez ve gürültü etiketi alır; çok büyükse yakın kümeler birleşir, en sonunda tüm veri tek bir küme olur.

Pratikte yaygın yöntem şöyledir: önce değişkenler ölçeklenir. min_samples için veri boyutuna ve gürültü düzeyine göre makul bir değer seçilir; daha yüksek değer, küme sayılmak için daha yoğun bir bölge ister. Ardından her noktanın min_samples sayıdaki en yakın komşusuna uzaklığı hesaplanır, bu uzaklıklar sıralanıp çizilir ve eğrinin belirgin biçimde kırıldığı nokta eps için aday olarak alınır. Son olarak sonuç, küme sayısı, gürültü oranı ve kümelerin iş açısından anlamı birlikte değerlendirilerek gözden geçirilir.

Kümeler belirgin biçimde farklı yoğunluktaysa tek bir eps hiçbir zaman iyi sonuç vermeyebilir. Bu durumda scikit-learn belgelerinin DBSCAN'in genişletmesi olarak tanıttığı HDBSCAN, farklı yoğunluk ölçeklerini birlikte inceleyerek daha sağlam bir alternatif sunar.

Şekil 2

eps varsayılan bırakılmaz, veriden okunur

  1. ÖlçekleDeğişkenler aynı ölçeğe getirilir.
  2. min_samples seçDaha yüksek değer, daha yoğun bölge ister.
  3. Komşu uzaklıklarını çizSıralı uzaklık eğrisinin kırıldığı yer eps adayıdır.
  4. Çalıştır ve gözden geçirKüme sayısı, gürültü oranı ve iş anlamı birlikte okunur.
Kaynak: sayfa içeriği; scikit-learn Clustering kılavuzuMindset Institute

İki uygulama alanı, iki farklı yöntem

Bir lojistik ekibinin teslimat noktalarının konum verisini incelediğini düşünün. Teslimatlar şehir içinde ana caddeler boyunca uzanan, düzensiz şekilli yoğun bölgelerde toplanır; arada tek tük kırsal adresler vardır. K-means bu veriye uygulandığında uzun bir caddeyi birkaç yapay parçaya böler ve kırsal adresleri en yakın kümeye zorla katar. DBSCAN ise caddeler boyunca uzanan yoğun bölgeleri bütün olarak bulur ve kırsal adresleri gürültü olarak ayırır; bu noktalar ayrı bir teslimat planıyla ele alınabilir.

Aynı şirketin pazarlama ekibi ise müşterileri satın alma sıklığı ve sepet büyüklüğüne göre, kampanya bütçesine uygun sayıda segmente ayırmak istiyor. Burada küme sayısı iş kararıyla belirlenmiştir, her müşterinin bir segmente girmesi gerekir ve segmentlerin merkezleri "tipik müşteri" olarak yorumlanır. Bu iş K-means'in güçlü olduğu alandır.

İki yöntem birlikte de kullanılabilir: önce DBSCAN ile gürültü noktaları ayıklanır, ardından temizlenen veri üzerinde K-means çalıştırılarak aykırı noktaların merkezleri kaydırması önlenir.

Mindset programlarında kümeleme

Makine Öğrenmesi (Uygulamalı) Programı'nın denetimsiz öğrenme modülü, K-means kümeleme ve küme sayısı seçimi ile DBSCAN ile yoğunluk tabanlı kümelemeyi aynı modülde ele alır ve müşteri segmentasyonu vakasıyla uygular. Bu yapı, iki yöntemi aynı veri üzerinde deneyip farklarını görmeyi sağlar.

Data Science Bootcamp'in kümeleme ve sınıflandırma bölümü de K-means, hiyerarşik kümeleme ve DBSCAN'i farklı kümeleme tekniklerinin karşılaştırmasıyla işler.

İlgili Mindset programı

Makine Öğrenmesi (Uygulamalı) Programı

Sık sorulanlar

Sık sorulan sorular

DBSCAN'de gürültü olarak işaretlenen noktalar ne yapılmalı?

Önce incelenmelidir. Gürültü noktaları gerçek aykırı değerler, veri giriş hataları ya da henüz yeterince gözlemi olmayan küçük bir grup olabilir. Oranı yüksekse eps çok küçük seçilmiş olabilir. İş açısından anlamlıysa ayrı bir grup olarak raporlanır; analiz için sorun yaratıyorsa ayıklanır, ama sessizce silinmemelidir.

DBSCAN yüksek boyutlu veride iyi çalışır mı?

Boyut arttıkça noktalar arası uzaklıklar birbirine yaklaşır ve yoğun bölge ile seyrek bölge ayrımı bulanıklaşır; bu durumda uygun bir eps bulmak zorlaşır. Çok sayıda değişken varsa önce temel bileşenler analizi gibi bir boyut indirgeme uygulamak ya da kümelemeye yalnız anlamlı değişkenleri almak DBSCAN'in başarısını artırır.

K-means aykırı değerlere karşı nasıl korunur?

Kümelemeden önce aykırı değerleri tespit edip incelemek ilk adımdır; ölçeklemede uç değerlere daha dayanıklı yöntemler kullanmak da etkiyi azaltır. Merkez yerine ortanca benzeri temsilciler kullanan yöntemler de bir seçenektir. DBSCAN'i bir ön temizlik adımı olarak çalıştırıp gürültüyü ayırmak, sonra K-means uygulamak da pratik bir yoldur.

HDBSCAN, DBSCAN'in yerini alır mı?

Birçok durumda daha rahat bir seçenektir. scikit-learn belgeleri HDBSCAN'i DBSCAN ve OPTICS'in bir genişletmesi olarak tanıtır; tek bir yoğunluk eşiği yerine farklı yoğunluk ölçeklerini inceler ve daha sağlam kabul edilen min_samples parametresine dayanır. Kümeleriniz benzer yoğunluktaysa ve eps kolay seçilebiliyorsa DBSCAN hâlâ yeterli ve anlaşılır bir yöntemdir.

İki yöntemin sonucunu aynı ölçütle karşılaştırabilir miyim?

Dikkatle. Siluet skoru gibi iç ölçütler, kümelerin merkez etrafında toplu ve birbirinden uzak olmasını ödüllendirir; bu yüzden K-means'in ürettiği yuvarlak kümeleri, DBSCAN'in bulduğu uzun ya da kıvrımlı kümelere göre kayırabilir. DBSCAN sonucunu değerlendirirken gürültü noktalarını ayrı ele almak ve kümelerin iş açısından anlamını, örnek noktaları inceleyerek kontrol etmek daha güvenilirdir.