Ders 02 / 17
Nitel ve Nicel Yaklaşımlar
Aynı 47 kalem iki ölçekte koşturulur: parasal model tekil ve yıllık kayıp beklentisini kurgu birimle hesaplarken beş kere beş nitel matris kalemleri üç düzeye indirir, 1.081 kalem çiftinin 479'unu beraberliğe düşürür, 52'sini ters sıralar, 184,80 birimlik kalemi orta ile 96,00 birimlik kalemi yüksek yazar ve aynı çabayla seçilen on kalemin sonucunu 745,20 birim açar.
İçindekiler
Önceki ders 47 kalemlik listeyi üretti ve sıraladı, ama her satırdaki sıklık ile etki bir ölçümden değil bir kestirimden geliyordu. Kestirimin iki yaygın yolu vardır: kalemleri sayı yerine bantlara oturtan nitel yaklaşım, kaybı varlık değeri ile kayıp oranına ayıran nicel yaklaşım. Bu ders ikisini aynı liste üzerinde koşturur. Sorulan şey hangisinin doğru olduğu değildir — ikisi de aynı belirsiz girdiden çalışır — aynı veriden kaç sıra farklı çıktığı ve bu farkın bütçede kaç birim tuttuğudur. Öncelik listesi verinin değil, veriye uygulanan ölçeğin ürünüdür.
İki Ölçek
Nicel yaklaşım kaybı iki parçaya ayırır. Tekil kayıp beklentisi, olay bir kez gerçekleştiğinde kaybedilendir ve varlık değeri ile maruziyet oranının çarpımıdır: 3.000 kurgu birimlik bir veri tabanında yüzde 35’lik bir maruziyet oranı 1.050 birimlik tekil kayıp yazar. Yıllık kayıp beklentisi, tekil kayıp ile yıllık gerçekleşme sıklığının çarpımıdır. Önceki dersin “etki” ve “risk” sütunları tam olarak bunlardır; ad değişir, sayı değişmez.
Nitel yaklaşım aynı iki girdiyi bantlara indirir ve bant çiftini bir matrise sokar. Her hücre sıralı bir düzey verir. Düzeyler bir ölçek değil bir sıradır: “yüksek” ile “orta” arasındaki uzaklık tanımsızdır, iki “orta” toplanamaz.
- RY7. Yedi tehdit, on varlık ve bütün katsayılar modeldir; birim kurgu birimdir.
- RY8. Varlık değeri iş tanımından türetilmiş sayılır ve modelde sabittir.
- RY9. Tekil kayıp beklentisi varlık değeri ile maruziyet oranının, yıllık kayıp beklentisi tekil kayıp ile yıllık sıklığın çarpımıdır.
- RY10. Nitel matris beş kere beştir ve dört düzey taşır; düzeyler sıralıdır, toplanamaz.
- RY11. Taban sıklık bir kestirimdir; sapma üreteci her tehdide 0,75 ile 1,25 arasında bir katsayı verir, tohum görünürdür ve çıktı koşumdan koşuma değişmez.
// risk/olcek.mjs — ayni 47 kalem, iki olcek: nitel bant matrisi ve parasal model. MODELDIR; // gercek envanter, gercek olay kaydi ve gercek para birimi yok, birim "kurgu birim"dir. // RY7: tehdit satiri: ad | yillik gerceklesme sikligi (taban) | maruziyet orani const TEHDIT = ` kimlik-ele-gecirme 0.30 0.35 zararli-kod 0.50 0.25 yanlis-yapilandirma 0.80 0.15 ic-kotuye-kullanim 0.10 0.40 hizmet-kesintisi 0.40 0.20 fiziksel-erisim 0.06 0.50 tedarik-zinciri 0.08 0.45` .trim().split("\n").map((r) => { const [ad, s, m] = r.trim().split(/\s+/); return { ad, s: +s, m: +m }; }); // RY8: varlik satiri: ad | varlik degeri | maruziyet katsayisi | tehdit maskesi (yedi hane) const VARLIK = ` saha-dizustu 900 1.6 1111011 sube-ucu 600 1.2 1111110 sayac-toplayici 750 1.4 0111110 islem-sunucusu 1800 0.6 1111101 cevre-agi 1200 1.8 0011100 kimlik-dizini 2400 1.0 1011100 bulut-hesabi 2000 1.5 1011100 abone-veri-tabani 3000 0.4 1011100 saha-uygulamasi 1400 1.1 1111001 tedarikci-baglantisi 1000 1.3 1001101` .trim().split("\n").map((r) => { const [ad, v, k, maske] = r.trim().split(/\s+/); return { ad, v: +v, k: +k, maske }; }); // RY9: parasal model. Tekil kayip beklentisi (TKB) = varlik degeri x maruziyet orani; // yillik kayip beklentisi (YKB) = TKB x yillik siklik. Onceki dersin "etki" ve "risk" // sutunlari bunlardir; ad degisti, sayi degismedi. export const KALEM = []; for (const v of VARLIK) for (const [j, t] of TEHDIT.entries()) if (v.maske[j] === "1") { const siklik = +(t.s * v.k).toFixed(3), tkb = +(v.v * t.m).toFixed(1); KALEM.push({ v, t, j, siklik, tkb, ykb: +(siklik * tkb).toFixed(2) }); } // RY10: nitel olcek. Siklik ve TKB birer banda indirilir, bant cifti bir matris hucresine // bakar; hucre dort duzeyden birini verir. Duzeyler siralidir, toplanamaz. const bant = (x, s) => s.findIndex((u) => x < u) + 1 || s.length + 1; export const S_SINIR = [0.10, 0.25, 0.50, 1.00], E_SINIR = [180, 315, 450, 700]; export const DUZEY = ["dusuk", "orta", "yuksek", "kritik"]; // Satir = TKB bandi (5'ten 1'e), sutun = siklik bandi (1'den 5'e). Rakam DUZEY dizinidir. export const MATRIS = ["12233", "11223", "01122", "00112", "00011"]; export const sBant = (k) => bant(k.siklik, S_SINIR); export const eBant = (k) => bant(k.tkb, E_SINIR); export const duzey = (k) => +MATRIS[5 - eBant(k)][sBant(k) - 1]; for (const k of KALEM) { k.sb = sBant(k); k.eb = eBant(k); k.d = duzey(k); } export const TOPLAM = +KALEM.reduce((a, k) => a + k.ykb, 0).toFixed(2); export const sirala = (f) => KALEM.map((k, i) => ({ k, i })) .sort((a, b) => f(b.k) - f(a.k) || a.i - b.i).map((x) => x.k); export const yer = (L, k) => L.indexOf(k) + 1; // RY11: kestirim sapmasi. Taban siklik bir olcum degil bir kestirimdir; asagidaki uretec her // tehdide 0,75 ile 1,25 arasinda bir katsayi verir. Tohum gorunurdur, cikti degismez. let tohum = 20250401; const rast = () => (tohum = (tohum * 1103515245 + 12345) % 2147483648) / 2147483648; export const SAPMA = TEHDIT.map(() => +(0.75 + rast() * 0.5).toFixed(3)); export const sapmali = (k) => { const siklik = +(k.siklik * SAPMA[k.j]).toFixed(3); return { siklik, ykb: +(siklik * k.tkb).toFixed(2), d: +MATRIS[5 - k.eb][bant(siklik, S_SINIR) - 1] }; };
Aynı Listede İki Ölçek
// risk/karsilastir.mjs — nitel duzey ile yillik kayip beklentisi ayni listede yarisir import { KALEM, TOPLAM, DUZEY, MATRIS, S_SINIR, E_SINIR, SAPMA, sapmali, sirala, yer } from "./olcek.mjs"; const y = (g, ...s) => console.log(s.map((v, i) => (g[i] < 0 ? String(v).padEnd(-g[i]) : String(v).padStart(g[i]))).join("").trimEnd()); const SN = sirala((k) => k.ykb); // parasal: yillik kayip beklentisi const SQ = sirala((k) => k.d); // nitel: duzey, esitlikte liste sirasi bozulmaz console.log(`${KALEM.length} kalem, toplam yillik kayip beklentisi ${TOPLAM} kurgu birim; ` + `bant sinirlari ${S_SINIR.join("/")} ve ${E_SINIR.join("/")}`); const A = [-9, 9, 9, 9, 9, 9]; console.log("\n1. nitel matris (satir: tekil kayip bandi 5..1, sutun: siklik bandi 1..5)"); y(A, "tkb\\sik", "1", "2", "3", "4", "5"); MATRIS.forEach((r, i) => y(A, String(5 - i), ...[...r].map((c) => DUZEY[+c]))); const sb5 = KALEM.filter((k) => k.sb === 5), eb5 = KALEM.filter((k) => k.eb === 5); console.log(`25 hucrenin ${new Set(KALEM.map((k) => `${k.eb}${k.sb}`)).size} tanesi dolu; ` + `siklik bandi 5 olan ${sb5.length} kalemin en yuksek tekil kayip bandi ` + `${Math.max(...sb5.map((k) => k.eb))}, tekil kayip bandi 5 olan ${eb5.length} kalemin ` + `en yuksek siklik bandi ${Math.max(...eb5.map((k) => k.sb))}`); const B = [-8, 7, 10, 10, 6, 12, 8]; console.log("\n2. duzey basina"); y(B, "duzey", "kalem", "en kucuk", "en buyuk", "kat", "toplam YKB", "pay %"); for (const [i, ad] of DUZEY.entries()) { const g = KALEM.filter((k) => k.d === i); if (g.length === 0) { y(B, ad, 0, "-", "-", "-", "0.00", "0.0"); continue; } const alt = Math.min(...g.map((k) => k.ykb)), ust = Math.max(...g.map((k) => k.ykb)); const t = g.reduce((a, k) => a + k.ykb, 0); y(B, ad, g.length, alt.toFixed(2), ust.toFixed(2), (ust / alt).toFixed(1), t.toFixed(2), ((t / TOPLAM) * 100).toFixed(1)); } const YUK = KALEM.filter((k) => k.d === 2).sort((a, b) => b.ykb - a.ykb); const C = [-22, -21, 5, 5, 10, 5]; console.log("\n3. 'yuksek' duzeyinin parasal sirada geriye dusen bolumu"); y(C, "varlik", "tehdit", "s-b", "t-b", "YKB", "N"); for (const k of YUK.slice(8)) y(C, k.v.ad, k.t.ad, k.sb, k.eb, k.ykb.toFixed(2), yer(SN, k)); console.log(`bu duzeyin ilk ${YUK.filter((k, i) => yer(SN, k) === i + 1).length} kalemi ` + `parasal sirada da ayni yerdedir`); const ortaUst = KALEM.filter((k) => k.d === 1).reduce((a, k) => (k.ykb > a.ykb ? k : a)); console.log(`en yuksek YKB'li "orta" kalem: ${ortaUst.v.ad} / ${ortaUst.t.ad} ` + `${ortaUst.ykb.toFixed(2)} birim, YKB sirasi ${yer(SN, ortaUst)}`); const D = [-42, 8]; console.log("\n4. iki olcek arasindaki fark"); const cift = (f) => { let n = 0; for (let a = 0; a < KALEM.length; a++) for (let b = a + 1; b < KALEM.length; b++) if (f(KALEM[a], KALEM[b])) n++; return n; }; y(D, "toplam kalem cifti", cift(() => true)); y(D, "nitel olcekte beraberlige dusen cift", cift((a, b) => a.d === b.d)); y(D, "iki olcegin ters siraladigi cift", cift((a, b) => (a.d - b.d) * (a.ykb - b.ykb) < 0)); y(D, "nitel olcekte kullanilan duzey", new Set(KALEM.map((k) => k.d)).size + "/4"); y(D, "ilk onun kaci ortak", SQ.slice(0, 10).filter((k) => SN.slice(0, 10).includes(k)).length); const E = [-42, 8]; const top = (L) => +L.reduce((a, k) => a + k.ykb, 0).toFixed(2); console.log("\n5. ayni cabayla on kalem secilirse (beraberlik keyfiligi)"); y(E, "parasal siraya gore ilk on", top(SN.slice(0, 10))); y(E, "nitel: yuksek duzeyden en iyi on", top(YUK.slice(0, 10))); y(E, "nitel: yuksek duzeyden en kotu on", top(YUK.slice(-10))); y(E, "keyfiligin acikligi", +(top(YUK.slice(0, 10)) - top(YUK.slice(-10))).toFixed(2)); const F = [-42, 8]; const SS = sirala((k) => sapmali(k).ykb); console.log(`\n6. kestirim sapmasi (tehdit basina katsayi: ${SAPMA.join(" ")})`); y(F, "YKB sirasi degisen kalem", KALEM.filter((k) => yer(SN, k) !== yer(SS, k)).length); y(F, "en buyuk sira kaymasi", Math.max(...KALEM.map((k) => Math.abs(yer(SN, k) - yer(SS, k))))); y(F, "parasal ilk onun kaci ayni kalir", SS.slice(0, 10).filter((k) => SN.slice(0, 10).includes(k)).length); y(F, "nitel duzeyi degisen kalem", KALEM.filter((k) => sapmali(k).d !== k.d).length);
47 kalem, toplam yillik kayip beklentisi 5768.61 kurgu birim; bant sinirlari 0.1/0.25/0.5/1 ve 180/315/450/700 1. nitel matris (satir: tekil kayip bandi 5..1, sutun: siklik bandi 1..5) tkb\sik 1 2 3 4 5 5 orta yuksek yuksek kritik kritik 4 orta orta yuksek yuksek kritik 3 dusuk orta orta yuksek yuksek 2 dusuk dusuk orta orta yuksek 1 dusuk dusuk dusuk orta orta 25 hucrenin 18 tanesi dolu; siklik bandi 5 olan 4 kalemin en yuksek tekil kayip bandi 2, tekil kayip bandi 5 olan 8 kalemin en yuksek siklik bandi 3 2. duzey basina duzey kalem en kucuk en buyuk kat toplam YKB pay % dusuk 5 21.60 57.60 2.7 181.50 3.1 orta 28 38.88 184.80 4.8 2705.71 46.9 yuksek 14 96.00 360.00 3.8 2881.40 49.9 kritik 0 - - - 0.00 0.0 3. 'yuksek' duzeyinin parasal sirada geriye dusen bolumu varlik tehdit s-b t-b YKB N saha-uygulamasi kimlik-ele-gecirme 3 4 161.70 13 abone-veri-tabani yanlis-yapilandirma 3 4 144.00 15 islem-sunucusu zararli-kod 3 4 135.00 17 abone-veri-tabani kimlik-ele-gecirme 2 5 126.00 21 bulut-hesabi ic-kotuye-kullanim 2 5 120.00 22 kimlik-dizini ic-kotuye-kullanim 2 5 96.00 25 bu duzeyin ilk 8 kalemi parasal sirada da ayni yerdedir en yuksek YKB'li "orta" kalem: saha-uygulamasi / yanlis-yapilandirma 184.80 birim, YKB sirasi 9 4. iki olcek arasindaki fark toplam kalem cifti 1081 nitel olcekte beraberlige dusen cift 479 iki olcegin ters siraladigi cift 52 nitel olcekte kullanilan duzey 3/4 ilk onun kaci ortak 7 5. ayni cabayla on kalem secilirse (beraberlik keyfiligi) parasal siraya gore ilk on 2463.5 nitel: yuksek duzeyden en iyi on 2404.4 nitel: yuksek duzeyden en kotu on 1659.2 keyfiligin acikligi 745.2 6. kestirim sapmasi (tehdit basina katsayi: 1.116 0.896 1.167 0.756 0.814 0.759 1.191) YKB sirasi degisen kalem 37 en buyuk sira kaymasi 7 parasal ilk onun kaci ayni kalir 8 nitel duzeyi degisen kalem 8
Sayılar ölçüm sınıfındadır; girdileri RY7–RY11’dir.
Hiç Dolmayan Köşe
Matris dört düzey tanımlıyor ve programda üçü kullanılıyor. “Kritik” hücreleri boş kalıyor, çünkü o hücreler hem yüksek sıklık hem yüksek tekil kayıp istiyor ve iki koşul aynı kalemde buluşmuyor: sıklık bandı 5 olan dört kalemin en yüksek tekil kayıp bandı 2, tekil kayıp bandı 5 olan sekiz kalemin en yüksek sıklık bandı 3. Yirmi beş hücrenin on sekizi doluyor, ama dolan hücreler köşegenin iki yanına yayılıyor.
Bu, ölçeğin çözünürlüğünün veriye göre daraldığını gösterir: 47 kalem üç kelimeyle anlatılır ve en kalabalık kelime “orta”dır — 28 kalem, listenin yüzde altmışı, tek bir kutuda durur.
Aynı Düzeyin İçindeki Açıklık
İkinci tablo bu dersin ana bulgusunu veriyor. “Yüksek” düzeyindeki 14 kalemin yıllık kayıp beklentisi 96,00 ile 360,00 birim arasında değişiyor — 3,8 kat. “Orta” düzeyinde açıklık daha da geniştir: 38,88 ile 184,80 arası, 4,8 kat.
Asıl sonuç iki düzeyin kesiştiği yerdedir. En yüksek yıllık kayıp beklentisine sahip “orta” kalem saha uygulamasındaki yanlış yapılandırmadır: 184,80 birim ve parasal sırada dokuzuncu. Aynı listede kimlik dizinindeki iç kötüye kullanım kalemi “yüksek” yazılır ve 96,00 birim taşır, parasal sırada yirmi beşincidir. Nitel ölçek ikincisini öne alır, parasal model birincisini on altı sıra öne alır.
Ters çevrilme rastlantı değildir. Nitel matris tekil kaybı ve sıklığı ayrı ayrı bantlar; bir kalem tek boyutta uç değere gittiğinde hücre onu yukarı taşır, çarpımın ne verdiğine bakmaz. Üçüncü tablo bu kalemleri ayırıyor: “yüksek” düzeyinin ilk sekizi parasal sırada da ilk sekizdir, geriye kalan altısı 13. ile 25. sıralar arasına dağılır ve üçünde tekil kayıp bandı 5, sıklık bandı 2’dir.
Dördüncü tablo aynı olguyu çift sayısıyla ölçüyor. 47 kalem 1.081 çift üretir; nitel ölçek bunların 479’unu beraberliğe düşürür ve 52 çiftte iki ölçek birbirinin tersini söyler. Beraberlik bir eksiklik, ters sıralama bir çelişkidir; ilki kararı erteler, ikincisi yanlış kararı verdirir.
Beraberlik Bütçeye Çevrilince
Beşinci tablo beraberliğin bedelini yazıyor. Program on kalem ele alabiliyorsa parasal sıra ilk onu seçer ve 2.463,50 birim hedefler. Nitel sıra “yüksek” düzeyindeki 14 kalemden onunu seçer, ama hangi onunu seçeceğini söylemez: en iyi seçim 2.404,40, en kötü seçim 1.659,20 birim tutar.
Aradaki 745,20 birim ölçeğin bıraktığı keyfiliktir. Aynı liste, aynı çaba ve aynı kalem sayısı; sonucu belirleyen şey listenin hangi sırayla yazıldığıdır. Nitel yaklaşımın iyi ucu parasal modelin sonucuna 59,10 birim yaklaşır, kötü ucu 804,30 birim uzaktadır. Ölçek yanlış değildir, eksiktir: kararı bir yere kadar götürür ve son adımı adlandırılmamış bir tercihe bırakır.
Kestirim Sapması Karşısında
Altıncı tablo parasal modelin kendi zayıflığını ölçer. Taban sıklıklar yüzde 25’lik bir bantta oynatıldığında — üreteç ders içinde yazılıdır, tohum görünürdür — parasal sıralamada 37 kalemin yeri değişir ve en büyük kayma yedi basamaktır. İlk onun sekizi yerinde kalır; oynayan yer orta banttır.
Aynı sapma nitel ölçekte yalnız 8 kalemin düzeyini değiştirir. Bant sınırları girdideki oynamayı yutar: 0,36 ile 0,44 arasındaki bir sıklık aynı banda düşer. Çözünürlük kaybı burada bir kazanca dönüşür — az sayıda kutu, girdi hatasına az tepki verir.
İki tablo birlikte okunduğunda seçim netleşir. Parasal model daha ince ayrım yapar ve bu ayrımın bir bölümü gerçek değil, kestirim gürültüsüdür; 37 kalemlik kayma bunun kanıtıdır. Nitel model gürültüye dayanır ve karşılığında 479 çiftte hiçbir şey söylemez. İkisi de aynı belirsizliği farklı yere koyar: biri sayının basamaklarına, öteki kutunun içine. Hangi yaklaşımın kullanıldığı yazılmadıkça sıralamanın ne kadarının veriden geldiği bilinemez.
Özet
- Parasal model kaybı ikiye ayırır: tekil kayıp beklentisi varlık değeri ile maruziyet oranının, yıllık kayıp beklentisi tekil kayıp ile yıllık sıklığın çarpımıdır; toplam 5.768,61 kurgu birimdir.
- Beş kere beşlik nitel matris dört düzey tanımlar, programda üçünü kullanır; 25 hücrenin 18’i doludur ve “kritik” boş kalır, çünkü yüksek sıklık ile yüksek tekil kayıp aynı kalemde buluşmaz.
- Aynı düzeyin içindeki açıklık 3,8 ile 4,8 kat arasındadır; 184,80 birimlik kalem “orta”, 96,00 birimlik kalem “yüksek” yazılır, aralarında on altı sıra vardır.
- 1.081 kalem çiftinin 479’u nitel ölçekte beraberliğe düşer, 52’sinde iki ölçek birbirinin tersini söyler; ilk onun yalnız yedisi ortaktır.
- On kalemlik aynı çaba parasal sırayla 2.463,50 birim, nitel sırayla 1.659,20 ile 2.404,40 arası hedefler; 745,20 birimlik açıklık ölçeğin adlandırmadığı tercihtir.
- Sıklık kestirimi yüzde 25 bandında oynatıldığında parasal sırada 37 kalem yer değiştirir, nitel ölçekte yalnız 8 kalemin düzeyi değişir: çözünürlük kaybı girdi hatasına dayanıklılık verir.
Sonraki Adım
İki ders de aynı sessiz varsayımı taşıyor: her kalem için tek bir ele alma yolu vardı ve o yol riski sabit bir oranda düşürüyordu. Gerçekte bir risk kalemine dört ayrı biçimde karşılık verilir — kontrol ekleyip azaltmak, bedelini bir sözleşmeyle aktarmak, olduğu gibi kabul etmek, riski doğuran işi bırakarak kaçınmak. Dördü aynı bütçeden harcanır ve birim başına düşürdükleri risk farklıdır. Sonraki ders dördünü aynı liste üzerinde koşturur ve aktarmanın hangi kalemleri devretmediğini ayrıca sayar.
İlerlemeni kaydetmek ve not almak için Giriş yap
Notlarım
Not almak için giriş yapmalısın.