Özellik Seçimi & VIF Analizi
Aynı hikayeyi iki kere anlatan değişkenleri tespit edin! 📊
Modelinizin kafasını karıştıran gereksiz özellikleri temizleyin.
🎯 Nasıl Kullanacaksınız? (3 Adım)
Verinizi Girin
Aşağıdaki kutuya sayısal verilerinizi girin veya örnek veriyi kullanın
"Analiz Et" Butonuna Tıklayın
Sistem otomatik olarak korelasyonları ve VIF değerlerini analiz edecek
Sonuçları Yorumlayın
Kırmızı renkli hücrelere ve yüksek VIF değerlerine dikkat edin
Neden Özellik Seçimi Gerekli?
🤔 Problem: Aynı Bilgiyi Tekrar Eden Değişkenler
Eğer iki değişken aynı bilgiyi taşıyorsa (örneğin "metrekare" ve "metrekare + 1"), modeliniz hangisinin daha önemli olduğuna karar veremez. Bu da kararsız ve güvenilmez sonuçlara yol açar.
📊 Korelasyon Nedir? Nasıl Yorumlanır?
|r| < 0.5
0.5 ≤ |r| < 0.8
|r| ≥ 0.8
🎯 VIF (Variance Inflation Factor) Nedir?
VIF, bir değişkenin diğer değişkenler tarafından ne kadar iyi açıklandığını ölçer. Yüksek VIF değeri (> 5-10), o değişkenin gereksiz olduğunu gösterir.
Formül: VIF ≈ 1 / (1 - R²) | İyi: VIF < 5 | Kötü: VIF > 10
✅ Ne Yapmalıyım?
- Değişkenlerden birini çıkar
- Domain bilgisine göre seçim yap
- Yeni bir özellik oluştur (ortalama, oran vb.)
- Değişkeni çıkar
- Ridge/Lasso regresyon kullan
- PCA ile boyut indirgeme yap
🔍 A) Verinizi Analiz Edin
Örnek veriyi kullanabilir veya kendi verinizi yapıştırabilirsiniz:
🎨 B) Korelasyon Isı Haritası
Renkler değişkenler arasındaki ilişkiyi gösterir:
📊 C) Analiz Sonuçları & Öneriler
📈 D) VIF Değerleri (Yaklaşık)
Her değişkenin diğer değişkenlerle ilişkisini gösteren yaklaşık VIF değerleri:
🎮 E) Problem Yaratmayı Deneyin!
Aşağıda yapay olarak mükemmel korelasyonlu bir sütun ekleyin ve ısı haritasının nasıl kırmızıya döndüğünü gözlemleyin.
Deneyin: a=1, b=0 yaparsanız mükemmel korelasyon (kırmızı) yaratırsınız!
Formül: yeni_sütun = a × metrekare + b
💻 Gerçek Kod Örneği
import pandas as pd
import numpy as np
from statsmodels.stats.outliers_influence import variance_inflation_factor
# Korelasyon matrisi ile yüksek korelasyonlu değişkenleri bul
correlation_matrix = df.corr()
high_corr_pairs = []
for i in range(len(correlation_matrix.columns)):
for j in range(i):
if abs(correlation_matrix.iloc[i, j]) > 0.8: # Eşik değer
high_corr_pairs.append((correlation_matrix.columns[i], correlation_matrix.columns[j]))
# VIF değerlerini hesapla
def calculate_vif(data):
vif_data = pd.DataFrame()
vif_data["feature"] = data.columns
vif_data["VIF"] = [variance_inflation_factor(data.values, i) for i in range(len(data.columns))]
return vif_data
vif_results = calculate_vif(df)
high_vif_features = vif_results[vif_results["VIF"] > 10] # Eşik değer
print("Yüksek korelasyonlu çiftler:", high_corr_pairs)
print("Yüksek VIF'li değişkenler:")
print(high_vif_features)
# Çözüm: Gereksiz değişkenleri çıkar
# df_clean = df.drop(columns=['gereksiz_degisken1', 'gereksiz_degisken2'])
✅ Bulduğunuz Problemleri Nasıl Çözeceksiniz?
🎯 Hangi Değişkeni Çıkaracaksınız?
- Domain bilgisi: Hangisi daha mantıklı?
- Basitlik: Hangisi daha anlaşılır?
- Veri kalitesi: Hangisinde daha az eksik veri var?
- Yorumlanabilirlik: Hangisini açıklaması daha kolay?
🛠️ Pratik Çözümler:
- Değişkenlerden birini silin
- Yeni bir özellik oluşturun (ortalama, oran)
- Ridge/Lasso regresyon kullanın
- PCA ile boyut indirgeme yapın