Ana içeriğe geç

Scoring ve Presetler

Puanlama motoru kullanicinin aktif ettigi kriterlere gore calisir. Bir kriter icin hedef yoksa o kriter toplam skora katilmaz. Hedef target_* alanindan ya da iki tarafli min_*/max_* araliginin ortasindan gelir; tek tarafli sinir (yalnizca min veya yalnizca max) hedef olusturmaz, yalnizca filtredir (bkz. Arama Kriterleri).

Hicbir kriter icin hedef yoksa TBDYSelectionStrategy min_score esigini uygulamaz ve adaylari varsayilan duzende siralar: buyuk MAGNITUDE once, sonra kucuk mesafe (Rjb > Rrup > Repi). Esit SCORE durumunda da ayni duzen esitlik bozucu olarak kullanilir.

Gaussian skor

Sayisal kriterler Gaussian fonksiyonuyla puanlanir:

score = exp(-((value - target)^2) / (2 * sigma^2))

Kriterin nihai katkisi:

weighted_score = score * weight

Toplam skor:

SCORE = sum(weighted_score) / sum(active_weights) * 100

Kategorik skor

Mekanizma gibi kategorik kriterler:

  • Tam eslesme: 1.0
  • Kismi eslesme: 0.7
  • Eslesme yok: 0.0

Hazir presetler

from selection_service.processing.criteria import ScoringWeights

weights = ScoringWeights.from_preset("tbdy_2018_record_selection")

Mevcut presetler:

Preset Amac
balanced Varsayilan dengeli agirliklar
tbdy_2018_record_selection Magnitude, mesafe, Vs30 ve mekanizmayi one cikarir
site_response Vs30, sure ve siddet olcutlerine daha fazla agirlik verir

Preset aciklamalari:

ScoringWeights.preset_descriptions()

Ozel agirliklar

from selection_service.processing.criteria import ScoringWeights

weights = ScoringWeights(
    magnitude=6.0,
    rjb=5.0,
    rrup=5.0,
    vs30=5.0,
    mechanism=4.0,
)

Agirligi 0.0 olan kriter skorlamaya katilmaz.

Skor kirilimi

scored_df icinde her satir icin SCORE_BREAKDOWN kolonu olusur.

Ornek eleman:

[
    {
        "criterion": "magnitude",
        "column": "MAGNITUDE",
        "status": "active",
        "target": 7.5,
        "value": 7.28,
        "weight": 6.0,
        "sigma": 0.25,
        "raw_score": 0.68,
        "weighted_score": 4.08,
    }
]

status degerleri:

  • active: Kriter skora katildi.
  • missing: Kolon veya deger eksik oldugu icin katilmadi.
  • inactive_weight: Agirlik 0.0 oldugu icin katilmadi.

Secim stratejileri

TBDY2018ConstraintStrategy, agirlikli Gaussian puan yerine once sert filtreleri uygular, sonra adaylari hata metriklerine gore siralar.

from selection_service.processing.strategies import TBDY2018ConstraintStrategy

strategy = TBDY2018ConstraintStrategy(config)

Urettigi ek kolonlar:

Kolon Aciklama
HARD_FILTERS Her sert kriterin gecti/kaldi durumu
ERROR_METRICS Her hedef kriter icin mutlak ve normalize hata
ERROR_TOTAL Aktif hata metriklerinin ortalama normalize hatasi
SCORE Geriye uyumluluk icin 100 / (1 + ERROR_TOTAL) uygunluk skoru

Secim mantigi:

  1. Aralik ve mekanizma kriterleri sert filtre olarak uygulanir (tek tarafli sinirlar dahil).
  2. Gecen kayitlar ERROR_TOTAL dusukten yuksege siralanir (esitlikte buyuk MAGNITUDE, sonra kucuk mesafe). Hicbir kriter icin hedef yoksa (ERROR_TOTAL hepsi inf) varsayilan duzen kullanilir: buyuk MAGNITUDE once, sonra kucuk mesafe (Rjb > Rrup > Repi).
  3. max_per_station, max_per_event ve num_records cesitlilik limitleri uygulanir.
  4. SELECTION_REASON her secim veya eleme nedenini yazar.

Mevcut stratejiler:

Strateji get_name() Amac
TBDYSelectionStrategy TBDY_2018_Gaussian Agirlikli Gaussian skor
TBDY2018ConstraintStrategy TBDY_2018_Constraint Sert filtre + hata metrikleri
ConstraintSelectionStrategy TBDY_2018_Constraint Geriye uyumlu alias