Kümeleme ve küme modelleri

Python ile Ayrık Olay Benzetimi

Diogo Costa (PhD, MSc)

Adjunct Professor, University of Saskatchewan, Canada & CEO of ImpactBLUE-Scientific

Model sonuçlarının histogramları

  • Model sonuçlarını keşfedin
  • Eşik noktaları ve darboğazları saptayın
  • Sistemi optimize edin

Histogram

  • Sıklık dağılımını gösterir
  • Belirli aralıkta gözlem sayısını verir

Matplotlib paketi

import matplotlib.pyplot as plt

Kullanım: data veri kümesi için 50 kutucuklu histogram oluşturun

plt.hist(data, bins=50)

İki küme öneren iki gauss dağılımlı, 50 kutucuklu histogram.

Python ile Ayrık Olay Benzetimi

Küme analizi ve modellere uygulanması

  • Uygulamalar
    • Örüntü tanıma (ör. model sonuçları)
    • Görüntü analizi

Kuzey Amerika'daki gece ışıklarının bir uydu görüntüsü.

  • Veri sıkıştırma
  • Bilgisayar grafikleri
  • Makine öğrenmesi

    Makine öğrenimindeki bu tekniğe ve veri örüntülerinin/kümelerin ortaya çıkışına atıfta bulunan, beynin içinde bir sinir ağı resmi.

  • Ayrık olaylı modellerde

    • Model çıktı örüntülerini belirleyin
    • Daha uygulanabilir bilgi
Python ile Ayrık Olay Benzetimi

k-means kümeleme

Odak noktamız

  • k-means kümeleme (centroid modeli)
  • Gözlemleri k kümeye ayırma
  • Her gözlem, en yakın ortalamaya sahip kümeye aittir
  • Küme ortalamaları "küme centroidleri" olarak adlandırılır

Gözlemler ve küme centroidleri

k-means ile hesaplanan küme centroidleriyle veriyi gösteren grafik.

Python ile Ayrık Olay Benzetimi

SciPy ile k-means kümeleme

SciPy yöntemi

scipy.cluster.vq.kmeans()

Uygulama

import scipy
scipy.cluster.vq.kmeans(
obs, k_or_guess, iter=20, thresh=1e-05,
check_finite=True, *, seed=None)
  • obs bir numpy dizisidir
  • Döndürür:
    1. Küme merkezleri (centroid)
    2. Bozulma (gözlemler ile üretilen centroidler arasındaki ortalama mesafe)
Python ile Ayrık Olay Benzetimi

Veri beyazlatma: Dekorrelasyon ve yeniden ölçekleme

k-means öncesi: Beyazlatma (whitening)

  1. obs verisini dekorrele edin
  2. obs boyutlarını standart sapmasıyla yeniden ölçekleyin

İlk panelde korele veri, ikincide dekorrele veri, üçüncüde beyazlatılmış veri görülür.

SciPy'da

scipy.cluster.vq.whiten(
obs, check_finite=True)
  • obs bir numpy dizisidir
Python ile Ayrık Olay Benzetimi

Beyazlatma ve k-means örneği

  • Birden çok süreç içeren üretim faaliyeti
  • Process 1 etkisini inceleyelim

DNT_CURLY_TAG_2 Ham veride ve beyazlatılmış veride süreç 1 süresi ile toplam süreyi k-means kümeleriyle gösteren grafik.

Paketi içe aktarın

import scipy.cluster.vq as scvq

Model sonuçlarını beyazlatın

white_data = scvq.whiten(model_results)

2 küme bulun (mavi noktalar)

cluster_centroids, distortion = 
scvq.kmeans(white_data, 2)
Python ile Ayrık Olay Benzetimi

En uygun küme sayısı

Teknikler

  • Basit yöntem (maksimum küme sayısı)
  • Dirsek (elbow) yöntemi
  • Silüet katsayısı
  • Boşluk (gap) istatistiği

Basit yöntem

  • Maksimum küme sayısını belirleyin
  • Kullanım: $\Big(\dfrac{nobs}{2}\Big)^{0.5}$
    • nobs = gözlem sayısı
num_clusters = 
  int((model_results.shape[0]/2)**0.5)
  • Konsol çıktısı
    22
    
Python ile Ayrık Olay Benzetimi

En uygun küme sayısı: Silüet skoru yöntemi

  • Kütüphaneleri içe aktarın
from sklearn.metrics import silhouette_score

k küme sayıları için silüet skorlarını hesaplayın

for k in range(2, 6):
  model = KMeans(n_clusters=k)
  model.fit(model_results)
  pred = model.predict(model_results)
  score = silhouette_score(model_results, pred)

Konsol çıktısı

Silhouette Score for k = 2: 0.591
Silhouette Score for k = 3: 0.472
Silhouette Score for k = 4: 0.381
Silhouette Score for k = 5: 0.364
Silhouette Score for k = 6: 0.373

Sonuçları yorumlayın

  • En iyi değer: score = 1
  • En kötü değer: score = -1
  • Kümeler örtüşüyorsa: score 0'a yakın
Python ile Ayrık Olay Benzetimi

Vamos praticar!

Python ile Ayrık Olay Benzetimi

Preparing Video For Download...