İçeriğe geç
academia.sh

Ders 17 / 21

İnsan Değerlendirmesi

Bir önceki dersin dayandığı insan etiketinin kendisinin ölçülmesi: aynı bayrak listesine bakan üç kurgu değerlendirici iki değerli ölçekte 0,8417, üç değerli ölçekte 0,7583, örnekli yönergede 0,9306 uyum veriyor. Örnekli yönerge uyumu yirmi bir adım yükseltiyor ama çoğunluk etiketinin gerçek sınıfla örtüşmesi 0,8417'de kalıyor ve oybirliğinin doğruluğu 0,9126'dan 0,8744'e iniyor. Uyumsuzluk zararlı sınıflarda ve tam bir bayrak taşıyan kayıtlarda toplanıyor: bozulmuş girdide 0,7368, bayraksız kayıtlarda 0,0000. Aynı kural süzgeci çoğunluk etiketine karşı ölçüldüğünde duyarlılığı 1,0000 çıkıyor, çünkü etiket sütunu süzgecin kör noktasını paylaşıyor.

İçindekiler

Bir önceki ders iki otomatik değerlendiriciyi insan etiketine karşı ölçtü: ölçüt temelli yaklaşım 0,8250, model hakem 0,8833 uyum verdi ve hakemin kendi iki koşumu arasında on altı kayıtta karar değişti. Karşılaştırmanın her iki tarafı da tek bir sütuna dayanıyordu, kaydın gerçek sınıfına, yani insan etiketine.

Bu ders o sütunu ölçer. İnsan etiketi bir kaydı okuyup karar vermekle üretilir ve o karar da oynaktır: aynı kayda bakan iki değerlendirici ayrı etiket verebilir. Ölçülen sayı değerlendiriciler arası uyumdur ve üç soru sorulur: uyum sorunun ölçeğine ve verilen yönergeye ne kadar bağlıdır, uyumsuzluk hangi sınıfta toplanır, ve uyumu yükseltmek etiketi doğrulaştırır mı.

  • DG18. Kayıt kümesi, sınıflar ve savunma önceki iki derste kurulduğu gibi kurulur ve kurgudur. Saldırı bir metin değil, bir öznitelik profilidir; kayıtların metni zararsız destek talepleridir ve sınıfla ilgisizdir.
  • DG19. Üç değerlendirici de kurgudur; hiçbir gerçek kişi, kurum ya da ülke adı geçmez. d1, d2 ve d3 olarak anılırlar.
  • DG20. Üçü de aynı kanıtı görür: kaydın bayrak listesi. Fark hangi bayrağa ne ağırlık verdikleri, eşikleri ve oynaklıklarıdır; oynaklık tohuma ve kayıt numarasına bağlıdır.
  • DG21. Üç kurulum karşılaştırılır: iki değerli ölçek, üç değerli ölçek (araya kararsiz girer) ve örnekli yönerge. Yönergenin metni yazılmaz, etkisi kurulur: örnekler ağırlıkları ortak bir çapaya çeker ve oynaklığı yarıya indirir.
  • DG22. Uyum, üç çiftin aynı etiketi verdiği kayıt payının ortalamasıdır; oybirliği üçünün de aynı etiketi verdiği paydır. Kaydın çoğunluk etiketi üç oydan en az ikisi zararlı ise zararlıdır ve kararsiz oyu hiçbir yöne sayılmaz.
  • DG23. Uyum iki yüz kırk kayıt üzerinden okunur, adımı 1/240 = 0,0042. İkinci koşum tohum 20260219 ile alınır ve bu adımdan küçük fark ölçülemez.

Üç Değerlendirici, Üç Kurulum

İlk blok kayıt kümesini ve ölçüyü bir önceki dersteki gibi kurar, sonra üç değerlendiriciyi tanımlar ve üç kurulumu koşturur. Değerlendiricilerin gördüğü tek kanıt bayrak listesidir.

# KURGUDUR. Kayitlar, siniflar ve savunmalar ders icinde uretilir; hicbir gercek
# kurum, urun ya da sistem yoktur. Saldiri bir METIN degil, bir OZELLIK PROFILIDIR.
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


def ayrik(u, w):
    t = 0.0
    for i, x in enumerate(w):
        t += x
        if u < t:
            return i
    return len(w) - 1


def izno(m):
    h = 2166136261
    for c in str(m):
        h = ((h ^ ord(c)) * 16777619) & M32
    return h


SINIF = ["temiz", "dolayli_yonerge", "gizli_alan_istegi", "yetki_asimi",
         "kaynak_taklidi", "bozulmus_girdi"]
KAYNAK = ["kullanici", "erisilen_belge", "arac_ciktisi"]
OZELLIK = ["yonerge_kipi", "rol_degistirme_istegi", "gizli_alan_adi", "yan_etkili_arac_adi",
           "kaynak_damgasi_uyusmuyor", "olagandisi_damga_dagilimi", "asiri_uzunluk"]
PROFIL = {
    "temiz":              [0.06, 0.02, 0.05, 0.03, 0.02, 0.04, 0.05],
    "dolayli_yonerge":    [0.88, 0.42, 0.10, 0.30, 0.35, 0.08, 0.12],
    "gizli_alan_istegi":  [0.35, 0.15, 0.86, 0.12, 0.10, 0.06, 0.08],
    "yetki_asimi":        [0.30, 0.25, 0.12, 0.84, 0.14, 0.05, 0.07],
    "kaynak_taklidi":     [0.22, 0.55, 0.08, 0.10, 0.82, 0.07, 0.06],
    "bozulmus_girdi":     [0.05, 0.03, 0.04, 0.03, 0.06, 0.80, 0.62],
}
KAYNAK_PAYI = {
    "temiz":             [0.72, 0.20, 0.08],
    "dolayli_yonerge":   [0.05, 0.70, 0.25],
    "gizli_alan_istegi": [0.55, 0.30, 0.15],
    "yetki_asimi":       [0.40, 0.35, 0.25],
    "kaynak_taklidi":    [0.10, 0.60, 0.30],
    "bozulmus_girdi":    [0.65, 0.20, 0.15],
}
# Kurgu, tumuyle zararsiz destek metinleri. Sinifla iliskisi YOKTUR.
METIN = ["bu ayki fatura tutari gecen aya gore yuksek geldi",
         "sayac endeksi yanlis girilmis olabilir",
         "mahallede kesinti ne zaman bitecek",
         "tarife basamagimi ogrenmek istiyorum",
         "ariza kaydim icin ekip ne zaman gelir",
         "adres degisikligi nasil yapilir"]

KAYIT = []
for i in range(240):
    r = uretec(TOHUM + 6151 * i)
    s = SINIF[ayrik(r(), [0.62, 0.10, 0.07, 0.07, 0.07, 0.07])]
    kaynak = KAYNAK[ayrik(r(), KAYNAK_PAYI[s])]
    oz = {o: (r() < p) for o, p in zip(OZELLIK, PROFIL[s])}
    KAYIT.append({"no": i + 1, "sinif": s, "kaynak": kaynak, "ozellik": oz,
                  "metin": METIN[int(r() * len(METIN))],
                  "uzunluk": 40 + int(r() * 260)})


def zararli(k):
    return k["sinif"] != "temiz"


def kural_suzgeci(k, kurallar=("yonerge_kipi", "gizli_alan_adi", "yan_etkili_arac_adi",
                               "kaynak_damgasi_uyusmuyor")):
    return any(k["ozellik"][o] for o in kurallar)


def olc(kayitlar, karar, gercek=zararli):
    dp = yp = dn = yn = 0
    for k in kayitlar:
        isaret, g = karar(k), gercek(k)
        if isaret and g:
            dp += 1
        elif isaret and not g:
            yp += 1
        elif not isaret and g:
            yn += 1
        else:
            dn += 1
    kesinlik = dp / (dp + yp) if dp + yp else 0.0
    duyarlilik = dp / (dp + yn) if dp + yn else 0.0
    return {"dp": dp, "yp": yp, "yn": yn, "dn": dn,
            "kesinlik": round(kesinlik, 4), "duyarlilik": round(duyarlilik, 4),
            "yanlis_engelleme_payi": round(yp / (yp + dn), 4) if yp + dn else 0.0}


# ---- KURGU degerlendiriciler: hicbir gercek kisi, kurum ya da ulke yoktur.
# Ucu de ayni bayrak listesini gorur; agirliklari, esikleri ve oynakliklari farklidir.
DEGERLENDIRICI = {
    "d1": {"esik": 0.46, "oynaklik": 0.14,
           "agirlik": [0.46, 0.20, 0.44, 0.36, 0.34, 0.30, 0.08]},
    "d2": {"esik": 0.58, "oynaklik": 0.22,
           "agirlik": [0.40, 0.10, 0.50, 0.44, 0.22, 0.14, 0.04]},
    "d3": {"esik": 0.34, "oynaklik": 0.30,
           "agirlik": [0.30, 0.34, 0.28, 0.24, 0.40, 0.38, 0.22]},
}
ORTAK_AGIRLIK = [0.42, 0.22, 0.44, 0.38, 0.34, 0.28, 0.10]   # ornekli yonergenin capasi
ORTAK_ESIK = 0.46


def kani(k, d, ornekli=False, tohum=TOHUM):
    """Degerlendiricinin kaydin bayrak listesinden okudugu zararlilik kanisi."""
    a = DEGERLENDIRICI[d]
    ag, esik, oyn = a["agirlik"], a["esik"], a["oynaklik"]
    if ornekli:                          # ornekler agirliklari ortak capaya ceker
        ag = [0.35 * x + 0.65 * y for x, y in zip(ag, ORTAK_AGIRLIK)]
        esik, oyn = 0.35 * esik + 0.65 * ORTAK_ESIK, oyn / 2
    p = sum(w for o, w in zip(OZELLIK, ag) if k["ozellik"][o])
    r = uretec(tohum ^ izno(d + "-" + str(k["no"])))
    return p + (r() - 0.5) * oyn, esik


def etiketle(k, d, olcek="iki", ornekli=False, tohum=TOHUM, band=0.10):
    p, esik = kani(k, d, ornekli, tohum)
    if olcek == "uc":                    # ucuncu deger: kararsiz
        if p >= esik + band:
            return "zararli"
        return "temiz" if p < esik - band else "kararsiz"
    return "zararli" if p >= esik else "temiz"


def kurulum(kayitlar, olcek="iki", ornekli=False, tohum=TOHUM):
    return {d: [etiketle(k, d, olcek, ornekli, tohum) for k in kayitlar]
            for d in DEGERLENDIRICI}


def ikili_uyum(t):
    """Degerlendiriciler arasi uyum: uc ciftin ortustugu kayit payinin ortalamasi."""
    ad, n = sorted(t), len(next(iter(t.values())))
    cift = [(ad[0], ad[1]), (ad[0], ad[2]), (ad[1], ad[2])]
    return sum(sum(1 for i in range(n) if t[a][i] == t[b][i]) / n for a, b in cift) / 3


def ayrisan(t):
    """Uc degerlendiricinin ayni etiketi vermedigi kayitlarin sirasi."""
    ad, n = sorted(t), len(next(iter(t.values())))
    return [i for i in range(n) if len({t[a][i] for a in ad}) > 1]


def cogunluk(t, i):
    """Kaydin insan etiketi: uc oydan en az ikisi zararli ise zararli."""
    return sum(1 for a in t if t[a][i] == "zararli") >= 2


KURULUM = [("iki degerli olcek", "iki", False),
           ("uc degerli olcek", "uc", False),
           ("ornekli yonerge", "iki", True)]
N = len(KAYIT)

print(f"{'kurulum':<19} {'uyum':>7} {'kararsiz':>9} {'zararli etiket':>15}"
      f" {'gercek sinifla':>15}")
for ad, olcek, ornekli in KURULUM:
    t = kurulum(KAYIT, olcek, ornekli)
    kz = sum(1 for a in t for e in t[a] if e == "kararsiz") / (3 * N)
    z = sum(1 for i in range(N) if cogunluk(t, i))
    dg = sum(1 for i, k in enumerate(KAYIT) if cogunluk(t, i) == zararli(k)) / N
    print(f"{ad:<19} {ikili_uyum(t):>7.4f} {kz:>9.4f} {z:>15} {dg:>15.4f}")
print(f"gercekte zararli olan kayit sayisi {sum(1 for k in KAYIT if zararli(k))}"
      f" , uyum adimi 1/{N} = {1 / N:.4f}")

print("\niki kosum , degerlendiricilerin oynakligi (tohum 20260218 / 20260219)")
print(f"{'kurulum':<19} {'kosum 1':>8} {'kosum 2':>9} {'fark':>8} {'adim':>6}")
for ad, olcek, ornekli in KURULUM:
    a = ikili_uyum(kurulum(KAYIT, olcek, ornekli, TOHUM))
    b = ikili_uyum(kurulum(KAYIT, olcek, ornekli, TOHUM + 1))
    print(f"{ad:<19} {a:>8.4f} {b:>9.4f} {b - a:>+8.4f} {abs(b - a) * N:>6.0f}")
kurulum                uyum  kararsiz  zararli etiket  gercek sinifla
iki degerli olcek    0.8417    0.0000              63          0.8417
uc degerli olcek     0.7583    0.1486              49          0.8000
ornekli yonerge      0.9306    0.0000              63          0.8417
gercekte zararli olan kayit sayisi 93 , uyum adimi 1/240 = 0.0042

iki kosum , degerlendiricilerin oynakligi (tohum 20260218 / 20260219)
kurulum              kosum 1   kosum 2     fark   adim
iki degerli olcek     0.8417    0.8333  -0.0083      2
uc degerli olcek      0.7583    0.7708  +0.0125      3
ornekli yonerge       0.9306    0.9361  +0.0056      1

Uyum Yükseldi, Etiket Düzelmedi

İki değerli ölçekte uyum 0,8417. Üç değerli ölçekte 0,7583, yirmi adım aşağı; örnekli yönergede 0,9306, yirmi bir adım yukarı. İki koşum tablosu bu hareketlerin gerçek olduğunu söyler: değerlendiricilerin kendi oynaklığı uyumu en çok üç adım, 0,0125 kaydırıyor.

Üçüncü değerin uyumu düşürmesi ilk bakışta terstir. Ama üç değerli ölçekte iki sınır vardır ve her biri ayrı aşılabilir: oyların 0,1486’sı kararsiz çıkıyor ve biri kararsız öbürü zararlı dediğinde uyum kaybedilir. Bedeli etiket sütununda da görünür: çoğunluk etiketi altmış üç yerine kırk dokuz kayda zararlı diyor, gerçekte zararlı olan doksan üçün karşısında.

Son sütun dersin asıl bulgusunu taşır. Örnekli yönerge uyumu yirmi bir adım yükseltti, ama çoğunluk etiketinin gerçek sınıfla örtüşmesi 0,8417’de, iki değerli ölçekle aynı kaldı; zararlı dediği kayıt sayısı da aynı, altmış üç. Yönerge değerlendiricileri birbirine yaklaştırdı, gerçeğe yaklaştırmadı. Uyum bir tutarlılık ölçüsüdür ve üç kişinin aynı yanlışı söylemesi de yüksek uyum verir.

Uyumsuzluk Hangi Sınıfta Toplanıyor

İkinci blok uyumsuzluğu üç kesitte döker: sınıf başına, taşınan bayrak sayısına göre, ve oybirliği olan kayıtlarla ayrışanları ayırarak. Son tablo aynı kural süzgecini iki ayrı etiket sütununa karşı ölçer.

TABLO = {ad: kurulum(KAYIT, olcek, ornekli) for ad, olcek, ornekli in KURULUM}

print(f"{'sinif':<20} {'kayit':>6} {'iki degerli':>12} {'uc degerli':>11} {'ornekli':>8}"
      f" {'adim':>7}")
for s in SINIF:
    idx = [i for i, k in enumerate(KAYIT) if k["sinif"] == s]
    p = [len(set(ayrisan(TABLO[ad])) & set(idx)) / len(idx) for ad, _, _ in KURULUM]
    print(f"{s:<20} {len(idx):>6} {p[0]:>12.4f} {p[1]:>11.4f} {p[2]:>8.4f}"
          f" {1 / len(idx):>7.4f}")

print("\nuyumsuzluk bayrak sayisina gore , iki degerli olcek")
ay = set(ayrisan(TABLO["iki degerli olcek"]))
for etiket, n in (("bayrak yok", 0), ("tam bir bayrak", 1)):
    idx = {i for i, k in enumerate(KAYIT)
           if sum(1 for o in OZELLIK if k["ozellik"][o]) == n}
    print(f"  {etiket:<15} {len(idx):>4} kayit , uyumsuz pay {len(ay & idx) / len(idx):.4f}")

print("\netiketin sagligi: cogunluk etiketi gercek sinifla ne kadar ortusuyor")
for ad, _, _ in KURULUM:
    t, a = TABLO[ad], set(ayrisan(TABLO[ad]))
    ob = [i for i in range(N) if i not in a]
    d1 = sum(1 for i in ob if cogunluk(t, i) == zararli(KAYIT[i])) / len(ob)
    d2 = sum(1 for i in a if cogunluk(t, i) == zararli(KAYIT[i])) / len(a)
    print(f"  {ad:<19} oybirligi {len(ob):>3} kayit / {d1:.4f} ,"
          f" ayrisan {len(a):>3} kayit / {d2:.4f}")

print("\nayni savunma , iki ayri etiket sutunu")
print(f"{'etiket sutunu':<22} {'dp':>4} {'yp':>4} {'yn':>4} {'kesinlik':>10}"
      f" {'duyarlilik':>11} {'yanlis engelleme':>17}")
t = TABLO["iki degerli olcek"]
for ad, ger in (("gercek sinif", zararli),
                ("cogunluk etiketi", lambda k: cogunluk(t, k["no"] - 1))):
    o = olc(KAYIT, kural_suzgeci, ger)
    print(f"{ad:<22} {o['dp']:>4} {o['yp']:>4} {o['yn']:>4} {o['kesinlik']:>10.4f}"
          f" {o['duyarlilik']:>11.4f} {o['yanlis_engelleme_payi']:>17.4f}")
print(f"cogunluk etiketinin bozulmus_girdi sinifinda zararli dedigi pay "
      f"{sum(1 for i, k in enumerate(KAYIT) if k['sinif'] == 'bozulmus_girdi' and cogunluk(t, i)) / 19:.4f}")
sinif                 kayit  iki degerli  uc degerli  ornekli    adim
temiz                   147       0.1020      0.1633   0.0476  0.0068
dolayli_yonerge          24       0.2500      0.4167   0.0000  0.0417
gizli_alan_istegi        17       0.4118      0.5294   0.2353  0.0588
yetki_asimi              10       0.2000      0.5000   0.1000  0.1000
kaynak_taklidi           23       0.5652      0.6522   0.3043  0.0435
bozulmus_girdi           19       0.7368      0.8947   0.3158  0.0526

uyumsuzluk bayrak sayisina gore , iki degerli olcek
  bayrak yok       118 kayit , uyumsuz pay 0.0000
  tam bir bayrak    53 kayit , uyumsuz pay 0.5094

etiketin sagligi: cogunluk etiketi gercek sinifla ne kadar ortusuyor
  iki degerli olcek   oybirligi 183 kayit / 0.9126 , ayrisan  57 kayit / 0.6140
  uc degerli olcek    oybirligi 160 kayit / 0.9500 , ayrisan  80 kayit / 0.5000
  ornekli yonerge     oybirligi 215 kayit / 0.8744 , ayrisan  25 kayit / 0.5600

ayni savunma , iki ayri etiket sutunu
etiket sutunu            dp   yp   yn   kesinlik  duyarlilik  yanlis engelleme
gercek sinif             74   23   19     0.7629      0.7957            0.1565
cogunluk etiketi         63   34    0     0.6495      1.0000            0.1921
cogunluk etiketinin bozulmus_girdi sinifinda zararli dedigi pay 0.2105

Uyumsuzluk düzgün dağılmıyor. Temiz kayıtlarda 0,1020, bozulmuş girdi sınıfında 0,7368, sınıf adımının yirmi katı üstünde bir fark. Bir önceki dersin en çarpıcı satırı da bu sınıftaydı, ölçüt temelli yaklaşımın 0,2632’sine karşı hakemin 1,0000’i; o karşılaştırma kümenin en az uyum sağlanan sütununa dayanıyordu.

Bayrak sayısı kesiti nedeni söyler. Bayrak taşımayan yüz on sekiz kayıtta uyumsuzluk 0,0000: kanıt yokken üçü de temiz diyor. Tam bir bayrak taşıyan elli üç kayıtta 0,5094, neredeyse yazı tura. Bu elli üç kayıt bu konunun ilk dersindeki sınırda örnek kümesidir ve orada kural süzgecinin kesinliği 0,4444, yanlış engelleme payı 0,7143 çıkmıştı; o iki sayı, üç değerlendiricinin ancak yarısında anlaştığı bir sütuna karşı hesaplanmıştı.

Üçüncü kesit uyumu yükseltmenin ikinci bedelini verir. Örnekli yönergede oybirliği yüz seksen üç kayıttan iki yüz on beşe çıkıyor, ama oybirliğinin gerçek sınıfla örtüşmesi 0,9126’dan 0,8744’e iniyor: yönerge eskiden ayrışan kayıtları oybirliğine taşıdı, bir kısmını yanlış tarafa. Oybirliği bir sağlamlık damgası olarak okunur ve yönerge o damganın güvenilirliğini düşürdü. Ayrışan kayıtlarda çoğunluk etiketi zaten 0,6140, üç değerli ölçekte tam 0,5000.

Aynı Savunma, İki Ayrı Etiket Sütunu

Son tablo dersi kursun kuralına bağlar. Kural süzgeci hiç değişmedi, yalnız hangi sütuna karşı ölçüldüğü değişti. Gerçek sınıfa karşı duyarlılık 0,7957. Çoğunluk etiketine karşı aynı süzgeç 1,0000 veriyor, çünkü kaçan zararlı sıfırdır: çoğunluğun zararlı dediği altmış üç kaydın hepsini süzgeç zaten yakalıyor.

Bu, süzgecin iyi olduğu anlamına gelmez. Son satır nedenini verir: çoğunluk etiketi bozulmuş girdi sınıfının yalnız 0,2105’ine zararlı diyor. Değerlendiriciler o sınıfın bayraklarına düşük ağırlık veriyor, kural süzgeci ise o iki bayrağı hiç okumuyor. Kör noktaları aynı olduğu için etiket sütunu süzgecin kaçırdığını ölçemez. Duyarlılık farkı 0,2043 ölçüm hatası değildir, sütunun kendisinden gelir. Kesinlik ters yöne gidiyor, 0,7629’dan 0,6495’e, çünkü çoğunluğun temiz dediği kayıtlarda yanlış alarm yirmi üçten otuz dörde çıkıyor.

Özet

  • Aynı bayrak listesine bakan üç kurgu değerlendirici üç kurulumda üç ayrı uyum verdi: iki değerli ölçekte 0,8417, üç değerli ölçekte 0,7583, örnekli yönergede 0,9306. Uyumun adımı 0,0042, iki koşum bandı en çok üç adım, yani iki hareket de gerçektir.
  • Üçüncü değer uyumu düşürdü ve etiket sütununu daralttı: oyların 0,1486’sı kararsız çıktı, çoğunluk etiketi altmış üç yerine kırk dokuz kayda zararlı dedi.
  • Örnekli yönerge uyumu yirmi bir adım yükseltti ama çoğunluk etiketinin gerçek sınıfla örtüşmesi 0,8417’de kaldı ve oybirliğinin doğruluğu 0,9126’dan 0,8744’e indi. Uyum tutarlılığı ölçer, doğruluğu değil.
  • Uyumsuzluk zararlı sınıflarda ve ince kanıtta toplanıyor: bozulmuş girdide 0,7368, tam bir bayrak taşıyan elli üç kayıtta 0,5094, bayraksız yüz on sekiz kayıtta 0,0000.
  • Aynı kural süzgeci çoğunluk etiketine karşı ölçüldüğünde duyarlılığı 0,7957 yerine 1,0000 çıkıyor, çünkü etiket sütunu süzgecin kör noktasını paylaşıyor: bozulmuş girdinin yalnız 0,2105’ine zararlı diyor.

Sonraki Adım

Üç ders boyunca ölçülen sistem hiç değişmedi; küme, savunma, hakem ve değerlendiriciler sabitti, oynayan tek şey ölçme biçimiydi. Üretimde bunun tersi olur: küme yerinde kalır ve sistem değişir. Yönerge yeniden yazılır, bir eşik oynatılır, bir kural eklenir, arkadaki modelin davranışı haber verilmeden kayar. Sonraki ders sabit bir kümeyle değişen bir sistemi karşı karşıya getirir ve tek soru sorar: bu değişikliklerin hangisi sayıyı gerçekten oynattı, hangisinin oynattığı fark koşum bandının altında kaldığı için ölçülemez.

İ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