Skip to article frontmatterSkip to article content

Approches non linéaires

Authors
Affiliations
University of Lyon
University of Lyon

Techniques d’échantillonnage et d’ensemble

Bootstrap / Bagging

Concept

Le Bagging (Bootstrap Aggregating) crée plusieurs modèles en échantillonnant avec remplacement l’ensemble de données original, puis agrège leurs prédictions pour améliorer la stabilité et la précision.

randomforest

Fonctionnement

Si nous avons un ensemble de données D={(x1,y1),(x2,y2),...,(xn,yn)}D = \{(x_1, y_1), (x_2, y_2), ..., (x_n, y_n)\}, le bagging crée mm échantillons bootstrap D1,D2,...,DmD_1, D_2, ..., D_m en tirant nn exemples avec remplacement de DD. Un modèle fif_i est construit sur chaque échantillon DiD_i. La prédiction finale est:

Pour la régression:

fbag(x)=1mi=1mfi(x)f_{bag}(x) = \frac{1}{m} \sum_{i=1}^{m} f_i(x)

Pour la classification:

fbag(x)=mode{f1(x),f2(x),...,fm(x)}f_{bag}(x) = \text{mode}\{f_1(x), f_2(x), ..., f_m(x)\}

Avantages

  • Réduit la variance sans augmenter le biais
  • Parallélisable (chaque modèle peut être entraîné indépendamment)
  • Efficace contre le surapprentissage

Inconvénients

  • Ne réduit pas le biais des modèles sous-jacents
  • Perte d’interprétabilité
  • Coût computationnel plus élevé que les modèles individuels

Boosting

Concept

Le Boosting construit séquentiellement des modèles où chaque nouveau modèle tente de corriger les erreurs des modèles précédents, donnant plus de poids aux exemples mal classifiés.

Fonctionnement

Pour un problème de classification binaire y{1,1}y \in \{-1, 1\}, avec des classificateurs faibles hth_t, le boosting fonctionne ainsi:

Initialisation: D1(i)=1nD_1(i) = \frac{1}{n} pour tout ii

Pour t=1,2,...,Tt = 1, 2, ..., T:

  1. Entraîner un classificateur faible hth_t sur la distribution DtD_t
  2. Calculer l’erreur pondérée: ϵt=i=1nDt(i)1(ht(xi)yi)\epsilon_t = \sum_{i=1}^{n} D_t(i) \mathbb{1}(h_t(x_i) \neq y_i)
  3. Calculer le poids du modèle: αt=12ln(1ϵtϵt)\alpha_t = \frac{1}{2} \ln(\frac{1-\epsilon_t}{\epsilon_t})
  4. Mettre à jour la distribution: Dt+1(i)=Dt(i)exp(αtyiht(xi))ZtD_{t+1}(i) = \frac{D_t(i) \exp(-\alpha_t y_i h_t(x_i))}{Z_t}ZtZ_t est un facteur de normalisation

Le classificateur final est:

H(x)=sign(t=1Tαtht(x))H(x) = \text{sign}\left(\sum_{t=1}^{T} \alpha_t h_t(x)\right)

Avantages

  • Réduit à la fois le biais et la variance
  • Peut créer un modèle fort à partir de classificateurs faibles
  • Très performant sur une grande variété de problèmes

Inconvénients

  • Sensible aux valeurs aberrantes et au bruit
  • Risque de surapprentissage si trop d’itérations
  • Pas facilement parallélisable (nature séquentielle)

Algorithmes non linéaires

Arbres de décisions

Concept général

Un arbre de décision est un modèle qui prédit la valeur d’une variable cible en apprenant des règles de décision simples déduites des caractéristiques des données.

decisiontree

Fonctionnement

Pour construire un arbre, on sélectionne à chaque nœud la caractéristique qui maximise le gain d’information (ou minimise l’impureté). Pour la classification, on utilise généralement l’entropie ou l’indice de Gini:

Entropie:

H(S)=i=1cpilog2(pi)H(S) = -\sum_{i=1}^{c} p_i \log_2(p_i)

Indice de Gini:

G(S)=1i=1cpi2G(S) = 1 - \sum_{i=1}^{c} p_i^2

pip_i est la proportion d’éléments de classe ii dans l’ensemble SS.

Le gain d’information est calculé par:

IG(S,A)=H(S)vValues(A)SvSH(Sv)IG(S, A) = H(S) - \sum_{v \in Values(A)} \frac{|S_v|}{|S|} H(S_v)

SvS_v est le sous-ensemble où l’attribut AA a la valeur vv.

Avantages

  • Facile à comprendre et à interpréter
  • Nécessite peu de préparation des données
  • Peut gérer des variables numériques et catégorielles

Inconvénients

  • Tendance à créer des arbres trop complexes (surapprentissage)
  • Instabilité (petits changements dans les données peuvent entraîner un arbre très différent)
  • Performance limitée sur certains problèmes complexes

Forêts Aléatoires

Concept

Une forêt aléatoire combine le principe du bagging avec une sélection aléatoire de caractéristiques à chaque nœud, créant ainsi un ensemble d’arbres de décision diversifiés.

Fonctionnement

Une forêt aléatoire construit BB arbres de décision {T1,T2,...,TB}\{T_1, T_2, ..., T_B\} sur des échantillons bootstrap. À chaque nœud, au lieu de considérer toutes les pp caractéristiques, on n’en considère qu’un sous-ensemble m<pm < p choisi aléatoirement.

La prédiction finale est:

Pour la régression:

fRF(x)=1Bb=1BTb(x)f_{RF}(x) = \frac{1}{B} \sum_{b=1}^{B} T_b(x)

Pour la classification:

fRF(x)=mode{T1(x),T2(x),...,TB(x)}f_{RF}(x) = \text{mode}\{T_1(x), T_2(x), ..., T_B(x)\}

Pour évaluer l’importance des variables, on peut utiliser la diminution moyenne de l’impureté (MDI):

Imp(Xj)=1Bb=1BtTb:v(t)=jp(t)Δi(t)Imp(X_j) = \frac{1}{B} \sum_{b=1}^{B} \sum_{t \in T_b: v(t)=j} p(t) \Delta i(t)

v(t)v(t) est la variable utilisée pour la division au nœud tt, p(t)p(t) est la proportion d’échantillons atteignant tt, et Δi(t)\Delta i(t) est la diminution d’impureté.

Avantages

  • Performance supérieure à celle des arbres individuels
  • Robustesse au surapprentissage
  • Gère efficacement les grandes dimensions et les données manquantes

Inconvénients

  • Moins interprétable qu’un arbre de décision unique
  • Coût computationnel et de mémoire élevé
  • Difficulté à modéliser certaines relations linéaires simples

AdaBoost

Concept

AdaBoost (Adaptive Boosting) est un algorithme de boosting qui ajuste les poids des exemples mal classifiés à chaque itération et combine des classificateurs faibles en un classificateur fort.

Pipeline of model training

Fonctionnement

AdaBoost fonctionne comme suit:

Initialisation: wi(1)=1nw_i^{(1)} = \frac{1}{n} pour i=1,2,...,ni = 1, 2, ..., n

Pour t=1,2,...,Tt = 1, 2, ..., T:

  1. Entraîner un classificateur faible hth_t en utilisant les poids wi(t)w_i^{(t)}
  2. Calculer l’erreur pondérée: ϵt=i=1nwi(t)1(ht(xi)yi)\epsilon_t = \sum_{i=1}^{n} w_i^{(t)} \mathbb{1}(h_t(x_i) \neq y_i)
  3. Calculer le coefficient: αt=12ln(1ϵtϵt)\alpha_t = \frac{1}{2} \ln(\frac{1-\epsilon_t}{\epsilon_t})
  4. Mettre à jour les poids: wi(t+1)=wi(t)exp(αtyiht(xi))w_i^{(t+1)} = w_i^{(t)} \exp(-\alpha_t y_i h_t(x_i))
  5. Normaliser: wi(t+1)=wi(t+1)j=1nwj(t+1)w_i^{(t+1)} = \frac{w_i^{(t+1)}}{\sum_{j=1}^{n} w_j^{(t+1)}}

Le classificateur final est:

H(x)=sign(t=1Tαtht(x))H(x) = \text{sign}\left(\sum_{t=1}^{T} \alpha_t h_t(x)\right)

Avantages

  • Simple à implémenter
  • Bonne performance sur de nombreux jeux de données
  • S’adapte automatiquement à l’importance relative des caractéristiques

Inconvénients

  • Sensible aux valeurs aberrantes et au bruit
  • Peut être surpassé par d’autres algorithmes de boosting (comme XGBoost)
  • Peut conduire au surapprentissage sur des données bruitées