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: Agirlik0.0oldugu 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:
- Aralik ve mekanizma kriterleri sert filtre olarak uygulanir (tek tarafli sinirlar dahil).
- Gecen kayitlar
ERROR_TOTALdusukten yuksege siralanir (esitlikte buyukMAGNITUDE, sonra kucuk mesafe). Hicbir kriter icin hedef yoksa (ERROR_TOTALhepsiinf) varsayilan duzen kullanilir: buyukMAGNITUDEonce, sonra kucuk mesafe (Rjb > Rrup > Repi). max_per_station,max_per_eventvenum_recordscesitlilik limitleri uygulanir.SELECTION_REASONher 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 |