Anda sama sekali tidak menggunakan variabel kelas target sama sekali. Gini pengotor seperti semua fungsi pengotor lainnya, mengukur pengotor dari output setelah split. Apa yang Anda lakukan adalah mengukur sesuatu hanya dengan menggunakan ukuran sampel.
Saya mencoba untuk mendapatkan formula untuk kasus Anda.
Misalkan untuk kesederhanaan Anda telah memiliki classifier biner. Ditunjukkan dengan sebagai atribut uji, dengan C atribut kelas yang memiliki nilai c + , c - .SEBUAHCc+, c-
Indeks gini awal sebelum pemisahan diberikan oleh
mana P ( A + ) adalah proporsi titik data yang memiliki nilai c + untuk variabel kelas.
saya( A ) = 1 - P( A+)2- P( A-)2
P( A+)c+
Sekarang, pengotor untuk simpul kiri adalah
I ( A r ) = 1 - P ( A r + ) 2 - P ( A r - ) 2 di
mana P ( A l + )
saya( A l ) = 1 -P( A l+)2- P( A l-)2
saya( A r ) = 1 - P( A r+)2- P( A r-)2
P( A l+)adalah proporsi titik data dari subset kiri
yang memiliki nilai
c + dalam variabel kelas, dll.
SEBUAHc+
Sekarang formula final untuk GiniGain adalah
mana p l e f t adalah proporsi dari instance untuk subset kiri, atau # | A l |
G i n i G a i n ( A ) = I( A ) - hall e ftsaya( A l ) - halr i gjam tsaya(Ar)
pleft(berapa banyak contoh yang di bagian kiri dibagi dengan jumlah total kasus dari
A.
#|Al|#|Al|+#|Ar|A
Saya merasa notasi saya dapat ditingkatkan, saya akan menonton nanti ketika saya akan memiliki lebih banyak waktu.
Kesimpulan
Hanya menggunakan jumlah titik data saja tidak cukup, pengotor berarti seberapa baik satu fitur (fitur uji) dapat mereproduksi distribusi fitur lain (fitur kelas). Distribusi fitur tes menghasilkan angka yang Anda gunakan (cara ke kiri, cara ke kanan), tetapi distribusi fitur kelas tidak digunakan dalam rumus Anda.
Kemudian edit - cari alasannya berkurang
Sekarang saya perhatikan bahwa saya melewatkan bagian yang membuktikan mengapa selalu indeks gini pada simpul anak kurang dari pada simpul orangtua. Saya tidak memiliki proove lengkap atau yang diverifikasi, tetapi saya pikir itu adalah bukti yang valid. Untuk hal campur tangan lain yang terkait dengan topik Anda dapat memeriksa Catatan Teknis: Beberapa Properti Kriteria Membelah - Leo Breiman . Sekarang akan mengikuti bukti saya.
(a,b)ab(a,b)
Untuk menemukan pemecahan terbaik, kami mengurutkan instance berdasarkan dengan fitur tes dan kami mencoba semua pemecahan biner yang mungkin. Diurutkan berdasarkan fitur yang diberikan sebenarnya adalah permutasi dari instance, di mana kelas dimulai dengan instance dari kelas pertama atau dari kelas kedua. Tanpa menghilangkan sifat umum, kita akan mengira bahwa itu dimulai dengan turunan dari kelas pertama (jika ini bukan masalahnya, kita memiliki bukti cermin dengan perhitungan yang sama).
(1,0)(a−1,b)h(left)=1−(1/1)2−(0/1)2=0. Jadi di sisi kiri kita memiliki nilai indeks gini yang lebih kecil. Bagaimana dengan simpul yang benar?
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.