Vous n'avez tout simplement pas utilisé du tout la variable de classe cible. L'impureté de Gini, comme toutes les autres fonctions d'impureté, mesure l'impureté des sorties après une séparation. Ce que vous avez fait, c'est mesurer quelque chose en utilisant uniquement la taille de l'échantillon.
J'essaie de dériver la formule de votre cas.
Supposons pour plus de simplicité que vous ayez un classificateur binaire. Notons avec l'attribut de test, avec l'attribut de classe qui ont des valeurs .C c + , c -UNECc+, c-
L'index de Gini initial avant la division est donné par
où est la proportion de points de données qui ont une valeur pour la classe variable. P ( A + ) c +
je( A ) = 1 - P( A+)2- P( A-)2
P( A+)c+
Maintenant, l'impureté pour le nœud gauche serait
où est la proportion de points de données du sous-ensemble gauche de qui ont la valeur dans la variable de classe, etc. I ( A r ) = 1 - P ( A r + ) 2 - P ( A r - ) 2 P ( A l + ) A c +
je( A l ) = 1 - P( A l+)2- P( A l-)2
je( A r ) = 1 - P( A r+)2- P( A r-)2
P( A l+)UNEc+
Maintenant, la formule finale pour GiniGain serait
G i n i G a i n ( A ) = I( A ) - pl e ftje( A l ) - pr i gh tje( A r )
où est la proportion d'instances pour le sous-ensemble gauche, ou (nombre d' instances en partie gauche divisé par le nombre total de cas de .
pl e ft# | A l |# | A l | + # | A r |UNE
Je sens que ma notation pourrait être améliorée, je regarderai plus tard quand j'aurai plus de temps.
Conclusion
L'utilisation d'un nombre limité de points de données n'est pas suffisante, l'impureté signifie à quel point une entité (entité de test) est capable de reproduire la distribution d'une autre entité (entité de classe). La distribution des fonctionnalités de test produit le nombre que vous avez utilisé (comment à gauche, comment à droite), mais la distribution de la fonctionnalité de classe n'est pas utilisée dans vos formules.
Édition ultérieure - prouver pourquoi il diminue
Maintenant, j'ai remarqué que j'ai raté la partie, ce qui prouve pourquoi l'index gini du nœud enfant est toujours inférieur à celui du nœud parent. Je n'ai pas de preuve complète ou vérifiée, mais je pense que c'est une preuve valide. Pour d'autres choses intéressantes liées au sujet, vous pouvez consulter la note technique: Certaines propriétés des critères de fractionnement - Leo Breiman . Maintenant, il suivra ma preuve.
Supposons que nous soyons dans le cas binaire, et toutes les valeurs d'un nœud pourraient être complètement décrites par une paire avec la signification d' instance de la première classe et de instances de la deuxième classe. Nous pouvons dire que dans le nœud parent que nous avons( a , b )uneb( a , b ) instances.
Afin de trouver le meilleur fractionnement, nous trions les instances selon une fonctionnalité de test et nous essayons tous les fractionnements binaires possibles. Trié par une caractéristique donnée est en fait une permutation d'instances, dans laquelle les classes commencent par une instance de la première classe ou de la deuxième classe. Sans perdre la généralité, nous supposerons qu'elle commence par une instance de la première classe (si ce n'est pas le cas nous avons une preuve miroir avec le même calcul).
La première division à essayer est dans les instances gauche et droite . Comment l'index gini de ces candidats possibles pour les nœuds enfants gauche et droit est comparé au nœud parent? Évidemment, à gauche, nous avons . Donc, sur le côté gauche, nous avons une valeur d'indice de Gini plus petite. Et le bon nœud?( 1 , 0 )( a - 1 , b )h ( l e ft ) = 1 - ( 1 / 1 )2- ( 0 / 1 )2= 0
h ( p a r e n t ) = 1 - ( aa + b)2- ( ba + b)2
h ( r i gh t ) = 1 - ( a - 1( a - 1 ) + b)2- ( b( a - 1 ) + b)2
Considérant que est supérieur ou égal à (car sinon comment pourrions-nous séparer une instance de la première classe dans le nœud gauche?) Et après simplification, il est simple de voir que l'index gini pour le nœud droit a une valeur plus petite que pour le nœud parent.une0
Maintenant, la dernière étape de la preuve consiste à nouer que, tout en considérant tous les points de partage possibles dictés par les données que nous avons, nous gardons celui qui a le plus petit indice de Gini agrégé, ce qui signifie que l'optimum que nous choisissons est inférieur ou égal au trivial que j'ai prouvé qui est plus petit. Ce qui conclut qu'à la fin l'indice de Gini va diminuer.
En conclusion finale, nous devons noter que même si diverses divisions peuvent donner des valeurs plus grandes que le nœud parent, celle que nous choisissons sera la plus petite d'entre elles et également plus petite que la valeur d'index gini parent.
J'espère que cela aide.