Örnek sorular
Cml Trees Randomforest InternalsZorluk 1
Bir karar ağacı düğümünde 4 eğitim örneği var: 3'ü A sınıfı, 1'i B sınıfı. Bu düğümün Gini safsızlığı kaçtır?
- a0,250; çünkü dört örnekten biri düğümün azınlık sınıfına aittir
- b0,375; çünkü 1 eksi sınıf oranlarının karelerinin toplamıdır✓
- c0,750; çünkü safsızlık, düğümün çoğunluk sınıfınca tutulan payıdır
- d0,811; çünkü safsızlık her sınıf oranını 2 tabanlı logu ile çarpıp toplar
Açıklama:Gini safsızlığı, düğümde bulunan sınıflar üzerinden 1 - toplam(p_k^2) biçimindedir. 0,75 ve 0,25 oranlarıyla bu 1 - (0,5625 + 0,0625) = 0,375 verir. 0,811 değeri ise aynı düğümün bit cinsinden Shannon entropisidir; entropy kriteri bunu raporlar.
Cml Trees Randomforest InternalsZorluk 2
İkili sınıflandırma ağacında hangi düğüm bileşimi Gini safsızlığını en yükseğe çıkarır ve bu en yüksek değer kaçtır?
- aBir sınıfın örneklerin yaklaşık yüzde 75'ini tuttuğu düğüm; en yüksek değer 0,75
- bTek örnek içeren düğüm, çünkü yalnız bir örnek kanıt taşımaz; en yüksek değer 1,0
- cİki sınıf arasında eşit bölünmüş düğüm; en yüksek değer 0,5✓
- dİki sınıfı 2'ye 1 oranında olan düğüm; en yüksek değer yaklaşık 0,44
Açıklama:İki sınıf ve p oranı için Gini, 1 - p^2 - (1-p)^2 = 2p(1-p) olur; bu ifade p = 0,5'te 0,5 değeriyle tepe yapar. Saf bir düğüm 0 verir, her dengesizlik değeri 0,5'in altına indirir. Formüle düğüm büyüklüğü değil yalnızca sınıf oranları girer.
Cml Trees Randomforest InternalsZorluk 2
Bir düğümde 8 örnek var: 4 pozitif, 4 negatif. Aday bir bölünme sol çocuğa 4 örnek (3 pozitif, 1 negatif), sağ çocuğa 4 örnek (1 pozitif, 3 negatif) gönderiyor. Bu bölünmenin Gini kazancı nedir?
- a0,125; çünkü ebeveynin 0,5 değeri 0,375'lik ağırlıklı çocuk safsızlığına düşer✓
- b0,250; çünkü her çocuk ebeveyni kendi safsızlık değerinin yarısı kadar iyileştirir
- c0,500; çünkü düğüm bir kez bölündüğünde ebeveyn safsızlığı tamamen ortadan kalkar
- d0,750; çünkü kazanç, iki çocuğun ayrı ayrı kaldırdığı safsızlıkları toplar
Açıklama:Her iki çocuğun Gini değeri 1 - (0,75^2 + 0,25^2) = 0,375'tir ve her biri örneklerin yarısını tuttuğu için ağırlıklı çocuk safsızlığı da 0,375 çıkar. Bunu ebeveynin 0,5 değerinden çıkarınca kazanç 0,125 olur. Kazanç her zaman ebeveyn safsızlığı eksi çocukların örnek-ağırlıklı ortalamasıdır, çocuklar üzerinden bir toplam değildir.
Cml Trees Randomforest InternalsZorluk 2
scikit-learn 1.6'da DecisionTreeClassifier, criterion olarak "gini", "entropy" ve "log_loss" değerlerini kabul eder. "entropy" ile "log_loss" birbiriyle nasıl ilişkilidir?
- a"log_loss", düğüm saflığı yerine yaprak olasılıklarının kalibrasyon hatasını ölçer
- b"log_loss", entropiyi uygular ama her sınıfı düğümdeki ters frekansıyla ağırlıklandırır
- c"log_loss", bir bölünmeyi ebeveynin tahmin dağılımına karşı çapraz entropiyle değerlendirir
- dİkisi aynı Shannon entropisi ölçüsünü adlandırır ve birebir aynı ağacı kurar✓
Açıklama:scikit-learn 1.6'da "log_loss", "entropy" için bir takma addır: ikisi de düğüm için -toplam(p_k * log2(p_k)) hesaplar, dolayısıyla hangi adla fit edilirse edilsin eşikler ve safsızlık dizisi aynı çıkar. Takma ad yalnızca ağaç kriteri adını kütüphanenin geri kalanındaki kayıp terminolojisiyle hizalamak için vardır.
Cml Trees Randomforest InternalsZorluk 2
Bir düğümde 6 örnek var ve tek bir sürekli feature üzerindeki değerleri [1, 1, 2, 2, 5, 9]. splitter="best" ile scikit-learn bu düğümde bu feature için kaç aday eşik değerlendirir?
- a3; komşu farklı değer çiftlerinin her biri arasında bir orta nokta✓
- b5; sıralamadan sonra komşu satır çiftlerinin her biri arasında bir sınır
- c6; düğümdeki her örnek değerinin tam üzerine konan birer eşik
- d9; gözlenen değer aralığında her tamsayı adımı için bir eşik
Açıklama:best splitter feature'ı sıralar ve eşiği yalnızca birbirinden farklı iki komşu değerin arasına, orta noktalarına yerleştirir; dolayısıyla 1, 2, 5 ve 9 farklı değerleri 1,5 · 3,5 · 7,0 olmak üzere üç aday üretir. Tekrarlanan değerler bir eşikle ayrılamaz, bu yüzden kopyalar aday sayısını artırmaz.
Cml Trees Randomforest InternalsZorluk 2
scikit-learn 1.6 ile:
X = [[1.0], [2.0], [10.0], [20.0]]
y = [0, 0, 1, 1]
clf = DecisionTreeClassifier(max_depth=1).fit(X, y)
print(clf.tree_.threshold[0])
Ekrana ne yazılır?
- a2.0; negatif sınıfa ait olan en büyük feature değeri
- b5.5; düğümde bulunan dört feature değerinin aritmetik ortalaması
- c6.0; sınırın iki yanındaki değerlerin arasındaki orta nokta✓
- d10.0; zaten pozitif sınıfa ait olan en küçük feature değeri
Açıklama:En iyi bölünme 2.0 ile 10.0'ı ayırır ve scikit-learn eşiği bu komşu çiftin orta noktası olarak saklar, yani (2.0 + 10.0) / 2 = 6.0 yazılır. Bölünme koşulu X <= eşik biçimindedir ve iki komşu arasındaki açık aralıktaki her değer aynı satırları ayırırdı; orta nokta deterministik olarak seçilir.