0% ont trouvé ce document utile (0 vote)
585 vues51 pages

Random Forest

Les forêts aléatoires sont un algorithme d'apprentissage automatique qui combine plusieurs arbres de décision pour améliorer la précision des prédictions en utilisant un vote majoritaire. Elles sont robustes face aux données aberrantes et réduisent le risque de surapprentissage, ce qui les rend adaptées à divers problèmes, y compris la classification et la régression. La présentation couvre leur fonctionnement, les avantages, et des exemples d'implémentation dans différents langages de programmation.

Transféré par

Fati Lamrani
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PPTX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
585 vues51 pages

Random Forest

Les forêts aléatoires sont un algorithme d'apprentissage automatique qui combine plusieurs arbres de décision pour améliorer la précision des prédictions en utilisant un vote majoritaire. Elles sont robustes face aux données aberrantes et réduisent le risque de surapprentissage, ce qui les rend adaptées à divers problèmes, y compris la classification et la régression. La présentation couvre leur fonctionnement, les avantages, et des exemples d'implémentation dans différents langages de programmation.

Transféré par

Fati Lamrani
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PPTX, PDF, TXT ou lisez en ligne sur Scribd

Présentation sur les forêts

aléatoires
Les forêts aléatoires sont un algorithme d'apprentissage
automatique puissant et flexible qui peut être utilisé pour une
variété de tâches de prédiction, y compris la classification et la
régression. Elles sont relativement faciles à mettre en œuvre
et sont souvent très précises. Dans cette présentation, nous
allons explorer ce qu'est une forêt aléatoire, quels sont ses
principaux avantages et comment elle fonctionne.
Plan de la Présentation:
1 Introduction

2 Fonctionnement d'une forêt aléatoire

3 Implémentation dans trois langages


R , Python , Julia

4 Comparaison des résultats


Les forêts
aléatoires
Tree 1 Tree 2 Tree n
(…)

(…)

Class 1 Class 2 … Class n

Majority voting

Result
Qu'est-ce qu'une forêt aléatoire ?
Une forêt aléatoire, en apprentissage automatique, L'idée est de créer une collection d'arbres de
est un algorithme d'ensemble qui combine plusieurs décision diversifiés, qui ne sont pas corrélés les uns
arbres de décision, chacun étant formé sur un sous- aux autres, et qui peuvent donc compenser les
ensemble aléatoire des données d'apprentissage. faiblesses de chaque arbre individuel. Cette
Chaque arbre de décision vote pour une prédiction, approche permet de réduire le risque de sur-
et la prédiction de la forêt est basée sur la majorité apprentissage et d'obtenir des prédictions plus
des votes. robustes.
Avantages des forêts aléatoires

Précision élevée Robustesse aux données aberrantes


Les forêts aléatoires sont souvent très précises Les forêts aléatoires sont relativement robustes
et peuvent atteindre des performances de aux données aberrantes car chaque arbre est
pointe dans de nombreux domaines, car elles construit sur un sous-ensemble aléatoire des
combinent les prédictions de nombreux arbres données, réduisant l'impact des données
de décision. aberrantes sur la prédiction finale.

Traitement des variables catégorielles Prévention du surapprentissage


Les forêts aléatoires peuvent gérer facilement En utilisant un sous-ensemble aléatoire des
les variables catégorielles, ce qui les rend caractéristiques pour construire chaque arbre,
adaptées à une large gamme de problèmes. les forêts aléatoires réduisent le risque de
surapprentissage, ce qui améliore la
généralisation aux nouvelles données.
Bootstrap Sampling : Le bootstrap sampling implique la création de plusieurs ensembles de
données d'apprentissage en tirant des échantillons aléatoires avec
remplacement à partir de l'ensemble de données original. Cela
permet de créer des arbres de décision différents.
Subset 1
: ID y
4 11 1 7 4 5 56 47 82 8 3,3 2,1 1
2 14 1 9 0 9 94 57 49 5,7 3,5 5,3 0
3 10 1 6 10 5 57 66 95 7 7,4 8 2
4 11 1 7 4 5 56 47 82 8 3,3 2,1 1
4 11 1 7 4 5 56 47 82 8 3,3 2,1 1
6 13 0 0 2 6 49 53 61 4,2 1 9 2
7 13 1 9 2 10 48 88 45 9,5 1,9 5 0
Bootstrap Sampling :

Subset 2
: ID y
6 13 0 0 2 6 49 53 61 4,2 1 9 2
2 14 1 9 0 9 94 57 49 5,7 3,5 5,3 0
4 11 1 7 4 5 56 47 82 8 3,3 2,1 1
7 13 1 9 2 10 48 88 45 9,5 1,9 5 0
7 13 1 9 2 10 48 88 45 9,5 1,9 5 0
3 10 1 6 10 5 57 66 95 7 7,4 8 2
7 13 1 9 2 10 48 88 45 9,5 1,9 5 0
Bootstrap Sampling :

Subset 3
: ID y
3 10 1 6 10 5 57 66 95 7 7,4 8 2
3 10 1 6 10 5 57 66 95 7 7,4 8 2
3 10 1 6 10 5 57 66 95 7 7,4 8 2
7 13 1 9 2 10 48 88 45 9,5 1,9 5 0
6 13 0 0 2 6 49 53 61 4,2 1 9 2
3 10 1 6 10 5 57 66 95 7 7,4 8 2
7 13 1 9 2 10 48 88 45 9,5 1,9 5 0
Bootstrap Sampling :

Subset 4
: ID y
4 11 1 7 4 5 56 47 82 8 3,3 2,1 1
6 13 0 0 2 6 49 53 61 4,2 1 9 2
3 10 1 6 10 5 57 66 95 7 7,4 8 2
7 13 1 9 2 10 48 88 45 9,5 1,9 5 0
4 11 1 7 4 5 56 47 82 8 3,3 2,1 1
6 13 0 0 2 6 49 53 61 4,2 1 9 2
3 10 1 6 10 5 57 66 95 7 7,4 8 2
Decision Tree 1

91 𝑥 9 <6 , 5

𝑐 𝑙𝑎𝑠𝑠 0 𝑐 𝑙𝑎𝑠𝑠 2 1 𝑐 𝑙𝑎𝑠𝑠 3


Decision Tree 2
𝑥 3< 4 ,5

𝑥 4 <7 ,5

Class 2 Class 0 Class 1 Class 3


Decision Tree 3

𝑥 3< 7 , 5

𝑥 2< 4 ,5 88

Class 0 Class 2 Class 1 Class 3


Decision Tree 4

𝑥 2< 4 ,5

𝑥7 < 4 ,5 𝑥7 < 4 ,5

Class 1 Class 0 Class 2 Class 2


𝑥 3< 4 ,5 𝑥 3< 4 ,5 𝑥 3< 5 , 5 𝑥 2< 4 ,5

𝑥 6 <91 𝑥 9 <5 𝑥 6 <94 𝑥 2< 6 , 5 𝑥7 < 4 ,5 𝑥7 < 4 ,5

𝑐 𝑙𝑎𝑠𝑠 0 𝑐 𝑙𝑎𝑠𝑠 2𝑐 𝑙𝑎𝑠𝑠 1 𝑐 𝑙𝑎𝑠𝑠 3 𝑐 𝑙𝑎𝑠𝑠 2 𝑐 𝑙𝑎𝑠𝑠 0𝑐 𝑙𝑎𝑠𝑠 1 𝑐 𝑙𝑎𝑠𝑠 3𝑐 𝑙𝑎𝑠𝑠 0 𝑐 𝑙𝑎𝑠𝑠 2𝑐 𝑙𝑎𝑠𝑠 1 𝑐 𝑙𝑎𝑠𝑠 3 Class 1 Class 0 Class 2 Class 2
𝑥 3< 4 ,5 𝑥 3< 4 ,5 𝑥 3< 5 , 5 𝑥 2< 4 ,5

𝑥 6 <91 𝑥 9 <5 𝑥 6 <94 𝑥 2< 6 , 5 𝑥7 < 4 ,5 𝑥7 < 4 ,5

𝑐 𝑙𝑎𝑠𝑠 0 𝑐 𝑙𝑎𝑠𝑠 2𝑐 𝑙𝑎𝑠𝑠 1 𝑐 𝑙𝑎𝑠𝑠 3 𝑐 𝑙𝑎𝑠𝑠 2 𝑐 𝑙𝑎𝑠𝑠 0𝑐 𝑙𝑎𝑠𝑠 1 𝑐 𝑙𝑎𝑠𝑠 3𝑐 𝑙𝑎𝑠𝑠 0 𝑐 𝑙𝑎𝑠𝑠 2𝑐 𝑙𝑎𝑠𝑠 1 𝑐 𝑙𝑎𝑠𝑠 3 Class 1 Class 0 Class 2 Class 2
[ 11 , 0 , 6 , 10 , 4 , 40 , 68 , 78 , 2.68 , 8.58 , 7.12]
𝑥𝑥𝑥 𝑥𝑥
012 3
𝑥
4 𝑥
5 𝑥
6 7𝑥 8 𝑥 9𝑥 10
7.12
[ 11 , 0 , 6 , 10 , 4 , 40 , 68 , 78 , 2.68 , 8.58 , 7.12]
𝑥𝑥𝑥 𝑥
001 𝑥12 𝑥𝑥
2 𝑥
3
3 4
𝑥
4 𝑥
5
5 𝑥 𝑥
6𝑥
6 7
7
𝑥 8
8
𝑥 9 𝑥10
9𝑥 10

𝑥 3< 4 ,5 𝑥 3< 4 ,5 𝑥 3< 5 , 5 𝑥 2< 4 ,5

𝑥 6 <91 𝑥 9 <5 𝑥 6 <94 𝑥 2< 6 , 5 52 𝑥7 < 97

𝑐 𝑙𝑎𝑠𝑠 0 𝑐 𝑙𝑎𝑠𝑠 2𝑐 𝑙𝑎𝑠𝑠 1 𝑐 𝑙𝑎𝑠𝑠 3 𝑐 𝑙𝑎𝑠𝑠 2 𝑐 𝑙𝑎𝑠𝑠 0𝑐 𝑙𝑎𝑠𝑠 1 𝑐 𝑙𝑎𝑠𝑠 3𝑐 𝑙𝑎𝑠𝑠 0 𝑐 𝑙𝑎𝑠𝑠 2𝑐 𝑙𝑎𝑠𝑠 1 𝑐 𝑙𝑎𝑠𝑠 3𝑐 𝑙𝑎𝑠𝑠 1 𝑐 𝑙𝑎𝑠𝑠 0𝑐 𝑙𝑎𝑠𝑠 2 𝑐 𝑙𝑎𝑠𝑠 2
7.12
[ 11 , 0 , 6 , 10 , 4 , 40 , 68 , 78 , 2.68 , 8.58 , 7.12]
𝑥𝑥𝑥 𝑥
001 𝑥12 𝑥𝑥
2 𝑥
3
3 4
𝑥
4 𝑥
5
5 𝑥 𝑥
6𝑥
6 7
7
𝑥 8
8
𝑥 9 𝑥10
9𝑥 10

𝑥 3< 4 ,5 𝑥 3< 4 ,5 𝑥 3< 5 , 5 𝑥 2< 4 ,5

𝑥 6 <91 𝑥 9 <5 𝑥 6 <94 𝑥 2< 6 , 5 52 𝑥7 < 97

𝑐 𝑙𝑎𝑠𝑠 0 𝑐 𝑙𝑎𝑠𝑠 2𝑐 𝑙𝑎𝑠𝑠 1 𝑐 𝑙𝑎𝑠𝑠 3 𝑐 𝑙𝑎𝑠𝑠 2 0 𝑐 𝑙𝑎𝑠𝑠 1 𝑐 𝑙𝑎𝑠𝑠 3 0 2 𝑐 𝑙𝑎𝑠𝑠 1 𝑐 𝑙𝑎𝑠𝑠 3𝑐 𝑙𝑎𝑠𝑠 1 𝑐 𝑙𝑎𝑠𝑠 0𝑐 𝑙𝑎𝑠𝑠 2 2
7.12
[ 11 , 0 , 6 , 10 , 4 , 40 , 68 , 78 , 2.68 , 8.58 , 7.12]
𝑥𝑥𝑥 𝑥
001 𝑥12 𝑥𝑥
2 𝑥
3
3 4
𝑥
4 𝑥
5
5 𝑥 𝑥
6𝑥
6 7
7
𝑥 8
8
𝑥 9 𝑥10
9𝑥 10

𝑥 3< 4 ,5 𝑥 3< 4 ,5 𝑥 3< 5 , 5 𝑥 2< 4 ,5

𝑥 6 <91 𝑥 9 <5 𝑥 6 <94 𝑥 2< 6 , 5 52 𝑥7 < 97

𝑐 𝑙𝑎𝑠𝑠 0 𝑐 𝑙𝑎𝑠𝑠 2𝑐 𝑙𝑎𝑠𝑠 1 𝑐 𝑙𝑎𝑠𝑠 3 𝑐 𝑙𝑎𝑠𝑠 2 0 𝑐 𝑙𝑎𝑠𝑠 1 𝑐 𝑙𝑎𝑠𝑠 3 0 2 𝑐 𝑙𝑎𝑠𝑠 1 𝑐 𝑙𝑎𝑠𝑠 3𝑐 𝑙𝑎𝑠𝑠 1 𝑐 𝑙𝑎𝑠𝑠 0𝑐 𝑙𝑎𝑠𝑠 2 𝑐 𝑙𝑎𝑠𝑠 2
7.12
[ 11 , 0 , 6 , 10 , 4 , 40 , 68 , 78 , 2.68 , 8.58 , 7.12]
𝑥𝑥𝑥 𝑥
001 𝑥12 𝑥𝑥
2 𝑥
3
3 4
𝑥
4 𝑥
5
5 𝑥 𝑥
6𝑥
6 7
7
𝑥 8
8
𝑥 9 𝑥10
9𝑥 10

𝑥 3< 4 ,5 𝑥 3< 4 ,5 𝑥 3< 5 , 5 𝑥 2< 4 ,5

𝑥 6 <91 𝑥 9 <5 𝑥 6 <94 𝑥 2< 6 , 5 52 𝑥7 < 97

𝑐 𝑙𝑎𝑠𝑠 0 𝑐 𝑙𝑎𝑠𝑠 2𝑐 𝑙𝑎𝑠𝑠 1 𝑐 𝑙𝑎𝑠𝑠 3 𝑐 𝑙𝑎𝑠𝑠 2 0 𝑐 𝑙𝑎𝑠𝑠 1 𝑐 𝑙𝑎𝑠𝑠 3 0 2 𝑐 𝑙𝑎𝑠𝑠 1 𝑐 𝑙𝑎𝑠𝑠 3𝑐 𝑙𝑎𝑠𝑠 1 𝑐 𝑙𝑎𝑠𝑠 0𝑐 𝑙𝑎𝑠𝑠 2 𝑐 𝑙𝑎𝑠𝑠 2
7.12
[ 11 , 0 , 6 , 10 , 4 , 40 , 68 , 78 , 2.68 , 8.58 , 7.12]
𝑥𝑥𝑥 𝑥
001 𝑥12 𝑥𝑥
2 𝑥
3
3 4
𝑥
4 𝑥
5
5 𝑥 𝑥
6𝑥
6 7
7
𝑥 8
8 𝑥 9 𝑥10
9𝑥 10

𝑥 3< 4 ,5 𝑥 3< 4 ,5 𝑥 3< 5 , 5 𝑥 2< 4 ,5

𝑥 6 <91 𝑥 9 <5 𝑥 6 <94 𝑥 2< 6 , 5 52 𝑥7 < 97

𝑐 𝑙𝑎𝑠𝑠 0 𝑐 𝑙𝑎𝑠𝑠 2𝑐 𝑙𝑎𝑠𝑠 1 𝑐 𝑙𝑎𝑠𝑠 3 𝑐 𝑙𝑎𝑠𝑠 2 𝑐 𝑙𝑎𝑠𝑠 0𝑐 𝑙𝑎𝑠𝑠 1 𝑐 𝑙𝑎𝑠𝑠 3𝑐 𝑙𝑎𝑠𝑠 0 𝑐 𝑙𝑎𝑠𝑠 2𝑐 𝑙𝑎𝑠𝑠 1 𝑐 𝑙𝑎𝑠𝑠 3𝑐 𝑙𝑎𝑠𝑠 1 𝑐 𝑙𝑎𝑠𝑠 0𝑐 𝑙𝑎𝑠𝑠 2 𝑐 𝑙𝑎𝑠𝑠 2
7.12
[ 11 , 0 , 6 , 10 , 4 , 40 , 68 , 78 , 2.68 , 8.58 , 7.12]
𝑥𝑥𝑥 𝑥
001 𝑥12 𝑥𝑥
2 𝑥
3
3 4
𝑥
4 𝑥
5
5 𝑥 𝑥
6𝑥
6 7
7
𝑥 8
8 𝑥 9 𝑥10
9𝑥 10

𝑥 3< 4 ,5 𝑥 3< 4 ,5 𝑥 3< 5 , 5 𝑥 2< 4 ,5

𝑥 6 <91 𝑥 9 <5 𝑥 6 <94 𝑥 2< 6 , 5 52 𝑥7 < 97

𝑐 𝑙𝑎𝑠𝑠 0 𝑐 𝑙𝑎𝑠𝑠 2𝑐 𝑙𝑎𝑠𝑠 1 𝑐 𝑙𝑎𝑠𝑠 3 𝑐 𝑙𝑎𝑠𝑠 2 𝑐 𝑙𝑎𝑠𝑠 0𝑐 𝑙𝑎𝑠𝑠 1 𝑐 𝑙𝑎𝑠𝑠 3𝑐 𝑙𝑎𝑠𝑠 0 𝑐 𝑙𝑎𝑠𝑠 2𝑐 𝑙𝑎𝑠𝑠 1 𝑐 𝑙𝑎𝑠𝑠 3𝑐 𝑙𝑎𝑠𝑠 1 𝑐 𝑙𝑎𝑠𝑠 0𝑐 𝑙𝑎𝑠𝑠 2 𝑐 𝑙𝑎𝑠𝑠 2
7.12
[ 11 , 0 , 6 , 10 , 4 , 40 , 68 , 78 , 2.68 , 8.58 , 7.12]
𝑥𝑥𝑥 𝑥
001 𝑥12 𝑥𝑥
2 𝑥
3
3 4
𝑥
4 𝑥
5
5 𝑥 𝑥
6𝑥
6 7
7
𝑥 8
8 𝑥 9 𝑥10
9𝑥 10

𝑥 3< 4 ,5 𝑥 3< 4 ,5 𝑥 3< 5 , 5 𝑥 2< 4 ,5

𝑥 6 <91 𝑥 9 <5 𝑥 6 <94 𝑥 2< 6 , 5 52 𝑥7 < 97

𝑐 𝑙𝑎𝑠𝑠 0 𝑐 𝑙𝑎𝑠𝑠 2𝑐 𝑙𝑎𝑠𝑠 1 𝑐 𝑙𝑎𝑠𝑠 3 𝑐 𝑙𝑎𝑠𝑠 2 𝑐 𝑙𝑎𝑠𝑠 0𝑐 𝑙𝑎𝑠𝑠 1 𝑐 𝑙𝑎𝑠𝑠 3𝑐 𝑙𝑎𝑠𝑠 0 𝑐 𝑙𝑎𝑠𝑠 2𝑐 𝑙𝑎𝑠𝑠 1 𝑐 𝑙𝑎𝑠𝑠 3𝑐 𝑙𝑎𝑠𝑠 1 𝑐 𝑙𝑎𝑠𝑠 0𝑐 𝑙𝑎𝑠𝑠 2 𝑐 𝑙𝑎𝑠𝑠 2
7.12
[ 11 , 0 , 6 , 10 , 4 , 40 , 68 , 78 , 2.68 , 8.58 , 7.12]
𝑥𝑥𝑥 𝑥
001 𝑥12 𝑥𝑥
2 𝑥
3
3 4
𝑥
4 𝑥
5
5 𝑥 𝑥
6𝑥
6 7
7
𝑥 8
8 𝑥 9 𝑥10
9𝑥 10

𝑥 3< 4 ,5 𝑥 3< 4 ,5 𝑥 3< 5 , 5 𝑥 2< 4 ,5

𝑥 6 <91 𝑥 9 <5 𝑥 6 <94 𝑥 2< 6 , 5 52 𝑥7 < 97

𝑐 𝑙𝑎𝑠𝑠 0 𝑐 𝑙𝑎𝑠𝑠 2𝑐 𝑙𝑎𝑠𝑠 1 𝑐 𝑙𝑎𝑠𝑠 3 𝑐 𝑙𝑎𝑠𝑠 2 𝑐 𝑙𝑎𝑠𝑠 0𝑐 𝑙𝑎𝑠𝑠 1 𝑐 𝑙𝑎𝑠𝑠 3𝑐 𝑙𝑎𝑠𝑠 0 𝑐 𝑙𝑎𝑠𝑠 2𝑐 𝑙𝑎𝑠𝑠 1 𝑐 𝑙𝑎𝑠𝑠 3𝑐 𝑙𝑎𝑠𝑠 1 𝑐 𝑙𝑎𝑠𝑠 0𝑐 𝑙𝑎𝑠𝑠 2 𝑐 𝑙𝑎𝑠𝑠 2
7.12
[ 11 , 0 , 6 , 10 , 4 , 40 , 68 , 78 , 2.68 , 8.58 , 7.12]
𝑥𝑥𝑥 𝑥
001 𝑥12 𝑥𝑥
2 𝑥
3
3 4
𝑥
4 𝑥
5
5 𝑥 𝑥
6𝑥
6 7
7
𝑥 8
8 𝑥 9 𝑥10
9𝑥 10

𝑥 3< 4 ,5 𝑥 3< 4 ,5 𝑥 3< 5 , 5 𝑥 2< 4 ,5

𝑥 6 <91 𝑥 9 <5 𝑥 6 <94 𝑥 2< 6 , 5 52 𝑥7 < 97

𝑐 𝑙𝑎𝑠𝑠 0 𝑐 𝑙𝑎𝑠𝑠 2𝑐 𝑙𝑎𝑠𝑠 1 𝑐 𝑙𝑎𝑠𝑠 3 𝑐 𝑙𝑎𝑠𝑠 2 𝑐 𝑙𝑎𝑠𝑠 0𝑐 𝑙𝑎𝑠𝑠 1 𝑐 𝑙𝑎𝑠𝑠 3𝑐 𝑙𝑎𝑠𝑠 0 𝑐 𝑙𝑎𝑠𝑠 2𝑐 𝑙𝑎𝑠𝑠 1 𝑐 𝑙𝑎𝑠𝑠 3𝑐 𝑙𝑎𝑠𝑠 1 𝑐 𝑙𝑎𝑠𝑠 0𝑐 𝑙𝑎𝑠𝑠 2 𝑐 𝑙𝑎𝑠𝑠 2
7.12
[ 11 , 0 , 6 , 10 , 4 , 40 , 68 , 78 , 2.68 , 8.58 , 7.12]
𝑥𝑥𝑥 𝑥
001 𝑥12 𝑥𝑥
2 𝑥
3
3 4
𝑥
4 𝑥
5
5 𝑥 𝑥
6𝑥
6 7
7
𝑥 8
8 𝑥 9 𝑥10
9𝑥 10

𝑥 3< 4 ,5 𝑥 3< 4 ,5 𝑥 3< 5 , 5 𝑥 2< 4 ,5

𝑥 6 <91 𝑥 9 <5 𝑥 6 <94 𝑥 2< 6 , 5 52 𝑥7 < 97

𝑐 𝑙𝑎𝑠𝑠 0 𝑐 𝑙𝑎𝑠𝑠 2𝑐 𝑙𝑎𝑠𝑠 1 𝑐 𝑙𝑎𝑠𝑠 3 𝑐 𝑙𝑎𝑠𝑠 2 𝑐 𝑙𝑎𝑠𝑠 0𝑐 𝑙𝑎𝑠𝑠 1 𝑐 𝑙𝑎𝑠𝑠 3𝑐 𝑙𝑎𝑠𝑠 0 𝑐 𝑙𝑎𝑠𝑠 2𝑐 𝑙𝑎𝑠𝑠 1 𝑐 𝑙𝑎𝑠𝑠 3𝑐 𝑙𝑎𝑠𝑠 1 𝑐 𝑙𝑎𝑠𝑠 0𝑐 𝑙𝑎𝑠𝑠 2 𝑐 𝑙𝑎𝑠𝑠 2
7.12
[ 11 , 0 , 6 , 10 , 4 , 40 , 68 , 78 , 2.68 , 8.58 , 7.12]
𝑥𝑥𝑥 𝑥
001 𝑥12 𝑥𝑥
2 𝑥
3
3 4
𝑥
4 𝑥
5
5 𝑥 𝑥
6𝑥
6 7
7
𝑥 8
8 𝑥 9 𝑥10
9𝑥 10

𝑥 3< 4 ,5 𝑥 3< 4 ,5 𝑥 3< 5 , 5 𝑥 2< 4 ,5

𝑥 6 <91 𝑥 9 <5 𝑥 6 <94 𝑥 2< 6 , 5 52 𝑥7 < 97

𝑐 𝑙𝑎𝑠𝑠 0 𝑐 𝑙𝑎𝑠𝑠 2𝑐 𝑙𝑎𝑠𝑠 1 𝑐 𝑙𝑎𝑠𝑠 3 𝑐 𝑙𝑎𝑠𝑠 2 𝑐 𝑙𝑎𝑠𝑠 0𝑐 𝑙𝑎𝑠𝑠 1 𝑐 𝑙𝑎𝑠𝑠 3𝑐 𝑙𝑎𝑠𝑠 0 𝑐 𝑙𝑎𝑠𝑠 2𝑐 𝑙𝑎𝑠𝑠 1 𝑐 𝑙𝑎𝑠𝑠 3𝑐 𝑙𝑎𝑠𝑠 1 𝑐 𝑙𝑎𝑠𝑠 0𝑐 𝑙𝑎𝑠𝑠 2 𝑐 𝑙𝑎𝑠𝑠 2
7.12
[ 11 , 0 , 6 , 10 , 4 , 40 , 68 , 78 , 2.68 , 8.58 , 7.12]
𝑥𝑥𝑥 𝑥
001 𝑥12 𝑥𝑥
2 𝑥
3
3 4
𝑥
4 𝑥
5
5 𝑥 𝑥
6𝑥
6 7
7
𝑥 8
8 𝑥 9 𝑥10
9𝑥 10

𝑥 3< 4 ,5 𝑥 3< 4 ,5 𝑥 3< 5 , 5 𝑥 2< 4 ,5

𝑥 6 <91 𝑥 9 <5 𝑥 6 <94 𝑥 2< 6 , 5 52 𝑥7 < 97

𝑐 𝑙𝑎𝑠𝑠 0 𝑐 𝑙𝑎𝑠𝑠 2𝑐 𝑙𝑎𝑠𝑠 1 𝑐 𝑙𝑎𝑠𝑠 3 𝑐 𝑙𝑎𝑠𝑠 2 𝑐 𝑙𝑎𝑠𝑠 0𝑐 𝑙𝑎𝑠𝑠 1 𝑐 𝑙𝑎𝑠𝑠 3𝑐 𝑙𝑎𝑠𝑠 0 𝑐 𝑙𝑎𝑠𝑠 2𝑐 𝑙𝑎𝑠𝑠 1 𝑐 𝑙𝑎𝑠𝑠 3𝑐 𝑙𝑎𝑠𝑠 1 𝑐 𝑙𝑎𝑠𝑠 0𝑐 𝑙𝑎𝑠𝑠 2 𝑐 𝑙𝑎𝑠𝑠 2
7.12
[ 11 , 0 , 6 , 10 , 4 , 40 , 68 , 78 , 2.68 , 8.58 , 7.12]
𝑥𝑥𝑥 𝑥
001 𝑥12 𝑥𝑥
2 𝑥
3
3 4
𝑥
4 𝑥
5
5 𝑥 𝑥
6𝑥
6 7
7
𝑥 8
8 𝑥 9 𝑥10
9𝑥 10

𝑥 3< 4 ,5 𝑥 3< 4 ,5 𝑥 3< 5 , 5 𝑥 2< 4 ,5

𝑥 6 <91 𝑥 9 <5 𝑥 6 <94 𝑥 2< 6 , 5 52 𝑥7 < 97

𝑐 𝑙𝑎𝑠𝑠 0 𝑐 𝑙𝑎𝑠𝑠 2𝑐 𝑙𝑎𝑠𝑠 1 𝑐 𝑙𝑎𝑠𝑠 3 𝑐 𝑙𝑎𝑠𝑠 2 𝑐 𝑙𝑎𝑠𝑠 0𝑐 𝑙𝑎𝑠𝑠 1 𝑐 𝑙𝑎𝑠𝑠 3𝑐 𝑙𝑎𝑠𝑠 0 𝑐 𝑙𝑎𝑠𝑠 2𝑐 𝑙𝑎𝑠𝑠 1 𝑐 𝑙𝑎𝑠𝑠 3𝑐 𝑙𝑎𝑠𝑠 1 𝑐 𝑙𝑎𝑠𝑠 0𝑐 𝑙𝑎𝑠𝑠 2 𝑐 𝑙𝑎𝑠𝑠 2
7.12
[ 11 , 0 , 6 , 10 , 4 , 40 , 68 , 78 , 2.68 , 8.58 , 7.12]
𝑥𝑥𝑥 𝑥
001 𝑥12 𝑥𝑥
2 𝑥
3
3 4
𝑥
4 𝑥
5
5 𝑥 𝑥
6𝑥
6 7
7
𝑥 8
8 𝑥 9 𝑥10
9𝑥 10

𝑥 3< 4 ,5 𝑥 3< 4 ,5 𝑥 3< 5 , 5 𝑥 2< 4 ,5

𝑥 6 <91 𝑥 9 <5 𝑥 6 <94 𝑥 2< 6 , 5 52 𝑥7 < 97

𝑐 𝑙𝑎𝑠𝑠 0 𝑐 𝑙𝑎𝑠𝑠 2𝑐 𝑙𝑎𝑠𝑠 1 𝑐 𝑙𝑎𝑠𝑠 3 𝑐 𝑙𝑎𝑠𝑠 2 𝑐 𝑙𝑎𝑠𝑠 0𝑐 𝑙𝑎𝑠𝑠 1 𝑐 𝑙𝑎𝑠𝑠 3𝑐 𝑙𝑎𝑠𝑠 0 𝑐 𝑙𝑎𝑠𝑠 2𝑐 𝑙𝑎𝑠𝑠 1 𝑐 𝑙𝑎𝑠𝑠 3𝑐 𝑙𝑎𝑠𝑠 1 𝑐 𝑙𝑎𝑠𝑠 0𝑐 𝑙𝑎𝑠𝑠 2 𝑐 𝑙𝑎𝑠𝑠 2
7.12
[ 11 , 0 , 6 , 10 , 4 , 40 , 68 , 78 , 2.68 , 8.58 , 7.12]
𝑥𝑥𝑥 𝑥
001 𝑥12 𝑥𝑥
2 𝑥
3
3 4
𝑥
4 𝑥
5
5 𝑥 𝑥
6𝑥
6 7
7
𝑥 8
8 𝑥 9 𝑥10
9𝑥 10

𝑥 3< 4 ,5 𝑥 3< 4 ,5 𝑥 3< 5 , 5 𝑥 2< 4 ,5

𝑥 6 <91 𝑥 9 <5 𝑥 6 <94 𝑥 2< 6 , 5 52 𝑥7 < 97

𝑐 𝑙𝑎𝑠𝑠 0 𝑐 𝑙𝑎𝑠𝑠 2𝑐 𝑙𝑎𝑠𝑠 1 𝑐 𝑙𝑎𝑠𝑠 3 𝑐 𝑙𝑎𝑠𝑠 2 𝑐 𝑙𝑎𝑠𝑠 0𝑐 𝑙𝑎𝑠𝑠 1 𝑐 𝑙𝑎𝑠𝑠 3𝑐 𝑙𝑎𝑠𝑠 0 𝑐 𝑙𝑎𝑠𝑠 2𝑐 𝑙𝑎𝑠𝑠 1 𝑐 𝑙𝑎𝑠𝑠 3𝑐 𝑙𝑎𝑠𝑠 1 𝑐 𝑙𝑎𝑠𝑠 0𝑐 𝑙𝑎𝑠𝑠 2 𝑐 𝑙𝑎𝑠𝑠 2
7.12
[ 11 , 0 , 6 , 10 , 4 , 40 , 68 , 78 , 2.68 , 8.58 , 7.12]
𝑥𝑥𝑥 𝑥
001 𝑥12 𝑥𝑥
2 𝑥
3
3 4
𝑥
4 𝑥
5
5 𝑥 𝑥
6𝑥
6 7
7
𝑥 8
8 𝑥 9 𝑥10
9𝑥 10

𝑥 3< 4 ,5 𝑥 3< 4 ,5 𝑥 3< 5 , 5 𝑥 2< 4 ,5

𝑥 6 <91 𝑥 9 <5 𝑥 6 <94 𝑥 2< 6 , 5 52 𝑥7 < 97

𝑐 𝑙𝑎𝑠𝑠 0 𝑐 𝑙𝑎𝑠𝑠 2𝑐 𝑙𝑎𝑠𝑠 1 𝑐 𝑙𝑎𝑠𝑠 3 𝑐 𝑙𝑎𝑠𝑠 2 𝑐 𝑙𝑎𝑠𝑠 0𝑐 𝑙𝑎𝑠𝑠 1 𝑐 𝑙𝑎𝑠𝑠 3𝑐 𝑙𝑎𝑠𝑠 0 𝑐 𝑙𝑎𝑠𝑠 2𝑐 𝑙𝑎𝑠𝑠 1 𝑐 𝑙𝑎𝑠𝑠 3𝑐 𝑙𝑎𝑠𝑠 1 𝑐 𝑙𝑎𝑠𝑠 0𝑐 𝑙𝑎𝑠𝑠 2 𝑐 𝑙𝑎𝑠𝑠 2

3 1 1 2
3 1 1 2
1
Pseudo-code de
la construction
d'un arbre de
décision
Pseudo-code de la
construction d'un arbre de
décision
CLASSE DecisionTree:
CONSTRUCTEUR(max_depth = null): O(1)
max_depth = profondeur maximale de l'arbre
tree = null // L'arbre sera construit lors de
l'entraînement (fit)
O(d*log(n))
MÉTHODE fit(X, y):
tree = construire_arbre(X, y, profondeur=0)

MÉTHODE predict(X):
O(log(n))
POUR CHAQUE ligne DANS X:
prédiction = prédire_ligne(ligne, tree)
AJOUTER prédiction à la liste des
prédictions
RETOURNER liste des prédictions
Pseudo-code de la
construction d'un arbre de
décision
CLASSE DecisionTree: O(d*log(n))
MÉTHODE construire_arbre(X, y, profondeur):
// Conditions d'arrêt
SI toutes les classes dans y sont identiques OU
profondeur >= max_depth:
RETOURNER classe_majoritaire(y) // Classe la plus fréquente
// Trouver la meilleure séparation (split)
meilleure_feature, meilleur_seuil = trouver_meilleur_split(X, y)

SI aucun split trouvé:


RETOURNER classe_majoritaire(y)
// Diviser les données selon le split
indices_gauche = X[meilleure_feature] <= meilleur_seuil
indices_droite = ~indices_gauche
Pseudo-code de la
construction d'un arbre de
décision
CLASSE DecisionTree:
// Construire récursivement les sous-arbres
sous_arbre_gauche = construire_arbre(X[indices_gauche],
y[indices_gauche], profondeur + 1)
sous_arbre_droit = construire_arbre(X[indices_droite],
y[indices_droite], profondeur + 1)

RETOURNER {
"feature": meilleure_feature,
"threshold": meilleur_seuil,
"left": sous_arbre_gauche,
"right": sous_arbre_droit
}
Pseudo-code de la
construction d'un arbre de
décision
CLASSE DecisionTree:
MÉTHODE trouver_meilleur_split(X, y): O(d*)
meilleur_gain = -1
meilleure_feature = null
meilleur_seuil = null
POUR CHAQUE feature DANS X.colonnes:
POUR CHAQUE valeur_unique DANS X[feature]:
gain = calculer_gain_information(X, y,
feature, valeur_unique)
SI gain > meilleur_gain:
meilleur_gain = gain
meilleure_feature = feature
meilleur_seuil = valeur_unique
RETOURNER meilleure_feature, meilleur_seuil
Pseudo-code de la
construction d'un arbre de
décision
CLASSE DecisionTree:
MÉTHODE calculer_gain_information(X, y, feature, seuil):
y_gauche = y[X[feature] <= seuil]
y_droite = y[X[feature] > seuil] O(n)
SI y_gauche.vide OU y_droite.vide:
RETOURNER 0
entropie_totale = calculer_entropie(y)
entropie_gauche = calculer_entropie(y_gauche)
entropie_droite = calculer_entropie(y_droite)
poids_gauche = len(y_gauche) / len(y)
poids_droit = len(y_droite) / len(y)
RETOURNER entropie_totale –
(poids_gauche * entropie_gauche +
poids_droit * entropie_droite)
Rappel :

Formule de l'Entropie: Formule du Gain d'Information :

L'entropie H(S) d'un ensemble de Le gain d'information IG(S,A) pour une


données S est calculée comme caractéristique A est calculé comme suit :
suit :
Où :
Où : • H(S) : L'entropie de l'ensemble de données S avant la
• pi​: La proportion d'éléments de la division.
classe i dans l'ensemble S. • : Le sous-ensemble de données où la caractéristique A à
• n : Le nombre total de classes. la valeur v.
• ∣ : Le nombre d'éléments dans .
• ∣ S ∣ : Le nombre total d'éléments dans S.
• H() : L'entropie du sous-ensemble .
Pseudo-code de la
construction d'un arbre de
décision
CLASSE DecisionTree:
MÉTHODE calculer_gain_information(X, y, feature, seuil):
y_gauche = y[X[feature] <= seuil]
y_droite = y[X[feature] > seuil] O(n)
SI y_gauche.vide OU y_droite.vide:
RETOURNER 0
entropie_totale = calculer_entropie(y)
entropie_gauche = calculer_entropie(y_gauche)
entropie_droite = calculer_entropie(y_droite)
poids_gauche = len(y_gauche) / len(y)
poids_droit = len(y_droite) / len(y)
RETOURNER entropie_totale –
(poids_gauche * entropie_gauche +
poids_droit * entropie_droite)
Pseudo-code de la
construction d'un arbre de
décision
CLASSE DecisionTree: O(n)
MÉTHODE calculer_entropie(y):
comptes = compter_occurrences(y)
probabilités = [compte/total_elements POUR compte DANS comptes]
RETOURNER -somme(p * log2(p) POUR p DANS probabilités)

MÉTHODE prédire_ligne(ligne, arbre): O(log(n))


SI arbre est une feuille:
RETOURNER arbre
SI ligne[arbre.feature] <= arbre.threshold:
RETOURNER prédire_ligne(ligne, arbre.left)
SINON:
RETOURNER prédire_ligne(ligne, arbre.right)
Pseudo-code de
la construction
d’un foret
aléatoire
Pseudo-code de la
construction d’un foret
aléatoire
CLASSE RandomForest: O(1)

CONSTRUCTEUR(n_trees = 10, max_depth = null, sample_size =


null):
n_trees = nombre d'arbres à créer
max_depth = profondeur maximale des arbres
sample_size = taille des échantillons bootstrap
trees = liste vide pour stocker les arbres
Pseudo-code de la
construction d’un foret
aléatoire
CLASSE RandomForest:

MÉTHODE fit(X, y): O(t*(n + d*log(n)))


POUR i DE 1 À n_trees:
// Créer un échantillon bootstrap
indices = choisir_aléatoirement(len(X),
taille=sample_size, avec_remise=true)
X_sample = X[indices]
y_sample = y[indices]

// Créer et entraîner un nouvel arbre


arbre =
NouveauDecisionTree(max_depth=max_depth)
arbre.fit(X_sample, y_sample)
AJOUTER arbre À trees
Pseudo-code de la
construction d’un foret
aléatoire
CLASSE RandomForest:
MÉTHODE predict(X): O(t*m*log(n))
// Prédictions de chaque arbre
prédictions_arbres = []
POUR CHAQUE arbre DANS trees:
prédictions = arbre.predict(X)
AJOUTER prédictions À prédictions_arbres
// Retourner le vote majoritaire
RETOURNER vote_majoritaire(prédictions_arbres)

MÉTHODE vote_majoritaire(predictions_arbres):
// Effectuer un vote majoritaire sur les prédictions
pour chaque index de ligne dans predictions_arbres:
RETOURNER classe la plus fréquente
parmi les prédictions
Rappel :

Dans une forêt aléatoire, chaque arbre vote pour une


classe. La prédiction finale est déterminée par le vote
majoritaire :

Où :
• T est le nombre d'arbres.
• 1 est une fonction indicatrice qui vaut 1 si l'arbre i prédit
la classe c, et 0 sinon.
Implémentation
dans les trois
langages
Comparaison des
Performances
des Langages
Python, R et Julia
from scratch
Comparaison des Langages pour un Random Forest From Scratch
Critère R Python Julia

Facilité de prototypage Très bonne Excellente Bonne

Performance brute Riche Très riche En croissance

Écosystème Machine Learning Facile Facile Moyenne

Simplicité d'implémentation Limitée Bonne Très bonne

Gestion des grands dataset Limitée Bonne Très bonne

Outils de visualisation ggplot2, lattice, base Matplotlib, Seaborn, Plots.jl, Makie.jl,


plot Plotly Gadfly.jl
Qualité des visualisations Exceptionnelle (très Très bonne (personnalisable) Bonne
esthétique)
Courbe d'apprentissage Modérée (dépend des Facile à moyenne Modérée
packages)
Comparaison des performances du modèle
dans différents langages.
Comparaison des performances du modèle
dans différents langages.

Julia est le plus rapide en termes de vitesse d'exécution,


1
surtout pour les calculs scientifiques et numériques.

2 Python est plus lent que Julia mais reste très


performant grâce à ses bibliothèques optimisées.

3 R est le plus lent, mais il excelle dans les analyses


statistiques et la visualisation de données.

Vous aimerez peut-être aussi