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.