İçeriğe geç
academia.sh

Ders 13 / 13

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.

İçindekiler

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.

# 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.

# 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/022026-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/032026-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.

İlerlemeni kaydetmek ve not almak için Giriş yap

Notlarım

Not almak için giriş yapmalısın.

Aramak için yazmaya başlayın.

↑↓ Esc gezin · aç · kapat