Hedef sınıf değişkenini hiç kullanmadınız. Gini safsızlığı diğer tüm safsızlık fonksiyonları gibi, bir bölünmeden sonra çıktıların safsızlığını ölçer. Yaptığınız şey, sadece örneklem büyüklüğü kullanarak bir şeyi ölçmektir.
Vakanız için formül türetmeye çalışıyorum.
Sadelik için bir ikili sınıflandırıcıya sahip olduğunuzu varsayalım. ile test niteliğini, C ile c + olan sınıf niteliğini belirtin , c -ACc+,c− değerlerine .
Bölme
öncesi ilk gini indeksi
; burada P ( A + ) , sınıf değişkeni için c + değerine sahip veri noktalarının oranıdır .
I(A)=1−P(A+)2−P(A−)2
P(A+)c+
Şimdi, sol düğüm için safsızlık
I ( A r ) = 1 - P ( A r + ) 2 - P ( A r - ) 2
burada p ( bir l + )
I(Al)=1−P(Al+)2−P(Al−)2
I(Ar)=1−P(Ar+)2−P(Ar−)2
P(Al+)sınıf değişkeninde
c + değerine sahip
sol alt kümesinden veri noktalarının oranıdır .
Ac+
Şimdi GiniGain için son formül
burada p l e f t örneklerin oranıdır sol alt küme veya # | A l |
GiniGain(A)=I(A)−pleftI(Al)−prightI(Ar)
pleft(sol alt kümede kaç eşgörünümün
A'dantoplam eşgörünüm sayısına bölümüdür.
#|Al|#|Al|+#|Ar|A
Gösterimin geliştirilebileceğini hissediyorum, daha fazla zamanım olduğunda daha sonra izleyeceğim.
Sonuç
Sadece veri noktası sayısını kullanmak yeterli değildir, safsızlık, bir özelliğin (test özelliği) başka bir özelliğin (sınıf özelliği) dağılımını ne kadar iyi üretebileceği anlamına gelir. Test özelliği dağıtımı, kullandığınız sayıyı üretir (nasıl sola, nasıl sağa), ancak sınıf özelliğinin dağıtımı formüllerinizde kullanılmaz.
Daha sonra düzenleme - neden azaldığını kanıtlayın
Şimdi alt düğümdeki gini indeksinin neden üst düğümden daha az olduğunu kanıtlayan kısmı kaçırdığımı fark ettim. Tam bir kanıtım veya doğrulanmış bir kanıtım yok, ancak geçerli bir kanıt olduğunu düşünüyorum. Konuyla ilgili diğer enteresan şeyler için Teknik Not: Ayırma Kriterleri - Leo Breiman'ın Bazı Özellikleri'ni kontrol edebilirsiniz . Şimdi kanıtımı takip edecek.
(a,b)ab(a,b)
En iyi bölünmeyi bulmak için, örnekleri bir test özelliğine göre sıralarız ve olası tüm ikili bölünmeleri deneriz. Belirli bir özellik tarafından sıralanan, aslında sınıfların birinci sınıfın veya ikinci sınıfın bir örneğiyle başladığı örneklerin permütasyonudur. Genelliği kaybetmeden, birinci sınıfın bir örneğiyle başladığını varsayalım (eğer durum böyle değilse, aynı hesaplama ile bir ayna kanıtı var).
(1,0)(a−1,b)h(left)=1−(1/1)2−(0/1)2=0. Yani sol tarafta daha küçük bir gini indeks değerine sahibiz. Doğru düğüme ne dersiniz?
h(parent)=1−(aa+b)2−(ba+b)2
h(right)=1−(a−1(a−1)+b)2−(b(a−1)+b)2
Considering that a is greater or equal than 0 (since otherwise how could we separate an instance of the first class in the left node?) and after simplification it's simple to see that the gini index for the right node has a smaller value than for the parent node.
Now the final stage of the proof is to node that while considering all the possible split points dictated by the data we have, we keep the one which has the smallest aggregated gini index, which means that the optimum we choose is less or equal than the trivial one which I prooved that is smaller. Which concludes that in the end the gini index will decrease.
As a final conclusion we have to note even if various splits can give values bigger that parent node, the one that we choose will be the smallest among them and also smaller that the parent gini index value.
Hope it helps.