Japprends à connaître les arbres de décision, et jai limpression que jusquà présent, je les ai compris et les mathématiques derrière eux assez bien sauf pour une chose: le rapport de gain.
Si je comprends bien, le rapport de gain est implémenté afin de punir les fonctionnalités qui peuvent prendre BEAUCOUP de valeurs possibles.
Si une fonctionnalité prend beaucoup de valeurs possibles, il devient plausible que si nous nous divisons sur cette fonctionnalité, il peut y avoir des valeurs qui ne pointent que vers une seule classe, mais simplement parce quil ny a que 1 ou 2 données points avec cette valeur pour cette fonctionnalité de toute façon.
En dautres termes, la seule raison pour laquelle nous obtiendrions une faible entropie pour le fractionnement de cette fonctionnalité est que la fonctionnalité pourrait prendre beaucoup de valeurs, et donc beaucoup de ces valeurs pointaient spécifiquement vers une seule étiquette . Ainsi, notre algorithme darbre de décision finirait par se diviser sur quelque chose comme « ID # », et calculer à tort que nous venons davoir un énorme gain dinformations.
Cependant, cela ne semble être un problème que parce que « ID # » est une fonctionnalité sur laquelle nous ne devrions pas nous séparer pour commencer. Je veux dire, si nous avions une autre fonctionnalité qui prenait également beaucoup de possibilités valeurs, mais chacune de ces valeurs a en fait impliquer une étiquette pour ce point de données, alors lapplication du rapport de gain ne signifierait-elle pas que nous gâchons réellement notre arbre de décision en punissant ce qui était en fait une très bonne division avec des tonnes de gain dinformations?
N « est-il pas préférable d » identifier simplement quelle fonctionnalité n « aura rien à voir avec notre étiquetage AVANT de fournir les données de formation à l » algorithme?
IDK, je ne « t voyez pourquoi le rapport de gain serait vraiment utile …
Réponse
Javais le même doute quand je faisais mon Master Degré. Tout dabord, vous nincluez pas quelque chose daussi aléatoire que les « ID ». Cest là que le prétraitement des données entre en jeu. Prenons un ensemble de données qui présente les utilisateurs et leurs préférences de genre de film en fonction de variables telles que le sexe, le groupe dâge, la note, bla, bla. Avec laide du gain dinformations, vous divisez en « Sexe « (en supposant quil a le gain dinformation le plus élevé) et maintenant les variables » Groupe dâge « et » Note « pourraient être tout aussi importantes et avec laide du taux de gain, cela pénalisera une variable avec des valeurs plus distinctes qui nous aideront à décider du divisé au niveau suivant.
Commentaires
- OKaaaay, génial! Nous nutilisons donc le rapport de gain que lorsque nous sommes entre deux fractionnements sur deux fonctionnalités différentes possibles Est-ce dans lordre de choisir celui pour lequel les données de test ont le plus de chances davoir une valeur précédemment vue, parce que cest lambiance que je recevais de lexemple didentification, la raison pour laquelle cest une mauvaise division, il avait une si grande chance de prendre sur des valeurs différentes (dans ce cas, aucune autre personne naura le même identifiant).
- Cela a BEAUCOUP plus de sens . Toutes les explications que jai ' lues utilisent des identifiants et cela continue de me faire penser à pourquoi quelquun a cela dans un ensemble de données en premier lieu? !!!! Merci Danny! Je ' jaime votre message mais je nai ' pas encore assez de réputation.
Réponse
Le gain dinformation est lune des heuristiques qui aide à sélectionner les attributs pour la sélection.
Comme vous le savez, les arbres de décision un sommet construit -down récursif de manière diviser et conquérir. Les exemples sont fractionnés de manière récursive en fonction des attributs sélectionnés.
Dans les algorithmes ID3, nous sélectionnons les attributs avec le gain dinformation le plus élevé.
Soit $ p_i $ la probabilité que un tuple arbitraire dans $ D $ appartient à la classe $ C_i $ . Donc $ p_i = | C_ {i, d} | / | D | $ Informations attendues (entropie) nécessaires pour classer un tuple dans $ D $ $$ Info (D) = – \ sum_ {i = 1} ^ {m} {p_i * \ log (p_i)} $$
Informations nécessaires (après avoir utilisé A pour diviser D en v portions) pour classer D: $$ Info_A (D) = – \ sum_ {j = 1} ^ {v} {D_j / D * Info_j (D)} $$
Informations obtenues par branchement sur lattribut A
$$ Gain (A) = Info (D) – Info_A (D) $$
Dans lalgorithme C4.5, nous devons diviser la différence dinformations par $ SplitInfo (A) $
$$ Gain (A) = (Info (D) – Info_A (D)) / SplitInfo (A) $$