İçeriğe geç
academia.sh

Ders 14 / 14

Çeşitlilik ve Yankı Odası

Sistem kendi önerileriyle beslendiğinde kapsamanın daralması ve popülerlik yanlılığının büyümesi: kırk sekiz dönem boyunca dar düzen sekizinci dönemden sonra her dönem 24 kalemin 8'ini hiç göstermiyor, altı kalem son yirmi dört dönemin hiçbirinde görünmüyor ve ilk beş kalemin gösterim payı 0,4711'den 0,5461'e çıkıyor. Beşinci yuvayı çeşitliliğe ayıran düzen ilk on bir dönemde abone başına 1,0000 etkileşim kaybediyor, on ikinci dönemde koşulları değişen kalemi bulup öne geçiyor, kümülatif olarak yirmi yedinci dönemde eşitleniyor ve kırk sekizinci dönemde 1,2250 önde bitiriyor.

İçindekiler

Önceki derste her düzen kayda bir kez baktı. Gerçek bir sistemde karar tekrarlanır: gösterilen kalem etkileşim üretir, etkileşim kaydı büyütür, büyüyen kayıt bir sonraki gösterimi belirler. Bu ders o döngüyü kırk sekiz dönem çalıştırır ve kapsamanın nereye gittiğini sayar.

  • ON57. Kurgu birinci derste kurulan bloğun aynısıdır; döngünün başlangıç kaydı o kurgunun 3.002 gösterimi ile 577 etkileşimidir.
  • ON58. Sistem her dönem her aboneye beş kalem gösterir ve puanı, abonenin öbeğinde o kalemin gösterim başına etkileşim oranı olarak kestirir: (etkileşim + 0,5) / (gösterim + 5). Öbek, abonenin geçmişindeki baskın alandır ve sistemin gördüğü tek abone özelliğidir.
  • ON59. İki düzen karşılaştırılır. Dar düzen beş yuvayı da kestirime verir ve taban çizgisidir, çünkü hiçbir çeşitlilik kuralı içermez. Geniş düzen dördünü kestirime verir, beşinciyi o ana dek en az gösterilmiş kaleme ayırır.
  • ON60. On ikinci dönemde bir kalemin karşılığı sekiz katına çıkar ve 0,95 tavanına dayanır; bu ortamın değiştiği andır ve hiçbir düzene haber verilmez.
  • ON61. Üç sayı her dönem yazılır: abone başına etkileşim (büyük iyi), o dönem hiç gösterilmeyen kalem sayısı (küçük iyi), ve gösterimlerin en çok gösterilen beş kalemdeki payı (küçük iyi) — sonuncusu popülerlik yanlılığının ölçüsüdür. Seçim yanlılığı Uygulamalı İstatistik kursundadır.

Kendi Kaydıyla Beslenen Düzen

# ORTAK -- KURGUDUR. Abone x hizmet kalemi etkilesim dizeyi ders icinde kurulur.
# Gosterim, secim ve puan ayri ayri uretilir: bir kalem once GOSTERILIR, sonra
# secilebilir, ancak secilirse puanlanabilir.
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


KALEM = [  # (ad, alan, kanal, ucretli, taahhut, randevu, taban_pay)
    ("otomatik_odeme_talimati", "odeme", "cevrimici", 0, 0, 0, 0.90),
    ("e_fatura_gecisi", "bildirim", "cevrimici", 0, 0, 0, 0.85),
    ("odeme_hatirlatma_sms", "bildirim", "cevrimici", 0, 0, 0, 0.78),
    ("taksitlendirme", "odeme", "sube", 0, 1, 0, 0.62),
    ("uzaktan_okuma_basvurusu", "olcum", "saha", 0, 1, 1, 0.55),
    ("kesinti_uyari_aboneligi", "bildirim", "cevrimici", 0, 0, 0, 0.50),
    ("borc_yapilandirma", "odeme", "sube", 0, 1, 0, 0.44),
    ("adres_guncelleme", "sozlesme", "cevrimici", 0, 0, 0, 0.40),
    ("sayac_degisimi", "olcum", "saha", 1, 0, 1, 0.36),
    ("tuketim_raporu_aboneligi", "bildirim", "cevrimici", 0, 0, 0, 0.32),
    ("fatura_itiraz_kaydi", "odeme", "sube", 0, 0, 0, 0.28),
    ("abonelik_devri", "sozlesme", "sube", 0, 0, 0, 0.25),
    ("kacak_kontrol_randevusu", "olcum", "saha", 0, 0, 1, 0.22),
    ("tesisat_bakim_paketi", "tesisat", "saha", 1, 1, 1, 0.19),
    ("ikinci_sayac_talebi", "olcum", "saha", 1, 0, 1, 0.16),
    ("isyeri_tarifesine_gecis", "sozlesme", "sube", 0, 1, 0, 0.14),
    ("basinc_duzenleyici_montaji", "tesisat", "saha", 1, 0, 1, 0.12),
    ("bahce_sulama_tarifesi", "sozlesme", "sube", 0, 1, 0, 0.10),
    ("sayac_yeri_degisikligi", "olcum", "saha", 1, 0, 1, 0.09),
    ("ortak_alan_paylasim_kaydi", "sozlesme", "sube", 0, 1, 0, 0.08),
    ("tesisat_uygunluk_raporu", "tesisat", "saha", 1, 0, 1, 0.07),
    ("gecikme_faizi_muafiyeti", "odeme", "sube", 0, 0, 0, 0.06),
    ("mobil_erisim_izni", "bildirim", "cevrimici", 0, 0, 0, 0.05),
    ("ek_hat_tesisati", "tesisat", "saha", 1, 1, 1, 0.04),
]
KESIM = {  # kesimin alanlara egilimi; yalniz uretecin icinde kullanilir
    "tasarruf": {"odeme": 0.5, "olcum": 1.7, "sozlesme": 0.6, "bildirim": 1.5, "tesisat": 0.6},
    "odeme":    {"odeme": 1.9, "olcum": 0.5, "sozlesme": 0.6, "bildirim": 1.1, "tesisat": 0.3},
    "isyeri":   {"odeme": 0.7, "olcum": 0.9, "sozlesme": 1.6, "bildirim": 0.7, "tesisat": 1.9},
    "yeni":     {"odeme": 0.8, "olcum": 0.7, "sozlesme": 1.8, "bildirim": 1.3, "tesisat": 0.7},
}
KESIM_AD = list(KESIM)
rk = uretec(TOHUM + 101)
KALITE = [0.25 + 0.70 * rk() for _ in KALEM]   # kalemin kendi doyuruculugu

N_ABONE, N_KALEM = 360, len(KALEM)
ABONE, GOSTERIM, ETKILESIM, PUAN, EGILIM = [], {}, {}, {}, {}
for i in range(N_ABONE):
    r = uretec(TOHUM + 7919 * i)
    a, kesim = 20001 + i, KESIM_AD[int(r() * 4)]
    etkinlik = 0.35 + 1.15 * r() ** 1.6
    ABONE.append(a)
    for j, (ad, alan, kanal, uc, ta, ra, pay) in enumerate(KALEM):
        egilim = min(0.95, KESIM[kesim][alan] * pay * etkinlik * 0.55)
        EGILIM[(a, j)] = egilim
        if r() < min(0.95, pay ** 0.55 * 0.72):        # sunulmus mu
            GOSTERIM[(a, j)] = 1
            if r() < egilim:                            # secilmis mi
                ETKILESIM[(a, j)] = r()                 # deger: sira damgasi
                if r() < 0.32:                          # puan birakmis mi
                    ham = (0.16 + 0.50 * KESIM[kesim][alan] / 1.9
                           + 0.42 * KALITE[j] + 0.26 * (r() - 0.5))
                    PUAN[(a, j)] = max(1, min(5, int(round(ham * 5))))
        else:
            r(), r(), r()
AL = [KALEM[j][1] for j in range(N_KALEM)]
SAY = {a: {} for a in ABONE}
for (a, j) in ETKILESIM:                            # abone obegi: gecmisteki baskin alan
    SAY[a][AL[j]] = SAY[a].get(AL[j], 0) + 1
OBEK = {a: (max(sorted(c), key=lambda x: c[x]) if c else "yok") for a, c in SAY.items()}
DONEM, K, DEGISIM, ARTAN = 48, 5, 12, 9             # 12. donemde 9. kalemin karsiligi degisir


def dongu(genis):
    """Sistem kendi kaydiyla besleniyor: gosterdigini olcuyor, olctugunu gosteriyor."""
    gos, etk = {}, {}
    for (a, j) in GOSTERIM:
        gos[(OBEK[a], j)] = gos.get((OBEK[a], j), 0) + 1
    for (a, j) in ETKILESIM:
        etk[(OBEK[a], j)] = etk.get((OBEK[a], j), 0) + 1
    toplam, satir = [0] * N_KALEM, []
    for d in range(1, DONEM + 1):
        don_gos, don_etk = [0] * N_KALEM, 0
        for a in ABONE:
            o = OBEK[a]
            s = sorted(range(N_KALEM),
                       key=lambda j: (-(etk.get((o, j), 0) + 0.5)
                                      / (gos.get((o, j), 0) + 5.0), j))
            ilk = s[:K] if not genis else s[:K - 1] + [        # besinci yuva cesitlilige
                min((j for j in range(N_KALEM) if j not in s[:K - 1]),
                    key=lambda j: (toplam[j], (j + a + d) % N_KALEM))]
            r = uretec(TOHUM + 660000 + a * 53 + d * 1301)
            for j in ilk:
                don_gos[j] += 1
                toplam[j] += 1
                gos[(o, j)] = gos.get((o, j), 0) + 1
                e = EGILIM[(a, j)]
                if j == ARTAN and d >= DEGISIM:
                    e = min(0.95, e * 8.0)
                if r() < e:
                    don_etk += 1
                    etk[(o, j)] = etk.get((o, j), 0) + 1
        u5 = sorted(range(N_KALEM), key=lambda j: -don_gos[j])[:5]
        satir.append((don_etk / len(ABONE),
                      [j for j in range(N_KALEM) if don_gos[j] == 0],
                      sum(don_gos[j] for j in u5) / sum(don_gos),
                      don_gos[ARTAN]))
    return satir


DAR = dongu(False)
print(f"dar duzen: her donem ilk {K}, {DONEM} donem, {len(ABONE)} abone")
print(f"{DEGISIM}. donemde {KALEM[ARTAN][0]} kaleminin karsiligi sekiz katina cikar")
print("donem  etkilesim/abone  o donem hic gosterilmeyen  ilk bes gosterim payi")
for d in (1, 8, 24, 48):
    e, yok, p, n = DAR[d - 1]
    print(f"  {d:>2}       {e:.4f}                {len(yok):>2}/{N_KALEM}                {p:.4f}")
KILIT = set(range(N_KALEM))
for x in DAR[DONEM // 2:]:
    KILIT &= set(x[1])
print(f"son {DONEM - DONEM // 2} donemin HEPSINDE gosterilmeyen kalem: {len(KILIT)}/{N_KALEM}")
dar duzen: her donem ilk 5, 48 donem, 360 abone
12. donemde tuketim_raporu_aboneligi kaleminin karsiligi sekiz katina cikar
donem  etkilesim/abone  o donem hic gosterilmeyen  ilk bes gosterim payi
   1       1.2250                 0/24                0.4711
   8       1.3917                 8/24                0.5461
  24       1.4583                 8/24                0.5461
  48       1.3194                 8/24                0.5461
son 24 donemin HEPSINDE gosterilmeyen kalem: 6/24

Birinci dönemde 24 kalemin hepsi gösteriliyor. Sekizinci dönemde sekiz kalem düşüyor; sayı orada 8/24‘te donuyor ve kırk sekizinci döneme kadar oynamıyor. Altı kalem son yirmi dört dönemin hiçbirinde gösterilmiyor. Popülerlik yanlılığı aynı hareketin öbür yüzü: ilk beş kalemin gösterim payı 0,4711’den 0,5461’e çıkıp orada duruyor.

Döngü kendini kapatıyor. Gösterilmeyen kalem hakkında yeni bilgi doğmuyor, kestirimi düşük kalıyor, düşük kestirim onu bir sonraki dönem de dışarıda bırakıyor: kalem kötü olduğu için değil ölçülmediği için dışarıda kalıyor. On ikinci dönemde ortam değişiyor ama dar düzen göremiyor, çünkü sisteme bunu söyleyecek tek yol o kalemin gösterilmesidir.

Beşinci Yuvayı Çeşitliliğe Vermek

GENIS = dongu(True)
GENISKILIT = set(range(N_KALEM))
for x in GENIS[DONEM // 2:]:
    GENISKILIT &= set(x[1])
print(f"genis duzen: ilk {K - 1} model, besinci yuva en az gosterilen kaleme")
print("donem  etkilesim/abone  o donem hic gosterilmeyen  ilk bes gosterim payi  degisen kalem")
for d in (1, 8, 24, 48):
    e, yok, p, n = GENIS[d - 1]
    print(f"  {d:>2}       {e:.4f}                {len(yok):>2}/{N_KALEM}                "
          f"{p:.4f}        {n:>3}")
bedel = sum(GENIS[d][0] - DAR[d][0] for d in range(DEGISIM - 1))
kazanc = sum(GENIS[d][0] - DAR[d][0] for d in range(DEGISIM - 1, DONEM))
esit = [d + 1 for d in range(DONEM)
        if sum(x[0] for x in GENIS[:d + 1]) > sum(x[0] for x in DAR[:d + 1])]
print(f"kisa donem bedeli (1-{DEGISIM - 1}. donem toplami): abone basina {bedel:+.4f}")
print(f"uzun donem kazanci ({DEGISIM}-{DONEM}. donem toplami): abone basina {kazanc:+.4f}")
print(f"kumulatif esitlenme donemi: {esit[0] if esit else 'yok'}; {DONEM}. donemde "
      f"kumulatif fark {sum(x[0] for x in GENIS) - sum(x[0] for x in DAR):+.4f}")
print(f"karsiligi degisen kalem {DONEM}. donemde: dar duzen {DAR[-1][3]} gosterim, "
      f"genis duzen {GENIS[-1][3]}")
print(f"toplanan veri -- dar: {len(KILIT)} kalem hic gosterilmiyor, ilk bes gosterim payi "
      f"{DAR[-1][2]:.4f}; genis: {len(GENISKILIT)} kalem, {GENIS[-1][2]:.4f}")
genis duzen: ilk 4 model, besinci yuva en az gosterilen kaleme
donem  etkilesim/abone  o donem hic gosterilmeyen  ilk bes gosterim payi  degisen kalem
   1       1.1833                 0/24                0.4611         37
   8       1.2722                 0/24                0.5011         81
  24       1.4806                 0/24                0.4989         97
  48       1.3889                 0/24                0.4989         97
kisa donem bedeli (1-11. donem toplami): abone basina -1.0000
uzun donem kazanci (12-48. donem toplami): abone basina +2.2250
kumulatif esitlenme donemi: 27; 48. donemde kumulatif fark +1.2250
karsiligi degisen kalem 48. donemde: dar duzen 17 gosterim, genis duzen 97
toplanan veri -- dar: 6 kalem hic gosterilmiyor, ilk bes gosterim payi 0.5461; genis: 0 kalem, 0.4989

Bedel ilk on bir dönemde ödeniyor: geniş düzen abone başına 1,0000 etkileşim geride bitiriyor, çünkü beş yuvadan biri kestirimin en iyisine değil en az bilinene gidiyor. Buna karşılık kapsama hiç daralmıyor ve ilk beş kalemin payı 0,4989’da kalıyor.

On ikinci dönemde hesap dönüyor. Geniş düzen, karşılığı değişen kalemi zaten dönüşümlü yuvada gösterdiği için değişimi aynı dönem fark ediyor. Kırk sekizinci dönemde o kalem geniş düzende 97, dar düzende 17 gösterim alıyor. On iki ile kırk sekiz arasındaki toplam kazanç abone başına +2,2250; ilk on bir dönemin −1,0000’lık bedeliyle birlikte kümülatif fark yirmi yedinci dönemde sıfırlanıyor ve kırk sekizincide +1,2250 oluyor. Çeşitlilik bir zevk tercihi değil ölçüm bütçesidir: hiç ölçmeyen sistem ortam sabit kaldıkça kazanır, ortam her değiştiğinde kaybeder.

“Yankı odası” bu tabloyu anlatan bir mecazdır ve kendi sayısı yoktur; karşılığı gösterilmeyen kalem sayısı ile ilk beşin gösterim payıdır. Yanıltıcı olduğu yer şurası: kurguda hiçbir abonenin eğilimi değişmiyor. Daralan abonenin ilgisi değil sistemin ölçtüğü alandır, ve ölçülmeyen bir kalemin kötü sayılması bir inanç değil bir kayıt boşluğudur.

Özet

  • Dar düzen sekizinci dönemden sonra her dönem 24 kalemin 8’ini göstermiyor, 6 kalem son yirmi dört dönemin hiçbirinde görünmüyor ve ilk beşin gösterim payı 0,4711’den 0,5461’e çıkıyor.
  • Çeşitliliğin kısa dönem bedeli ilk on bir dönemde abone başına −1,0000, uzun dönem kazancı on iki ile kırk sekiz arasında +2,2250’dir; kümülatif fark yirmi yedinci dönemde eşitlenir.
  • Yankı odası bir mecazdır; bu kurguda daralan abonenin ilgisi değil, sistemin ölçtüğü alandır.

Kurs Kapanışı

On dört dersin hesabı tek tabloda ve her sayı kendi dersinden okundu. Satırlar ortak birim taşımaz; son sütun ölçütü ve yönünü yazar. Fark tek işaret düzeniyle verilir: yöntemin sayısı eksi taban çizgisi, ve üçüncü sütunda parantez içindedir. Dördüncü sütun kursun kendi sayısıdır: görülmeyen durum, denenmeyen eylem, gösterilmeyen kalem.

Ders Taban çizgisi Yöntemin sayısı Toplanan veri Ölçüt
Pekiştirmeli 01 rastgele eylem 10,432 el kuralı 20,621 (+10,189) 1.458 çiftin 1.355’i görülmedi getiri, büyük iyi
Pekiştirmeli 02 rastgele eylem 10,432 geçmiş alanlı kural 23,148 (+12,716) durum uzayı 243’ten 1.215’e; sayım yok getiri, büyük iyi
Pekiştirmeli 03 keşifsiz ajan −16,492 keşif oranı 0,20 ile 25,659 (+42,151) 1.458 çiftin 880’i denenmedi getiri, büyük iyi
Pekiştirmeli 04 kural politikası 20,621 keşifli çizelge 24,419 (+3,798) 1.458 hücrenin 1.355’i güncellenmedi getiri, büyük iyi
Pekiştirmeli 05 rastgele eylem 10,432 tekrar tamponu 26,233 / 25,302 (+15,801) 1.458 hücrenin 678’i güncellenmedi getiri, büyük iyi
Pekiştirmeli 06 ağırlıklar sıfır 10,177 taban çıkarmalı 22,866 / 22,190 (+12,689) uzlaşma 0,290; sayım yok getiri, büyük iyi
Pekiştirmeli 07 ham getiri 14,207 / 17,218 üstünlük 23,401 / 23,755 (+9,194) 5 abonenin 0’ı ziyaretsiz kaldı getiri, büyük iyi
Öneri 01 rastgele sıra 0,2036 en çok seçilen kalem 0,6527 (+0,4491) 24 kalemin 15’i hiç önerilmedi ilk beş isabeti, büyük iyi
Öneri 02 popülerlik 0,6527 içerik temelli 0,4431 (−0,2096) 24 kalemin 0’ı gösterilmedi ilk beş isabeti, büyük iyi
Öneri 03 popülerlik 0,6527 kullanıcı temelli 0,6946 (+0,0419) 24 kalemin 8’i gösterilmedi ilk beş isabeti, büyük iyi
Öneri 04 popülerlik 0,6527 atlayan kurulum 0,7006 (+0,0479) 24 kalemin 15’i gösterilmedi ilk beş isabeti, büyük iyi
Öneri 05 popülerlik geri dönüşü 0,5752 üç soruluk giriş 0,5487 (−0,0265) 24 kalemin 19’u gösterilmedi soğukta ilk beş isabeti, büyük iyi
Öneri 06 çevrimiçi taban 1,4581 hafif düzen 1,4788 (+0,0207) 24 kalemin 12’si gösterilmedi abone başına etkileşim, büyük iyi
Öneri 07 dar düzen, 48 dönem geniş düzen (+1,2250) 24 kalemin 8’i gösterilmedi kümülatif etkileşim, büyük iyi

Kursun kuralı budur: kararı veren bir sistemin ölçüsü, o kararın kendi verisini değiştirdiği hesaba katılmadan okunamaz; topladığı veriyi yazmayan sistem ölçülmemiş sayılır.

Dördüncü sütun tek bir sayıya indirgenir: sayım basan on iki derste görülmeyen çift, güncellenmeyen hücre, ziyaretsiz abone ve gösterilmeyen kalem toplamı 4.345 birimdir. Birimler aynı değildir ve toplam bir ortalama değil bir sayımdır: bu kursta ölçülen her başarım sayısının arkasında, yöntemin hakkında hiçbir şey öğrenmediği dört binden fazla birim durur. Pekiştirmeli 02 ile 06 sayım basmaz, toplama girmez.

Kursun ikinci iddiası aynı tablodan okunur: çevrimdışı ölçülen sayı çevrimiçi davranışı söylemez. Dört derste iki sayı ayrıldı. Öneri 06’da çevrimdışı 0,6886 ile birinci olan düzen, kendi gösterim kararlarını verdiğinde 1,4563 ile sonuncu ve tabanın altında kaldı. Öneri 07’de kayda göre iyi olan dar düzen kırk sekiz dönem sonunda 1,2250 geride bitirdi. Öneri 05’te kayıttan okunan isabet, soru sorulduğunda 0,5752’den 0,5487’ye düştü. Pekiştirmeli 03’te ayrım ters yönde göründü: keşif oranı 1,00 olan ajanın davranışı kötüydü ama topladığı veri iyiydi ve dondurulan çizelge 23,000 verdi. Tek kaynak şudur: sayının okunduğu kayıt, kararı başka bir düzenin verdiği kayıttır.

Elli iki derste her sayının yanına tabanı yazıldı ve son on dördünde sistemin kendi verisini değiştirdiği sayıldı. Sorulmayan tek şey kimin için ölçüldüğüdür. Tablodaki her sayı bütün abonelerin ortalamasıdır: aynı sayı iki alt grupta iki ayrı şey söylüyorsa hangisi rapor edilir, sistemin bir kalemi kime gösterip kime göstermediği neye dayanıyor ve okunabilir mi, ve ölçüsü iyi çıkan bir sistemin ölçüye hiç girmeyen bir gruba verdiği zarar hangi sayıyla yazılır. Sonraki kurs, Model Değerlendirme, Yorumlanabilirlik ve Etik, bu üç soruyla açılı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