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.
-
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:
- Sayısal Değişkenler:
- Ortalama (μ):
x̄ = (Σx_i) / n
- Medyan (η): Sıralı verilerin ortanca değeri
- Ortalama (μ):
- Kategorik Değişkenler:
- Mod: En sık görülen değer
- Frekans bazlı atama: P(x = v_i) = f_i / n
- Sayısal Değişkenler:
-
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)|)
-
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 }
-
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
-
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)
-
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:
-
Elbow Metodu:
W_k = Σ_k=1^K Σ_i∈C_k ||x_i - μ_k||²
-
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
-
-
Epsilon Komşuluğu:
N_ε(p) = {q ∈ D | dist(p,q) ≤ ε}
-
Çekirdek Nokta Koşulu:
|N_ε(p)| ≥ MinPts
-
Parametre Optimizasyonu:
- ε seçimi: k-distance grafiği
- MinPts seçimi: veri boyutu bazlı
MinPts ≈ ln(n)
- 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)]
- Merkez Güncelleme:
Burada η_t öğrenme oranı:
c_t = c_{t-1} × (1 - η_t) + x_t × η_t
η_t = 1 / n_t
- Kovaryans Matrisi Güncelleme:
α: Öğrenme oranı (genellikle 0.1)
Σ_t = (1 - α)Σ_{t-1} + αx_tx_t^T
-
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ü
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
}
}
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
}
}
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)
-
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.
-
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
-
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²)
- İşlem Gecikmesi: < 100ms/batch
- Bellek Kullanımı: O(k + m)
- k: aktif küme sayısı
- m: mini-batch boyutu
-
Veri Ön İşleme Etkinliği
- Eksik veri oranı: < %5
- Aykırı değer tespiti doğruluğu: %95
- Özellik ölçeklendirme stabilitesi: %98
-
Kümeleme Performansı
- Ortalama Silhouette skoru: 0.65
- Küme sayısı stabilitesi: %92
- Model güncelleme süresi: < 50ms
-
Sistem Ölçeklenebilirliği
- Lineer bellek kullanımı
- Paralel işleme desteği
- Dağıtık hesaplama uyumluluğu
- Ester, M., et al. (1996). "A Density-Based Algorithm for Discovering Clusters"
- Lloyd, S. (1982). "Least squares quantization in PCM"
- Ward Jr, J. H. (1963). "Hierarchical Grouping to Optimize an Objective Function"
- Yeo, I. K., & Johnson, R. A. (2000). "A New Family of Power Transformations to Improve Normality"
- Maaten, L., & Hinton, G. (2008). "Visualizing Data using t-SNE"
- Sculley, D. (2010). "Web-Scale K-Means Clustering"
- Cardot, H., et al. (2015). "Online Principal Component Analysis in High Dimension"
Bu Proje, Eyyüp Toprak tarafından yazılmış ve paylaşılmıştır.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request