• Yapay zeka soru ve sorunlarınızı uygun olan kategorilere açıp yanıt alabilirsiniz...

Scikit-learn modelinde özellik önemi nasıl incelenir?

Garfield

YZF Admin
Yaş
40
Konum
YurtDışı
Katılım
27 Eki 2026
Konular
669
Mesajlar
694
AI Seviyesi
Yeni
Özellik önemini incelemek için önce modelin kendi önem skorunu, ardından modelden bağımsız permutation importance değerini hesaplayın. Ağaç tabanlı modellerde feature_importances_, doğrusal modellerde katsayılar, daha genel ve karşılaştırılabilir bir değerlendirme için ise permutation_importance kullanılabilir. Sonuçları tek başına kesin neden-sonuç ilişkisi olarak yorumlamayın; özellikle yüksek korelasyonlu özelliklerde önem dağılımı yanıltıcı olabilir.

Kullanacağınız yöntemi seçin​


Model türü, hangi önem ölçümünün uygun olduğunu belirler. Ağaç tabanlı modeller kendi iç önem skorlarını sunar; doğrusal modellerde katsayının mutlak değeri büyüklük hakkında fikir verir; yönü görmek için işaretli katsayı gerekir. Permütasyon önemi ise seçilen değerlendirme metriği açısından bir özelliğin model performansına katkısını ölçer ve farklı model türlerinde kullanılabilir.
YöntemUygun modellerNe gösterir?Temel sınırlama
feature_importances_Karar ağaçları, rastgele ormanlar, gradyan artırma modelleriModelin dallanma kararlarında özelliklerin katkısınıKorelasyonlu özelliklerde önem paylaşımı yanıltılabilir
Katsayıların mutlak değeriDoğrusal ve lojistik modellerKatsayının mutlak büyüklüğünü; yön için işaretli katsayı gerekir.Ölçeklendirme yapılmadıysa katsayılar doğrudan karşılaştırılamaz
permutation_importanceBirçok denetimli öğrenme modeliÖzellik karıştırıldığında model başarısının ne kadar değiştiğiniKorelasyon ve seçilen veri kümesine duyarlıdır
Bu nedenle pratikte iki ölçümü birlikte kullanmak daha güvenlidir: modelin yerleşik önem skorunu hızlı bir ilk inceleme için, permutation importance değerini ise doğrulama veya test verisi üzerindeki performans etkisini görmek için kullanın.

Ağaç tabanlı modelde özellik önemini hesaplama​


Aşağıdaki varsayımsal örnekte modelin X_train ile eğitildiği ve sütun adlarının X.columns içinde bulunduğu kabul edilir. Modeliniz RandomForestClassifier, RandomForestRegressor, DecisionTreeClassifier, DecisionTreeRegressor veya benzeri bir ağaç tabanlı model olmalıdır.
  1. Modelin eğitilmiş olduğunu doğrulayın. Özellik önemini hesaplamadan önce fit() çağrısı tamamlanmış olmalıdır; aksi hâlde modelde gerekli önem özniteliği bulunmaz.
  2. Özellik adlarını ve önem değerlerini eşleştirin. feature_importances_ dizisinin sırası, modelin eğitimde aldığı sütun sırasıyla aynı olmalıdır.
  3. Değerleri büyükten küçüğe sıralayın. Böylece modelin iç değerlendirmesine göre en etkili görünen özellikleri üstte görebilirsiniz.
Python:
import pandas as pd
from sklearn.ensemble import RandomForestClassifier

model = RandomForestClassifier(random_state=42)
model.fit(X_train, y_train)

importance = pd.Series(
    model.feature_importances_,
    index=X_train.columns
).sort_values(ascending=False)

print(importance)

Örneğin çıktı şu biçimdeyse:

Kod:
gelir       0.42
yaş         0.27
borç_oranı  0.19
şehir       0.12

gelir özelliğinin, ağaç bölünmelerindeki ağırlıklı safsızlık azalmasına bu örnekte en büyük payı verdiği söylenebilir. feature_importances_ doğrudan bölünmelerde kullanılma sayısı değildir. Bu çıktı, gelirin hedef değişkeni kesin olarak oluşturduğunu veya tek başına en güçlü gerçek neden olduğunu kanıtlamaz.

Permutation importance ile doğrulama verisini inceleme​


Permutation importance hesaplanırken seçtiğiniz veri kümesinde bir özelliğin değerleri karıştırılır ve model başarısındaki değişim ölçülür. Bu nedenle eğitim verisi yerine mümkünse daha önce modelin görmediği doğrulama veya test verisini kullanın. Sınıflandırmada accuracy, f1, roc_auc; regresyonda r2 veya uygun başka bir metrik seçebilirsiniz.
  1. Eğitilmiş modeli doğrulama verisi üzerinde değerlendirin. X_valid ve y_valid modelin eğitiminde kullanılmamışsa ölçüm, yeni verideki davranışı daha iyi yansıtır.
  2. Permutation importance değerlerini hesaplayın. n_repeats değerini artırmak ölçümü daha kararlı hâle getirir ancak hesaplama süresini uzatır.
  3. Ortalama ve standart sapmayı birlikte inceleyin. Ortalama değer yüksek, standart sapma da çok büyükse önem sıralaması kararsız olabilir.
Python:
import pandas as pd
from sklearn.inspection import permutation_importance

result = permutation_importance(
    model,
    X_valid,
    y_valid,
    n_repeats=10,
    random_state=42,
    scoring="accuracy"
)

importance = pd.DataFrame({
    "özellik": X_valid.columns,
    "ortalama": result.importances_mean,
    "standart_sapma": result.importances_std
}).sort_values("ortalama", ascending=False)

print(importance)

Ortalama değer pozitifse, o özellik karıştırıldığında model performansı genellikle düşmüştür. Değer sıfıra yakınsa model o özelliğe az dayanıyor olabilir. Negatif değer, karıştırmanın performansı artırdığını gösterir; bu durum gürültü, örnekleme değişkenliği veya modelin özelliği olumsuz kullanmasıyla ilişkili olabilir. Tek bir ölçümle karar vermek yerine tekrar sayısını, veri bölünmesini ve standart sapmayı birlikte değerlendirin.

Doğrusal modellerde katsayıları yorumlama​


LinearRegression, LogisticRegression ve benzeri modellerde önem için genellikle katsayıların mutlak değerleri karşılaştırılır. Ancak özellikler farklı ölçeklerdeyse, büyük katsayı doğrudan daha önemli anlamına gelmez. Örneğin gelir binlerle, yaş ise onlarca ölçülüyorsa katsayı büyüklükleri ölçek farkından etkilenebilir.

Python:
import pandas as pd
from sklearn.linear_model import LogisticRegression

model = LogisticRegression(max_iter=1000)
model.fit(X_train, y_train)

importance = pd.Series(
    model.coef_[0].__abs__(),
    index=X_train.columns
).sort_values(ascending=False)

print(importance)
print("İşaretli katsayılar:")
print(pd.Series(model.coef_[0], index=X_train.columns).sort_values())

Mutlak değer büyüklüğü, işaretli katsayı yönü gösterir. İkili lojistik regresyonda coef_[0], diğer özellikler sabitken model.classes_[1] sınıfının log-olasılık oranına etkiyi verir. Çok sınıflı modelde bu kod yalnız ilk katsayı satırını gösterir; her satırı model.classes_ sırasındaki ilgili sınıfla inceleyin; kesin yorum, hedef sınıfın kodlanmasına ve modelin diğer değişkenleriyle birlikte değerlendirilmesine bağlıdır. Bu yaklaşım, doğrusal ilişkinin model varsayımlarıyla sınırlıdır.

Sonuçları yanlış yorumlamamak​


Bir özelliğin önemli çıkması onun nedensel olduğunu göstermez. Özellik başka bir değişkenin temsilcisi olabilir, veri sızıntısı içerebilir veya yalnızca belirli bir veri bölünmesinde önemli görünebilir. Özellikle birbirine yüksek derecede korelasyonlu özelliklerde model, bilgiyi bu özellikler arasında paylaşabilir. Birini karıştırdığınızda diğer benzer özellikler bilgiyi koruduğu için permutation importance düşük çıkabilir.

En güvenilir inceleme için önem sıralamasını eğitim ve doğrulama verisinde karşılaştırın, yüksek önem taşıyan sütunlarda veri sızıntısı olup olmadığını kontrol edin ve korelasyonlu özellikleri birlikte değerlendirin. Önem değerleri veri kümesine, modele, metriğe ve rastgele bölmeye bağlı olduğundan, bunları modelin karar mekanizmasını anlamaya yardımcı olan göstergeler olarak kullanın; tek başına özellik seçme veya nedensellik kanıtı olarak kullanmayın.
 
Son düzenleme:

Sen de şimdi bize katılmak ister misin?

Kayıt ol

Bize katılım kolay ve ücretsizdir!

Konuyu görüntüleyenler

Bu konuyu şu anda görüntüleyen üye bulunmuyor.
Robotlar:
  • Anthropic

Son mesajlar

Son konular

Geri
Üst