---
title: 'Model Emekliye Ayırma'
source: 'https://academia.sh/tr/kurslar/model-izleme/model-emekliye-ayirma'
course: 'Model İzleme ve Yönetişim'
language: tr
updated: '2026-08-17T18:08:53+00:00'
license: 'CC BY-SA 4.0'
---

# Model Emekliye Ayırma

Emekliye ayırma kararının hangi ölçüyle verildiğinin ve modeli kaldırmanın geriye dönük ne bıraktığının sayılması: gösterge ölçütü iki senaryonun ikisinde de 2026-10'da ateşler, birinde emeklilik haksızdır çünkü isabet 0,9700'den 0,9800'e gitmiştir; isabet ölçütü zararsız kaymada hiç ateşlemez ve zararlı kaymada 2026-09'daki bozulmayı 2026-11'de gösterir, iki dönem geç; aday karşılaştırma ölçütü veri kaymasında 0,0000, kavram kaymasında 0,0900 üstünlük ölçer ve iki senaryoyu ayıran tek ölçüttür. Kaldırma sonrası karar kaydı olmadan altı dönemin altısı açıklanamaz kalır; karar kaydı varken model sürüm kaydı silindiğinde 1200 tahmin okunur ama gerekçesi hesaplanan 0'dır. Ders kurs ve müfredat kapanışıdır.

Bir önceki dersin tablosunda **sonun** sütunu eksikti: bir modelin ne zaman biteceği hiçbir
yerde yazılı değildi. Bu ders iki soru sorar — hangi sayı kaldırmayı haklı çıkarır, kaldırma
**geriye dönük** ne bırakır.

- **MY53.** Kaynak, hat, model ve iki kayma **kurgudur**; hiçbir ürün, servis ya da kurum
  çağrılmaz. Tohum 20260218.
- **MY54.** Model `(0.6, 0.0, 4)`, karar eşiği 18, dengeli isabet 0,9864; izleme altı dönem,
  **taban sınıf oranı 0,5342**, adım 0,0050, etiket **iki dönem** gecikmeli.
- **MY55.** **Veri kaymasında** girdi kayar ve kural aynı kalır; **kavram kaymasında** girdi
  aynı kalır ve kural değişir (eşik 30'dan 27'ye).
- **MY56.** Üç ölçüt sınanır: **gösterge** (tahmin payı tabandan 0,05 sapar), **isabet eşiği**
  (dönem isabeti 0,95 altına iner), **aday karşılaştırma** (üstünlük sıfırdan büyük).
- **MY57.** Kaldırma, ağırlık ve eşik kaydının **çözülemez** olmasıdır; gerekçesi
  hesaplanamayan dönem **açıklanamaz** sayılır. Emeklilik `2026-11`, itiraz ve saklama üçer
  dönem.

## Emekliye Ayırma Kararının Ölçüsü

İlk blok modeli ve iki kaymayı kurar, üç ölçütü ateşler.

```python
# KURGUDUR. Kaynak , hattin tuketim asamasi , oznitelik yolu , esik modeli ,
# iki kayma ve emeklilik olcutleri ders icinde uretilir; hicbir urun , servis
# ya da kurum cagrilmaz. Tohum 20260218.
TOHUM, M32 = 20260218, 0xFFFFFFFF


def uretec(t):
    x = ((t ^ (t >> 16)) * 2246822507) & M32
    x = ((x ^ (x >> 13)) * 3266489909) & M32
    s = [(x ^ (x >> 16)) & M32]

    def sonraki():
        s[0] = (s[0] * 1664525 + 1013904223) & M32
        return s[0] / 4294967296
    return sonraki


BOLGE, TIP = ["dogu", "bati", "kuzey", "guney", "merkez"], ["mesken", "isyeri"]
DONEM = [f"2026-{a:02d}" for a in range(1, 13)]
ABONE = {}
for i in range(200):
    r = uretec(TOHUM + 37 * i)
    ABONE[f"A{i + 1:03d}"] = {"bolge": BOLGE[int(r() * 5)], "tip": TIP[int(r() * 2)],
                              "baslangic": 10000 + int(r() * 60000)}


def satirlar():
    ham = []
    for i, (ab, a) in enumerate(ABONE.items()):
        e = a["baslangic"]
        for d in DONEM:
            r = uretec(TOHUM + 101 * i + 7 * DONEM.index(d))
            e += 4 + int(r() * 46)
            ham.append({"abone": ab, "donem": d, "bolge": a["bolge"], "tip": a["tip"],
                        "endeks": e})
    t = {(k["abone"], k["donem"]): k for k in ham}
    return [dict(k, m3=k["endeks"] - t[(k["abone"], DONEM[DONEM.index(k["donem"]) - 1])]
                 ["endeks"]) for k in ham if DONEM.index(k["donem"])]


def oznitelikler(kayitlar):
    """Agirliktan bagimsizdir , bir kez hesaplanir."""
    ab, bo = {}, {}
    for k in sorted(kayitlar, key=lambda k: DONEM.index(k["donem"])):
        ab.setdefault(k["abone"], []).append((DONEM.index(k["donem"]), k["m3"]))
        bo.setdefault(k["bolge"], []).append((DONEM.index(k["donem"]), k["m3"]))

    def ort(dizi, i):
        s = [v for d, v in dizi if d < i]
        return round(sum(s) / len(s), 4) if s else 0.0

    return {(k["abone"], k["donem"]): {
        "abone_ort": ort(ab[k["abone"]], DONEM.index(k["donem"])),
        "bolge_ort": ort(bo[k["bolge"]], DONEM.index(k["donem"])),
        "isyeri": 1 if k["tip"] == "isyeri" else 0} for k in kayitlar}


IZGARA = [(a, b, c) for a in (0.6, 0.8, 1.0) for b in (0.0, 0.2, 0.4) for c in (0, 4, 8)]
KARAR_IZGARA = (18, 22, 26, 30, 34)
IZLEME, GECIKME = DONEM[6:], 2
KURAL_ESIK, KURAL_ISYERI, ISABET_ESIGI = 30, 6, 0.95


def puan(o, w):
    return w[0] * o["abone_ort"] + w[1] * o["bolge_ort"] + w[2] * o["isyeri"]


def tahmin(o, w, karar):
    return 1 if puan(o, w) > karar else 0


def etiket(o, esik=KURAL_ESIK):
    return 1 if o["abone_ort"] + KURAL_ISYERI * o["isyeri"] > esik else 0


def egit(kayitlar, oz, donemler, etiketler=None):
    """Olcut dengeli isabet; karar esigi AYRI bir ayardir ve aranir."""
    kume = [k for k in kayitlar if k["donem"] in donemler]
    en = (-1.0, None, None)
    for w in IZGARA:
        for karar in KARAR_IZGARA:
            dp = dn = yp = yn = 0
            for k in kume:
                c = (k["abone"], k["donem"])
                t = tahmin(oz[c], w, karar)
                g = etiketler[c] if etiketler else etiket(oz[c])
                dp, yp, yn, dn = (dp + (t and g), yp + (t and not g),
                                  yn + (not t and g), dn + (not t and not g))
            d = (dp / (dp + yn) if dp + yn else 0.0) + (dn / (dn + yp) if dn + yp else 0.0)
            if d / 2 > en[0]:
                en = (d / 2, w, karar)
    return {"agirlik": en[1], "karar_esigi": en[2], "dengeli": round(en[0], 4)}


def olc(kayitlar, m, oz, donem, etiketler=None):
    kume = [(k["abone"], k["donem"]) for k in kayitlar if k["donem"] == donem]
    t = [tahmin(oz[c], m["agirlik"], m["karar_esigi"]) for c in kume]
    g = [etiketler[c] if etiketler else etiket(oz[c]) for c in kume]
    return (round(sum(t) / len(t), 4),
            round(sum(1 for a, b in zip(t, g) if a == b) / len(t), 4))


TEMIZ = satirlar()
OZ = oznitelikler(TEMIZ)
M = egit(TEMIZ, OZ, DONEM[1:9])
# KURGU veri kaymasi: girdi kayiyor , kural ayni.
b = DONEM.index("2026-09")
KAYAN = [dict(k, m3=round(k["m3"] * (1 + 0.06 * (DONEM.index(k["donem"]) - b + 1)), 4))
         if DONEM.index(k["donem"]) >= b and k["tip"] == "isyeri" else dict(k) for k in TEMIZ]
OZ_K = oznitelikler(KAYAN)
# KURGU kavram kaymasi: girdi AYNI , kural degisiyor (esik 30'dan 27'ye iniyor).
KAVRAM = {(k["abone"], k["donem"]): etiket(
    OZ[(k["abone"], k["donem"])], 27 if DONEM.index(k["donem"]) >= b else KURAL_ESIK)
    for k in TEMIZ}

p1 = sum(etiket(OZ[(k["abone"], k["donem"])]) for k in TEMIZ if k["donem"] in IZLEME) / 1200
print(f"model {M['agirlik']} karar esigi {M['karar_esigi']} dengeli {M['dengeli']} ,"
      f" taban sinif orani {round(max(p1, 1 - p1), 4)} , adim {round(1 / 200, 4)}")
print("\ndonem     veri: pay  isabet | kavram: pay  isabet")
SENARYO = {"veri": (KAYAN, OZ_K, None), "kavram": (TEMIZ, OZ, KAVRAM)}
OLCUM = {ad: [(d,) + olc(k, M, o, d, e) for d in IZLEME] for ad, (k, o, e) in SENARYO.items()}
for i, d in enumerate(IZLEME):
    print(f"{d}   {OLCUM['veri'][i][1]:>9}  {OLCUM['veri'][i][2]:>6} |"
          f" {OLCUM['kavram'][i][1]:>11}  {OLCUM['kavram'][i][2]:>6}")

print(f"\n{'olcut':<37}{'senaryo':>7}  {'atesleyen':>9}  {'bozulma':>7}"
      f"  {'gecikme':>7}  {'hakli':>5}")
for ad, (kay, oz, et) in SENARYO.items():
    taban = OLCUM[ad][1][1]
    gost = [d for d, p, _ in OLCUM[ad] if abs(p - taban) / taban > 0.05]
    dus = [d for d, _, i in OLCUM[ad] if i < ISABET_ESIGI]
    gor = DONEM[DONEM.index(dus[0]) + GECIKME] if dus else "-"
    aday = egit(kay, oz, IZLEME, et)
    ust = round(olc(kay, aday, oz, "2026-12", et)[1] - OLCUM[ad][-1][2], 4)
    for olcut, ates, gec in (("gosterge (pay 0,05)", gost[0] if gost else "-", "-"),
                             (f"isabet esigi {ISABET_ESIGI}", gor, GECIKME if dus else "-"),
                             (f"aday karsilastirma (ustunluk {ust})",
                              gor if ust > 0 else "-", GECIKME if ust > 0 else "-")):
        h = "hayir" if (ates != "-" and not dus) else ("evet" if ates != "-" else "-")
        print(f"{olcut:<37}{ad:>7}  {str(ates):>9}  {str(dus[0]) if dus else '-':>7}"
              f"  {str(gec):>7}  {h:>5}")
```

```
model (0.6, 0.0, 4) karar esigi 18 dengeli 0.9864 , taban sinif orani 0.5342 , adim 0.005

donem     veri: pay  isabet | kavram: pay  isabet
2026-07       0.455    0.97 |       0.455    0.97
2026-08        0.47    0.97 |        0.47    0.97
2026-09       0.455    0.99 |       0.455   0.815
2026-10       0.515   0.975 |        0.51    0.87
2026-11        0.52    0.98 |        0.51   0.865
2026-12       0.545    0.98 |       0.515    0.85

olcut                                senaryo  atesleyen  bozulma  gecikme  hakli
gosterge (pay 0,05)                     veri    2026-10        -        -  hayir
isabet esigi 0.95                       veri          -        -        -      -
aday karsilastirma (ustunluk 0.0)       veri          -        -        -      -
gosterge (pay 0,05)                   kavram    2026-10  2026-09        -   evet
isabet esigi 0.95                     kavram    2026-11  2026-09        2   evet
aday karsilastirma (ustunluk 0.09)    kavram    2026-11  2026-09        2   evet
```

Gösterge ölçütü **iki senaryoda da `2026-10`'da** ateşler: birinde isabet 0,9700'den 0,9800'e
gitmiştir ve emeklilik **haksızdır**, öbüründe bozulma gerçektir. Ateşleyen dönem aynı,
doğru karar zıttır. **Ateşlemesi ile bozulması ayrı ayrı gösterilmeyen bir gösterge bir modelin
kaldırılmasına gerekçe olamaz.**

İsabet ölçütü ikisinde de doğrudur: bozulma `2026-09`'da olur, ölçüt `2026-11`'de tetiklenir —
aradaki **iki dönem** gecikmeli etiketin kendisidir. Aday karşılaştırma üstünlüğü **0,0000** ile
**0,0900** ölçer, çözünürlüğün on sekiz adımı. **Ayıran iki ölçüt de etiket okur** ve geç gelir;
gecikmesiz olan tek ölçüt ayırt edemeyendir.

## Kaldırmanın Geriye Dönük Bıraktığı

İkinci blok modeli kaldırır, kalanı sayar.

```python
# Bu blok ilk bloktaki DONEM , IZLEME , OZ , M , TEMIZ , puan ve tahmin
# tanimlarini surdurur.
EMEKLILIK, SAKLAMA, ITIRAZ = "2026-11", 3, 3
defter = [dict(OZ[(k["abone"], k["donem"])], donem=k["donem"], model_surum="s1",
               tahmin=tahmin(OZ[(k["abone"], k["donem"])], M["agirlik"], M["karar_esigi"]))
          for k in TEMIZ if k["donem"] in IZLEME]
TAM = {"s1": {"agirlik": M["agirlik"], "karar_esigi": M["karar_esigi"]}}
kalan = [d for d in IZLEME if DONEM.index(d) > len(DONEM) - 1 - SAKLAMA]


def gerekce(r, surum):
    """Gerekce ancak model surumu cozulebiliyorsa hesaplanir."""
    s = surum.get(r["model_surum"])
    return None if s is None else round(puan(r, s["agirlik"]) - s["karar_esigi"], 4)


print("kurulum                          okunan tahmin  gerekcesi hesaplanan"
      "  aciklanamaz donem")
for ad, kyt, sur in (("kayit yok , surum silindi", [], {}),
                     ("karar kaydi var , surum silindi", defter, {}),
                     ("karar kaydi + surum kaydi", defter, TAM),
                     (f"ayni , saklama {SAKLAMA} donem",
                      [r for r in defter if r["donem"] in kalan], TAM)):
    g = [r for r in kyt if gerekce(r, sur) is not None]
    print(f"{ad:<33}{len(kyt):>14}  {len(g):>20}"
          f"  {len(IZLEME) - len(set(r['donem'] for r in g)):>17}")

e = DONEM.index(EMEKLILIK)
sun = [d for d in IZLEME if DONEM.index(d) <= e]
acik = [d for d in sun if DONEM.index(d) + ITIRAZ >= e]
gec = [d for d in sun if DONEM.index(d) + GECIKME > e]
print(f"\nemeklilik {EMEKLILIK}: sunulan donem {len(sun)} , karar {len(sun) * 200} ;"
      f" itirazi hala acik {len(acik)} donem / {len(acik) * 200} karar ;"
      f" etiketi hic gelmeyen {len(gec)} donem / {len(gec) * 200} karar")
```

```
kurulum                          okunan tahmin  gerekcesi hesaplanan  aciklanamaz donem
kayit yok , surum silindi                     0                     0                  6
karar kaydi var , surum silindi            1200                     0                  6
karar kaydi + surum kaydi                  1200                  1200                  0
ayni , saklama 3 donem                      600                   600                  3

emeklilik 2026-11: sunulan donem 5 , karar 1000 ; itirazi hala acik 4 donem / 800 karar ; etiketi hic gelmeyen 2 donem / 400 karar
```

İkinci satır dersin ikinci bulgusudur: karar defteri eksiksiz durur, 1200 tahminin 1200'ü
okunur, ama gerekçesi hesaplanan **sıfırdır** ve altı dönem de **açıklanamaz** kalır. Eksik
olan iki sayıdır: ağırlık üçlüsü ile karar eşiği. **Tahmini okumak açıklamak değildir.** Sürüm
kaydı da saklandığında sayı 1200'e döner, üç dönemlik saklamada **üçe** çıkar. Veri
Mühendisliğine Giriş kursu bunu veri tarafında ölçmüştü: saklama politikası geriye dönük
denetlenemez dönem bırakır.

Son satır emekliliğin **zamanlamasına** ait bedeldir: `2026-11`'de kaldırılan modelin 1000
kararından 800'ü hâlâ itiraza açıktır ve **iki dönemin 400 kararının etiketi hiç
gelmeyecektir**, çünkü kaldırma ölçümü durdurur. **Emekliye ayırma son iki
dönemi kalıcı olarak ölçülmemiş bırakır.**

## Özet

- Gösterge ölçütü iki senaryoda da `2026-10`'da ateşler ve birinde emeklilik **haksızdır**;
  isabet ölçütü `2026-09` bozulmasını `2026-11`'de gösterir ve aday karşılaştırma üstünlüğü
  **0,0000** ile **0,0900** ölçer.
- Sürüm kaydı silindiğinde 1200 tahmin okunur, gerekçesi hesaplanan **0**'dır ve altı dönem
  açıklanamaz kalır.
- `2026-11`'de kaldırılan modelin 1000 kararından 800'ü itiraza açık, **400'ünün etiketi hiç
  gelmeyecektir**.

## Kurs Kapanışı

Ölçüt ders adının yanındadır; parantezdeki fark **izlemeli kurulum eksi tabandır**.

| Ders | İzlemesiz taban | İzlemeli kurulum | Bedel |
|---|---|---|---|
| `model-izlemesi/01` — dengeli isabet | eski kurulum: duyarlılık **0,0000**, dengeli **0,5000** | düzeltilmiş: duyarlılık 1,0000, dengeli **0,9835** (**+0,4835**) | pay 0,05'te üç dönem ateşler, üçünde de isabet 0,9700'den 0,9800'e **çıkar** |
| `model-izlemesi/02` — `2026-09` isabeti | kayma görülmez: **0,9700** | kavram kaymasında **0,8150** (**−0,1550**) | otuz bir adım; girdi özeti hiçbir bantta ateşlemez, 1200 satırın 132'sinin etiketi değişir |
| `model-izlemesi/03` — ölçülen dönem | etiket beklenmez: **0** | gecikme 2: bozulma `2026-09`, uyarı `2026-11` | boşlukta **400 tahmin** ölçülmeden üretilir, **63'ü** yanlış çıkar; her dönem 400 ölçülmemiş kalır |
| `model-izlemesi/04` — vekilin sapması | vekil yok: **0** | üç vekil: **0,0185 / 0,0957 / 0,0000** | üçü de kavram kaymasında sağlam senaryoyla aynı; ayıran tek ölçü isabet (**0,1598**) |
| `model-izlemesi/05` — ateşleyen dönem | bant yok: **0** | 0,05 bandında **13** (**+13**) | **6 yanlış alarm**; geçerli yakalama **4**, hepsi isabetten, yakalama gecikmesi 2 dönem |
| `model-izlemesi/06` — ölçülen isabet | etiket gelmez: ölçüm **yok** | `yalniz pozitif`, kapsam 0,4858: **1,0000** | sapma **+0,0894**; ölçülen isabet gerçek 0,9362'nin **üstüne** çıkar |
| `model-yonetisimi/01` — adayın ölçülen isabeti | yayın yok: ölçüm **yok** | gölge, 0 istek: **0,9650**; kanarya 0,10: **1,0000** | kanaryada çözünürlük **0,0500**'e çıkar; tam geçişte **7** istek yanlışlanır |
| `model-yonetisimi/02` — ölçülen fark | deney yok: **0** | altı dönem **−0,0050**, tek dönem **+0,0250** ile **−0,0150** | ayırt edilebilir en küçük fark **0,0275**; gerçek örneklem **60** satır |
| `model-yonetisimi/03` — `2026-12` isabeti | yeniden eğitim yok: **0,9800** | üç pencerenin üçü de **0,9800** (**+0,0000**) | **3.078.000** satır puanlanır; gösterge tetikleyicisi iki senaryoda da aynı dönemlerde ateşler |
| `model-yonetisimi/04` — tahmin başına okunan satır | kayıtsız: **423,70** | karar kaydıyla **1,00** (**−422,70**) | 12.000 saklanan alan; kayıtsız aramada **189 tahminin** modeli belirlenemez |
| `model-yonetisimi/05` — yeniden hesaplanan karar | taban kayıt: **1164/1200** | kayıt tutmayla **1200/1200** (**+36**) | 3600'den **8402** saklanan değer; saklamada **600** karar itiraz açıkken silinir |
| `model-yonetisimi/06` — tahmin başına maliyet | yeniden eğitim yok: **1,00** | sıklık 1: **811,00** (**+810,00**) | eğitim payı **0,9988**, kazanılan isabet **0,0000**, kazanç başına maliyet tanımsız |
| `model-yonetisimi/07` — açıklanamaz dönem | kayıtsız kaldırma: **6/6** | karar ile sürüm kaydı: **0/6** (**−6**) | emeklilikte **400** kararın etiketi hiç gelmez, **800**'ü itiraza açık kalır |

Tablo tek bir kuralın on üç kez yazılmasıdır. **Bir göstergenin ateşlemesi bozulmanın kanıtı
değildir; ateşlemesi ile bozulması ayrı ayrı gösterilmeyen gösterge ölçülmemiş sayılır.**
`model-izlemesi/05` bunu sayar: 0,05 bandındaki 13 ateşlemenin 6'sı yanlış alarmdır, geçerli
yakalama 4'tür ve `/01`'de uyarı üç dönem ateşlerken isabet yükselir.

**İkinci iddia aynı tablodan okunur: izleme de bozar.** `model-yonetisimi/01`'de kanarya payı
ölçüyü böler: 0,10'da kötü aday 1,0000 görünür, tam geçişte 7 istek yanlışlanır. `/03`'te üç
tetikleyici 3.078.000 satır puanlatır ve kazanç 0,0000'dır; `/06`'da seyreklik kararı toplamın
0,8323'ünü yine 0,0000 karşılığında taşır. `model-izlemesi/06`'da toplama yordamı ölçülen
isabeti gerçeğin **üstüne** çıkarır.

**Üçüncü iddia vekil ölçütlerin adıyla yazılır: zararsız kaymada ateşliyorlar, zararlı kaymada
susuyorlar.** `model-izlemesi/04`'te üç vekil de kavram kaymasında sağlam senaryoyla hane hane
aynı sayıyı verir; `/02`'de tahmin payı 0,10 bandında zararsız kaymada ateşleyip zararlı
kaymada susar. Bu dersin ilk tablosu bunun emeklilik hâlidir.

Altı kurs aynı ekseni altı yerde okudu: **bozulma** hattın aşamalarında sayıldı, **düzen**
depolamada, **koşum** orkestrasyonda, **bölüşüm** dağıtık işlemede, **yol** modelin yeniden
üretilmesinde ve **görülme** üretimdeki modelde. Müfredatın kuralı son kez yazılır: bir veri
hattının sayısı **taşıdığı satır değil, yanlış satırın kaç adım sonra yakalandığıdır; bozulmayı
yakalayan denetimi yazılmayan hat ölçülmemiş sayılır.**

Yetmiş dört derste veri taşındı, saklandı, dönüştürüldü, bölüştürüldü, modele verildi ve
izlendi. Bütün bunlar **sunucu tarafında** duran bir sistemdi. Bu sistemin ürettiği sayının
**kullanıcının cebindeki bir aygıtta** nasıl görüneceği, o aygıtın kendi kısıtlarıyla ne
yapabileceği ve **bağlantısız kaldığında** ne olacağı hiç sorulmadı. Sonraki müfredat sayıyı üreten yerden aldığı yere taşır.
