Algorithme CHAID pour les arbres de décision

Contenu

L'arborescence commence par le nœud racine constitué des données complètes et, ensuite, utiliser des stratégies intelligentes pour diviser les nœuds en plusieurs branches.

L'ensemble de données d'origine a été divisé en sous-ensembles dans ce processus.

Pour répondre à la question fondamentale, ton cerveau inconscient fait des calculs (à la lumière des exemples de questions enregistrés ci-dessous) et finit par acheter la quantité de lait nécessaire. Est-ce normal ou en semaine?

Les jours ouvrables, nous exigeons 1 litre de lait.

C'est un week-end? Le week-end, nous avons besoin 1,5 litres de lait.

Est-il exact de dire que nous attendons des invités aujourd'hui? Nous avons besoin d'acheter 250 ML de lait supplémentaire pour chaque invité, et ainsi de suite.

Avant de sauter à l'idée hypothétique des arbres de décision, Et si nous expliquions dans un premier temps quels sont les arbres de décision? C'est plus, Pourquoi serait-ce une bonne idée pour nous de les utiliser?

Pourquoi utiliser des arbres de décision?

Entre autres méthodes d'apprentissage supervisé, les algorithmes arborescents excellent. Ce sont des modèles prédictifs avec une plus grande précision et une compréhension simple.

Comment fonctionne l'arbre de décision?

Il existe différents algorithmes écrits pour assembler un arbre de décision, qui peut être utilisé pour le problème.

Certains des algorithmes les plus couramment utilisés sont répertoriés ci-dessous:

• CHARIOT

• ID3

• C4.5

• CHAID

Nous allons maintenant expliquer l'algorithme CHAID étape par étape. Avant que, on va parler un peu de chi_square.

chi_carré

Le chi carré est une mesure statistique pour trouver la différence entre les nœuds secondaires et principaux. Pour calculer cela, nous trouvons la différence entre les comptes observés et attendus de la variable cible pour chaque nœud et la somme au carré de ces différences standardisées nous donnera la valeur du Chi-deux.

Formule

Pour trouver la caractéristique la plus dominante, les tests du chi carré utiliseront ce qui est aussi appelé CHAID, tandis que ID3 utilise le gain d'informations, C4.5 utilise le rapport de gain et CART utilise l'indice GINI.

Aujourd'hui, la plupart des bibliothèques de programmation (par exemple, Pandas pour Python) utiliser la métrique de Pearson pour la corrélation par défaut.

La formule du chi carré: –

√ ((Oui – et ')2 / et ')

où y est réel et attendu et '.

Base de données

Nous allons construire des règles de décision pour l'ensemble de données suivant. La colonne de décision est la cible que nous aimerions trouver en fonction de certaines caractéristiques.

D'ailleurs, nous allons ignorer la colonne du jour car ce n'est que le numéro de ligne.

73416capture d

pour lire l'ensemble de données d'implémentation Python à partir du fichier CSV ci-dessous: –

importer des pandas au format pd
données = pd.read_csv("jeu de données.csv")

data.head()

Nous devons trouver la caractéristique la plus importante dans les colonnes cibles pour choisir le nœud pour diviser les données dans cet ensemble de données.

Caractéristique d'humidité

Il existe deux types de la classe présente dans les colonnes d'humidité: grand et normal. Nous allons maintenant calculer les valeurs du chi_carré pour eux.

Oui Non Total Attendu Chi carré Oui Khi deux Non
Haute 3 4 7 3,5 0,267 0,267
bas 6 1 7 3,5 1.336 1.336

pour chaque ligne, la colonne total est la somme des décisions oui et non. La moitié de la colonne totale est appelée valeurs attendues parce qu'il y a 2 classes en décision. Il est facile de calculer les valeurs du Khi deux sur la base de ce tableau..

Par exemple,

chi carré oui pour une humidité élevée est √ ((3– 3,5)2 / 3,5) = 0,267

alors que le vrai est 3 et l'attendu est 3,5.

Ensuite, la valeur du khi carré de la caractéristique d'humidité est

= 0,267 + 0,267 + 1,336 + 1,336

= 3.207

À présent, on trouvera aussi des valeurs du chi carré pour d'autres caractéristiques. La caractéristique avec la valeur maximale du chi carré sera le point de décision. Qu'en est-il de la fonction vent?

Caractéristique du vent

Il existe deux types de classe présents dans les colonnes de vent: faible et fort. Le tableau suivant est le tableau suivant.

91463capture d

Ici, la valeur d'essai du khi carré de la caractéristique du vent est

= 0,802 + 0,802 + 0 + 0

= 1,604

Il s'agit également d'une valeur inférieure à la valeur du chi carré de l'humidité. Qu'en est-il de la fonction température?

caractéristique de température

Il existe trois types de classe présents dans les colonnes de température: chaud, froid et lisse. Le tableau suivant est le tableau suivant.

49998capture d

Ici, la valeur d'essai du khi carré de la caractéristique de température est

= 0 + 0 + 0,577 + 0,577 + 0,707 + 0,707

= 2.569

Il s'agit d'une valeur inférieure à la valeur du chi carré de l'humidité et également supérieure à la valeur du chi_carré du vent. Qu'en est-il de la fonction Outlook?

Fonctionnalité Outlook

Il existe trois types de classes présentes dans les colonnes de température: ensoleillé, pluvieux et nuageux. Le tableau suivant est le tableau suivant.

72011capture d

Ici, la valeur du test du chi carré de la fonction de perspective est

= 0,316 + 0,316 + 1,414 + 1,414 + 0,316 + 0,316

= 4.092

Nous avons calculé les valeurs du chi carré de toutes les caractéristiques. Voyons-les tous à une table.

35775capture d

Comme on le voit, la colonne Outlook a la valeur chi-carré la plus élevée et la plus élevée. Cela implique que c'est la caractéristique principale du composant. Parallèlement à ces valeurs, nous allons placer cette fonctionnalité dans le nœud racine.

47825capture d

Nous avons séparé les informations brutes en fonction des classes Outlook dans l'illustration ci-dessus. Par exemple, la branche assombrie a simplement une décision affirmative sur l'ensemble de données de sous-information. Cela implique que l'arbre CHAID retourne OUI si le panorama est nuageux.

Les branches ensoleillées et pluvieuses ont des décisions oui et non. Nous appliquerons des tests du chi carré pour ces ensembles de données sous-informatives.

Outlook = branche ensoleillée

Cette branche a 5 exemples. Actuellement, nous recherchons la caractéristique la plus prédominante. D'ailleurs, nous allons ignorer la fonction Outlook maintenant, car ils sont tout à fait les mêmes. A la fin de la journee, nous trouverons les colonnes les plus prédominantes entre la température, humidité et vent.

33074capture d

Fonction d'humidité pour quand le panorama est ensoleillé

50266capture d

La valeur du khi carré de la caractéristique d'humidité pour une perspective ensoleillée est

= 1,225 + 1,225 + 1 + 1

= 4.449

Fonction vent lorsque le panorama est ensoleillé

81090capture d

La valeur du khi carré de la caractéristique du vent pour une perspective ensoleillée est

= 0,408 + 0,408 + 0 + 0

= 0,816

Fonction température lorsque le panorama est ensoleillé

70847capture d

Ensuite, la valeur du khi carré de la caractéristique de température pour la perspective ensoleillée est

= 1 + 1 + 0 + 0 + 0,707 + 0,707

= 3.414

Nous avons trouvé des valeurs de chi carré pour la perspective ensoleillée. Voyons-les tous à une table.

38365capture d

Actuellement, l'humidité est la caractéristique la plus prédominante de la branche ensoleillée du belvédère. Nous mettrons cette caractéristique en règle de décision.

96005capture d

Actuellement, les deux branches d'humidité pour une perspective ensoleillée n'ont qu'une seule décision comme indiqué ci-dessus. L'arbre CHAID retournera NON pour une perspective ensoleillée et une humidité élevée et retournera OUI pour une perspective ensoleillée et une humidité normale.

Branche perspective pluie

En réalité, cette branche a à la fois des décisions positives et négatives. Nous devons appliquer le test du chi carré pour cette branche pour trouver une décision précise. Cette branche a 5 différentes instances, comme démontré dans l'ensemble de données de collecte de sous-informations ci-joint. Que diriez-vous de découvrir la caractéristique la plus prédominante entre la température, humidité et vent?

18553capture d

Fonction vent pour les prévisions de pluie

Il existe deux types d'une classe présente dans la caractéristique du vent pour la perspective de la pluie: faible et fort.

28165capture d

Ensuite, la valeur du khi carré de la caractéristique du vent pour la perspective de la pluie est

= 1,225 + 1,225 + 1 + 1

= 4.449

Fonction d'humidité pour les prévisions de pluie

Il existe deux types de classes présentes dans la caractéristique d'humidité pour la perspective de la pluie: grand et normal.

95294capture d

La valeur du chi carré de la caractéristique d'humidité pour la perspective de la pluie est

= 0 + 0 + 0.408 + 0.408

= 0,816

Caractéristique de température pour les prévisions de pluie

Il existe deux types de classes présentes dans les caractéristiques de température pour la perspective de pluie, comme chaud et frais.

71686capture d

La valeur du khi carré de la caractéristique de température pour la perspective de la pluie est

= 0 + 0 + 0.408 + 0.408

= 0,816

Nous avons constaté que toutes les valeurs du chi carré pour la pluie sont la branche perspective. Voyons-les tous à une table.

57121capture d

Donc, la fonction vent est la gagnante de la pluie est la branche de la perspective. Placez cette colonne dans la branche connectée et affichez le jeu de données sous-informatif correspondant.

44631capture d

Comme on le voit, toutes les branches ont des ensembles de données sous-informatives avec une seule décision, comme oui ou non. De cette manière, nous pouvons générer l'arbre CHAID comme illustré ci-dessous.

38808capture d

La forme finale de l'arbre CHAID.

Implémentation Python d'un arbre de décision à l'aide de CHAID

de chefboost importer Chefboost en tant que cb
importer des pandas au format pd
données = pd.read_csv("/accueil/kajal/Téléchargements/météo.csv")
data.head()
79402capture d
configuration = {"algorithme": "CHAID"}

arbre = cb.fit(Les données, configuration)

arbre

89872capture d
# instance_test = ['ensoleillé','chaud','haute','faible','non']
instance_test = data.iloc[2]

instance_test
94699capture d
cb.predict(arbre,instance_test)

sortir:- 'Oui'

#obj[0]: perspectives, obj[1]: Température, obj[2]: humidité, obj[3]: venteux
# {"caractéristique": "perspectives", "instances": 14, "valeur_métrique": 4.0933, "profondeur": 1}

def findDécision(obj): 
          si obj[0] == 'pluie':
          # {"caractéristique": " venteux", "instances": 5, "valeur_métrique": 4.4495, "profondeur": 2}
                  si obj[3] == 'faible':
                         return 'yes'
                  elif obj[3] == 'fort':
                         return 'no'
                  else:
                          return 'no'
          elif obj[0] == 'ensoleillé':
           # {"caractéristique": " humidité", "instances": 5, "valeur_métrique": 4.4495, "profondeur": 2}
                 si obj[2] == 'haut':
                        return 'no'
                 elif obj[2] == 'normal':
                         return 'yes'
                 else:
                         return 'yes'
         elif obj[0] == 'couvert':
                      return 'yes'
         else:
                    retourner 'oui'

conclusion

Donc, nous avons créé un arbre de décision CHAID de A à Z sur ce post. CHAID utilise une métrique de mesure du chi carré pour découvrir la caractéristique la plus importante et l'appliquer de manière récursive jusqu'à ce que les ensembles de données sous-informatifs aient une seule décision. Bien qu'il s'agisse d'un algorithme d'arbre de décision hérité, c'est toujours le même procédé pour trier les problèmes.

Les médias présentés dans cet article ne sont pas la propriété de DataPeaker et sont utilisés à la discrétion de l'auteur.

Abonnez-vous à notre newsletter

Nous ne vous enverrons pas de courrier SPAM. Nous le détestons autant que vous.