Classification et Arbres de décisions

Programmation pour l’IA

Florent Capelli

Université d’Artois, CRIL

Problème de classification

Exemples

spam
pas spam

Données : texte.

Chat
Tigre

Données : images.

Rond
Carré
Triangle

Données : liste de points.

Âge Métier Revenus Crédit initial Taux Durée Accorder un crédit ?
32 Agent immobilier 45k€ 100k€ 2.5% 15 non
45 Enseignant 30k€ 150k€ 1.5% 15 oui
52 Électricien 40k€ 100k€ 2.5% 25 oui

Données : table.

Classification

On veut classer des objets \(o \in \mathcal{O}\) dans des classes \(\mathcal{C}= \{c_1,\dots,c_k\}\).

Par défaut : on cherche à associer chaque objet \(o\) à une unique classe \(f(o) = c_i\).

Modélisation

On suppose donc l’existence (théorique) des distributions de probabilité suivantes :

Classification idéale ?

On note \(P(c | o) = P(o,c)/P(o)\) la probabilité de classer l’objet \(o\) dans la classe \(c\). Comment définir \(f(o)\) qui classe “idéalement” ?

La règle de Bayes semble être la plus raisonnable (on verra que c’est le cas).

Représentation

Nous n’accédons qu’à une représentation \(r(o)\) des objets \(o \in \mathcal{O}\) à classer.

On a une erreur incompressible due au choix de la représentation. Deux objets peuvent avoir la même représentation mais pas la même classe :

Âge Métier Revenus Crédit initial Taux Durée A remboursé son crédit ?
32 Agent immobilier 45k€ 100k€ 2.5% 15 oui
32 Agent immobilier 45k€ 100k€ 2.5% 15 non

Classification \(\neq\) Régression

Classification
Classification
Régression
Régression

Comment classifier ?

On a une représentation \(x=r(o)\) de nos objects et on cherche une fonction \(f\) telle que \(f(x)\) est la classe la plus probable de \(o\). Comment implémenter \(f\)?

Extrait d’un livret du projet Botascopia

Classification des plantes :

  • clé d’identification
  • établie par des botanistes.

On utilise une connaissance experte.

Rond
Carré
Triangle

$1-classifier (voir TP1): hard-code une heuristique suffisamment performante.

On apprend un modèle permettant à partir d’exemples :

  • On cherche une fonction de la forme \(f(o;w_1,\dots,w_k)\).
  • On cherche les meilleurs paramètres \(w_1,\dots,w_k\) qui séparent les exemples.
  • On vérifie sur des données tests que \(f(o;w_1,\dots,w_k)\) généralise bien.

Arbres de décision

Exemple

l P Poids < 500 Poivron1 Poivron P->Poivron1 oui Chou Chou P->Chou non T Taille < 15 Poivron2 Poivron T->Poivron2 oui Banane Banane T->Banane non Q diamQueue > 0.2 Poivron3 Poivron Q->Poivron3 oui Pomme Pomme Q->Pomme non PV couleur = jaune PV->T oui PV->Q non V couleur = vert V->P oui V->PV non

{"couleur": "jaune", "poids": "200g", "taille": "17cm"}

{"couleur": "vert", "poids": "750g", "taille": "20cm"}

Construction

Quelle est la meilleure question ?

Fonctions de mélange

On note \(D_c \subseteq D\) est l’ensemble des exemples de classe \(c \in C\):

Dans le cas où on a juste deux classes:

Entroy
Gini

Gain

Si \(F\) est une fonction de mélange et Q une question séparant l’ensemble de données en \(D^Q_0\) (où \(Q\) est fausse) et \(D^Q_1\) (où \(Q\) est vraie) alors le gain est :

\[gain(D,Q) = F(D) - (|D^Q_0|/|D|) F(D^Q_0) - (|D^Q_1|/|D|) F(D^Q_1)\]

Exemple

\(gini(D) = 1/2\)

x y classe
1 6 oui
1 4 non
2 5 oui
4 8 non
6 5 oui
7 2 non

Question: \(x < 4\).

  • \(gini(D_0) = 1-(2/3)^2 - (1/3)^2 = 4/9\)
  • \(gini(D_1) = 1-(2/3)^2 - (1/3)^2 = 4/9\)
  • \(gain(Q_1) = (1/2) - (3/6) \times (4/9) - (3/6) \times (4/9) = -5/18\)

Question: \(y< 5\).

  • \(gini(D_0) = 1-(3/4)^2 - (1/4)^2 = 3/8\)
  • \(gini(D_1) = 1-1^2 - 0^2 = 0\)
  • \(gain(Q_2) = (1/2) - (4/6) \times (3/8) - (2/6) \times 0 = 1/4\)

\(Q_2\) a un meilleur gain que \(Q_1\), on la choisit.

Exemple (cont.)

On fait une récursion sur chaque enfant :

l Q y < 5 D0 x y classe 1 6 oui 2 5 oui 4 8 non 6 5 oui Q->D0 non D1 x y classe 1 4 non 7 2 non Q->D1 oui
l Q y < 5 D0 y < 7 Q->D0 non D1 non Q->D1 oui non non D0->non non oui oui D0->oui oui

Défis

+/- des arbres de décisions

Avantages

  • Rapides
  • Peu coûteux à entraîner.
  • Explicables : voir pyxai
    • Pourquoi l’objet a été classé ainsi ?
    • Trouver un objet “proche” classé autrement.
  • Peu découvrir des relations logiques entre les features.

Désavantages

  • Grande variance aux données d’entraînement, risque de surapprentissage.
  • Mauvais avec les évènements rares.
  • Ne teste pas de séparations linéaires; ne voit pas des relations polynomiales entre les features.
  • Ne marche pas avec les features ayant beaucoup de valeurs possible (e.g., code postaux).
  • Grande dimensions.

Aller plus loin