Nous allons maintenant lancer notre algorithme. Mais combien d'arbre faut-il utiliser ? En effet, plus on utilise d'arbres plus les temps de calculs sont long. Nous allons donc tester nos résultats et voir à partir de quelle quantité d'arbres nous n'arrivons plus à améliorer nos prédictions. Afin de parler d'amélioration, il faut calculer un score à chaque fois, lorsque notre score n'augmente, alors on a atteint un palier et on peut arrêter d'augmenter le nombre d'arbre. Il y a plusieurs manière d'attribuer un score à nos prédictions.

Vrais positifs, faux positifs, vrais négatifs et faux négatifs



Imaginons que nous devons deviner qu'une plante est un Iris Versicolore.

Si nous prédisons que c'est un Iris Versicolore : c'est un VRAI POSITIF (VP)
Si nous prédisons que c'est un Iris Virginica: c'est un FAUX POSITIF (FP)
Si nous prédisons que ce N'est PAS un Iris Versicolore : c'est un FAUX NÉGATIF (FN)
Si nous prédisons que  ce N'est PAS un Iris Virginica : c'est un VRAI NÉGATIF (VN)

Les vrais (vrais positifs et les vrais négatifs) sont donc de bonnes réponses, tandis que les faux (faux négatifs et faux positifs) sont des erreurs. Il y a donc 2 moyens d'avoir raisons et 2 moyens de se tromper. Et il est important de distinguer ces différents moyens. Ce qui est clair par exemple en épidémiologie :

Si un patient atteint d'un cancer passe un test pour détecter son cancer et que les résultats lui disent :

"Vous n'êtes pas malade"

C'est un faux négatif et cela pose un grand problème car le patient ne sera pas traité.

Si un patient qui n'a pas le cancer passe le même test et que les résultats lui disent :

"Vous êtes malade"

C'est un faux positif, mais le problème est certainement moindre (l'erreur sera certainement détectée suite aux nouveaux tests qui vont être déclenchés et notre patient ne recevra au final aucun traitement).
'Mieux vaut' donc, dans ce cas, se tromper sur les diagnostics positifs que sur les diagnostics négatifs.

La capacité à ne pas se tromper sur les diagnostics positifs est appelée sensibilité
La capacité à ne pas se tromper sur les diagnostics négatifs est appelée spécificité

Mais retournons à nos iris. Nous avons donc maintenant 4 variables (VP, FP, VN, FN).
Pour chaque classe (type d'iris), nous pouvons donc calculer 4 scores à chaque fois pour observer nos performances dans la prédiction de cette classe.

Mais nous ne voulons qu'un seul score, voyons donc comment mélanger ces variables.

La précision



Être précis c'est répondre sans se tromper, la précision calcule donc le nombre d'Iris que nous avons bien classifiés sans nous tromper.

On souhaite donc avoir 100% de vrai positifs et 0% de faux positifs.


précision = nombre de VP / (nombre de VP + nombre de FP)

Suivant cette formule, la précision est un chiffre entre 1 et 0.

La précision seule n'est pas très utile. Imaginons que sur 100 iris à deviner, nous n'en en devinons qu'un seul, dont nous sommes extrêmement sûrs, nous aurons donc une précision de 100% ! Mais ce n'est pas très pertinent comme score, nous avons donc besoin d'une autre valeur.



Rappel





Le rappel montre notre capacité à avoir récupérer le plus de résultats positifs corrects possibles. C'est exactement la même chose que la sensibilité dont nous parlions pour les tests médicaux (le vocabulaire dépend du domaine).

On souhaite donc avoir 100% de vrai positifs et 0% de faux négatifs

rappel = nombre de VP /  (nombre de VP + nombre de FN)

Suivant cette formule, la précision est un chiffre entre 1 et 0.


Le rappel est différent de la précision.

Imaginons que nous souhaitions seulement deviner, sur 100 iris, si un iris est un iris versicolore ou non. Si notre algorithme renvoie toujours comme prédiction 'versicolore', il aura un rappel de 100% ! En effet, il aura deviné tous les iris corrects mais il se sera aussi trompé sur tous les autres ! Ainsi, la précision, qui elle sera très faible, est là pour contrebalancer ce rappel à 100%. On a donc besoin de ces 2 indicateurs.

F1




Le rappel et la précision nous donnent donc des résultats très utiles sur la performance de notre algorithme.
Mais pris à part, ils manquent de sens, nous allons donc fusionner les 2 en un seul et unique score, que l'on appellera F1

F1 = (2*rappel*précision) / (précision+rappel)
F1 = 2*VP/(2*VP+FN+VP)

Suivant cette formule, le F1 est un chiffre entre 1 et 0.

On voit que c'est une sorte de moyenne entre le rappel et la précision (la moyenne harmonique en réalité).

Si l'on souhaite souhaite donner plus de poids au rappel ou à la précision, alors on choisit un nombre B (plus grand que 1 ou plus petit que 1, selon à qui l'on veut donner plus de poids) et on applique le score

FB = ((1+B2)*rappel*précision) / ((B2*précision)+rappel)

Jaccard et fidélité

Terminons par une dernière mesure le Jaccard (inventé par Paul Jaccard, encore un botaniste !). Le Jaccard va calculer la similarité entre deux échantillons A et B.

Jaccard = (A ∪ B) /  ( A ∩ B)
(nombre d'éléments partagés entre A ET B) /  (nombre d'éléments appartenant à A OU B)


Dans notre cas, on veut calculer la similarité entre nos prédictions et les résultats attendus.
Le nombre d'éléments partagés est le nombre de réponses correctes (soit les positifs : vrais positifs et faux positifs)
Le nombre d'éléments appartenant à A ou B est tous les types de résultats que l'on a rencontré (VP,FP,FN et FP), soit, plus simplement, le nombre de résultats.

Alors que l'on avait préféré calculer un F1 différent pour chaque classe On peut encore plus simplifier et calculer le jaccard pour toutes les classes en même temps.

C'est la fidélité (accuracy en anglais) :

jaccard=fidélité= (nombre de prédictions correctes) / nombre de résultats

(VP+VN) / (VP+VN+FP+FN)


Ce qui est l'inverse du taux d'erreur

Taux d'erreur = 1-fidélité


Choix du nombre d'arbres et résultats finaux

Nous allons donc créer une première forêt aléatoire avec un seul arbre et calculer le F1 de chaque classe, puis avec 2 arbres, puis avec 3 etc.





Nous voyons sur la courbe ci-dessus plusieurs choses.
Premièrement, comme nous l'avons vu précédemment, l'ensemble des setosas étant linéairement séparable, on obtient dès le départ un score parfait.
Puis, pour les 2 autres, très vite, nous arrivons à un palier au bout duquel nous ne nous améliorons plus, ce qui est somme toute logique vu la simplicité de nos ensemble de données (juste 150 exemples).
Nous décidons donc d'utiliser 10 arbres et arrivons au résultat final suivant :

Nombre d'arbres : 10
Taux d'erreur : 4,44%