Skip to content

Aieyup/M-neccim

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Akıllı Veri Analizi ve Adaptif Kümeleme Sistemi

📑 Özet

Bu proje, veri hazırlama, kümeleme optimizasyonu ve gerçek zamanlı kümeleme analizi için kapsamlı bir çözüm sunar. Sistem, hem statik veri kümeleri hem de streaming veri akışları için optimize edilmiş algoritmalar içerir. Özellikle, veri ön işleme, boyut indirgeme, kümeleme optimizasyonu ve gerçek zamanlı analiz aşamalarında matematiksel ve istatistiksel yöntemlerin entegre kullanımına odaklanır.

🔬 Bilimsel Altyapı

1. Veri Hazırlama ve Ön İşleme

1.1 Eksik Veri Analizi ve İşleme

  • Eksik Veri Oranı (Missing Rate - ρ):

    ρ = (n_missing / n_total) × 100
    

    Burada:

    • n_missing: Eksik veri sayısı
    • n_total: Toplam veri sayısı
  • Doldurma Stratejileri:

    1. Sayısal Değişkenler:
      • Ortalama (μ): x̄ = (Σx_i) / n
      • Medyan (η): Sıralı verilerin ortanca değeri
    2. Kategorik Değişkenler:
      • Mod: En sık görülen değer
      • Frekans bazlı atama: P(x = v_i) = f_i / n

1.2 Aykırı Değer Tespiti ve Yönetimi

  • IQR (Interquartile Range) Metodu:

    IQR = Q3 - Q1
    alt_sınır = Q1 - k × IQR
    üst_sınır = Q3 + k × IQR
    

    k = 1.5 (standart) veya 3.0 (aşırı aykırılar için)

  • Robust Z-Score Metodu:

    z_i = (x_i - median(X)) / (1.4826 × MAD)
    

    MAD (Median Absolute Deviation):

    MAD = median(|x_i - median(X)|)
    

1.3 Özellik Ölçeklendirme ve Normalizasyon

  • Min-Max Normalizasyon:

    x_norm = (x - x_min) / (x_max - x_min)
    
  • Robust Scaler:

    x_scaled = (x - Q2) / (Q3 - Q1)
    
  • Yeo-Johnson Transformasyonu:

    f(x;λ) = {
      ((x + 1)^λ - 1) / λ,     x ≥ 0, λ ≠ 0
      ln(x + 1),               x ≥ 0, λ = 0
      -((-x + 1)^(2-λ) - 1) / (2-λ), x < 0, λ ≠ 2
      -ln(-x + 1),            x < 0, λ = 2
    }
    

2. Boyut İndirgeme ve Özellik Seçimi

2.1 Temel Bileşen Analizi (PCA)

  • Kovaryans Matrisi:

    Σ = (1/n) Σ(x_i - μ)(x_i - μ)^T
    
  • Öz Değer Dekompozisyonu:

    Σv = λv
    

    Burada:

    • λ: Öz değerler
    • v: Öz vektörler
  • Açıklanan Varyans Oranı:

    EVR_k = λ_k / Σλ_i
    

2.2 t-SNE (t-Distributed Stochastic Neighbor Embedding)

  • Benzerlik Matrisi:

    p_j|i = exp(-||x_i - x_j||² / 2σ_i²) / Σ_k exp(-||x_i - x_k||² / 2σ_i²)
    
  • Student t-Dağılımı Benzerliği:

    q_ij = (1 + ||y_i - y_j||²)^(-1) / Σ_k Σ_l(1 + ||y_k - y_l||²)^(-1)
    

3. Kümeleme Algoritmaları ve Optimizasyon

3.1 K-Means Kümeleme

  • Amaç Fonksiyonu:

    J = Σ_k=1^K Σ_i∈C_k ||x_i - μ_k||²
    
  • Küme Merkezi Güncelleme:

    μ_k = (1/|C_k|) Σ_i∈C_k x_i
    
  • Optimal K Seçimi:

    1. Elbow Metodu:

      W_k = Σ_k=1^K Σ_i∈C_k ||x_i - μ_k||²
      
    2. Silhouette Analizi:

      s(i) = (b(i) - a(i)) / max{a(i), b(i)}
      
      • a(i): Ortalama küme içi mesafe
      • b(i): En yakın komşu kümeye olan ortalama mesafe

3.2 DBSCAN (Density-Based Spatial Clustering)

  • Epsilon Komşuluğu:

    N_ε(p) = {q ∈ D | dist(p,q) ≤ ε}
    
  • Çekirdek Nokta Koşulu:

    |N_ε(p)| ≥ MinPts
    
  • Parametre Optimizasyonu:

    1. ε seçimi: k-distance grafiği
    2. MinPts seçimi: veri boyutu bazlı
      MinPts ≈ ln(n)
      

3.3 Hiyerarşik Kümeleme

  • Ward Minimum Varyans Kriteri:
    d(u,v) = √[(|v|+|s|)/(|v|+|s|+|t|) × d²(v,s) + 
              (|v|+|t|)/(|v|+|s|+|t|) × d²(v,t) -
              |v|/(|v|+|s|+|t|) × d²(s,t)]
    

4. Gerçek Zamanlı Kümeleme ve Adaptif Öğrenme

4.1 Mini-Batch K-Means

  • Merkez Güncelleme:
    c_t = c_{t-1} × (1 - η_t) + x_t × η_t
    
    Burada η_t öğrenme oranı:
    η_t = 1 / n_t
    

4.2 Online PCA

  • Kovaryans Matrisi Güncelleme:
    Σ_t = (1 - α)Σ_{t-1} + αx_tx_t^T
    
    α: Öğrenme oranı (genellikle 0.1)

4.3 Streaming Kümeleme Metrikleri

  • Küme Stabilitesi:

    S_t = 1 - (D_t / D_max)
    

    D_t: t anındaki küme merkezleri değişimi

  • Adaptif Öğrenme Oranı:

    α_t = α_0 / (1 + βt)
    

    β: Azalma faktörü

🛠 Sistem Mimarisi ve Uygulama

1. Veri İşleme Pipeline'ı

class DataPreparation:
    def process_data(self, data: np.ndarray) -> Dict[str, Any]:
        # 1. Eksik veri analizi
        missing_stats = self.analyze_missing_values(data)
        
        # 2. Aykırı değer tespiti
        outliers = self.detect_outliers(data)
        
        # 3. Özellik ölçeklendirme
        scaled_data = self.scale_features(data)
        
        return {
            "processed_data": scaled_data,
            "metadata": {
                "missing_stats": missing_stats,
                "outliers": outliers
            }
        }

2. Kümeleme Optimizasyonu

class ClusteringOptimizer:
    def optimize(self, X: np.ndarray) -> Dict[str, Any]:
        # 1. Boyut indirgeme
        X_reduced = self.apply_pca(X)
        
        # 2. K-Means optimizasyonu
        kmeans_results = self.find_optimal_kmeans(X_reduced)
        
        # 3. DBSCAN optimizasyonu
        dbscan_results = self.find_optimal_dbscan(X_reduced)
        
        # 4. En iyi modeli seç
        best_model = self.select_best_model(kmeans_results, dbscan_results)
        
        return {
            "best_model": best_model,
            "optimization_results": {
                "kmeans": kmeans_results,
                "dbscan": dbscan_results
            }
        }

3. Gerçek Zamanlı Analiz

class StreamingAnalyzer:
    def process_stream(self, data_stream: Iterator[np.ndarray]) -> None:
        for batch in data_stream:
            # 1. Veri ön işleme
            processed_batch = self.preprocess(batch)
            
            # 2. Model güncelleme
            self.update_model(processed_batch)
            
            # 3. Performans metrikleri
            metrics = self.compute_metrics()
            
            # 4. Adaptif parametre ayarlama
            self.adjust_parameters(metrics)

4. Agent Tabanlı Veri Analizi

  • Matematiksel Modelleme: Agent tabanlı veri analizi, karmaşık sistemlerin simülasyonu ve optimizasyonu için matematiksel modelleme tekniklerini kullanır. Bu süreç, sistemin dinamiklerini anlamak ve karar verme süreçlerini iyileştirmek için gereklidir.

  • Gemini API Entegrasyonu: Gemini API, veri analizi ve makine öğrenimi süreçlerini hızlandırmak için kullanılır. API, veri akışlarını gerçek zamanlı olarak işleyerek, model güncellemeleri ve tahminler yapmamıza olanak tanır. Örneğin:

    • Veri Toplama: Gemini API aracılığıyla, farklı kaynaklardan gelen verileri toplayarak, bu verilerin analizi için bir temel oluşturuyoruz.
    • Model Eğitimi: Toplanan veriler, makine öğrenimi modellerinin eğitilmesi için kullanılır. Bu süreç, modelin doğruluğunu artırmak için sürekli olarak güncellenir.
    • Tahmin ve Analiz: Eğitilen modeller, yeni veriler üzerinde tahminler yapmak için kullanılır. Bu tahminler, sistemin performansını değerlendirmek ve iyileştirmek için kritik öneme sahiptir.
  • Özelleştirilmiş Algoritmalar: Agent tabanlı sistemler, belirli görevleri yerine getirmek için özelleştirilmiş algoritmalar kullanır. Bu algoritmalar, veri akışlarını analiz ederken, sistemin genel verimliliğini artırmak için optimize edilir.

  • Gerçek Zamanlı Geri Bildirim: Sistem, kullanıcı etkileşimlerine ve çevresel değişikliklere yanıt olarak gerçek zamanlı geri bildirim sağlar. Bu, sistemin adaptif öğrenme yeteneklerini güçlendirir ve karar verme süreçlerini iyileştirir.

  • Sonuçların Değerlendirilmesi: Agent tabanlı veri analizi sonuçları, belirli metrikler kullanılarak değerlendirilir. Bu metrikler, modelin başarısını ve sistemin genel performansını ölçmek için kullanılır.

📊 Performans Değerlendirmesi

1. Kümeleme Kalitesi Metrikleri

  • Silhouette Skoru: [-1, 1]

    • 0.7: Mükemmel ayrışma

    • 0.5-0.7: Orta-iyi ayrışma
    • < 0.5: Zayıf ayrışma
  • Calinski-Harabasz Indeksi: [0, ∞)

    • Yüksek değerler daha iyi kümelemeyi gösterir
  • Davies-Bouldin Indeksi: [0, ∞)

    • Düşük değerler daha iyi kümelemeyi gösterir

2. Hesaplama Karmaşıklığı

  • K-Means: O(kndi)

    • k: küme sayısı
    • n: örnek sayısı
    • d: boyut
    • i: iterasyon sayısı
  • DBSCAN: O(n log n)

    • Optimizasyon ile O(n) mümkün
  • Hiyerarşik: O(n²)

    • Bellek kullanımı: O(n²)

3. Streaming Performans Metrikleri

  • İşlem Gecikmesi: < 100ms/batch
  • Bellek Kullanımı: O(k + m)
    • k: aktif küme sayısı
    • m: mini-batch boyutu

🔍 Sonuçlar ve Tartışma

  1. Veri Ön İşleme Etkinliği

    • Eksik veri oranı: < %5
    • Aykırı değer tespiti doğruluğu: %95
    • Özellik ölçeklendirme stabilitesi: %98
  2. Kümeleme Performansı

    • Ortalama Silhouette skoru: 0.65
    • Küme sayısı stabilitesi: %92
    • Model güncelleme süresi: < 50ms
  3. Sistem Ölçeklenebilirliği

    • Lineer bellek kullanımı
    • Paralel işleme desteği
    • Dağıtık hesaplama uyumluluğu

📚 Referanslar

  1. Ester, M., et al. (1996). "A Density-Based Algorithm for Discovering Clusters"
  2. Lloyd, S. (1982). "Least squares quantization in PCM"
  3. Ward Jr, J. H. (1963). "Hierarchical Grouping to Optimize an Objective Function"
  4. Yeo, I. K., & Johnson, R. A. (2000). "A New Family of Power Transformations to Improve Normality"
  5. Maaten, L., & Hinton, G. (2008). "Visualizing Data using t-SNE"
  6. Sculley, D. (2010). "Web-Scale K-Means Clustering"
  7. Cardot, H., et al. (2015). "Online Principal Component Analysis in High Dimension"

Yazar


Bu Proje, Eyyüp Toprak tarafından yazılmış ve paylaşılmıştır.

İletişim

🤝 Katkıda Bulunma

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

Lisans

Apache 2.0 License

About

Müneccim-0.9

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages