Est-il possible de contrôler le coût des erreurs de classification dans le package R randomForest ?
Dans mon propre travail, les faux négatifs (par exemple, le fait de manquer par erreur qu'une personne peut avoir une maladie) sont beaucoup plus coûteux que les faux positifs. Le package rpart permet à l'utilisateur de contrôler les coûts de mauvaise classification en spécifiant une matrice de perte pour pondérer différemment les erreurs de classification. Existe-t-il quelque chose de similaire pour randomForest
? Dois-je, par exemple, utiliser l' classwt
option pour contrôler le critère de Gini?
classwt
: Oui, j'ai constaté que dans la pratique, et en ligne avec d'autres utilisateurs, les résultats ne sont pas comme prévu. (iii)cutoff
: Je ne sais pas comment l'utilisercutoff
dans ce cas et je serais heureux de recevoir d'autres conseils.Il existe plusieurs façons d'inclure les coûts.
(1) L'échantillonnage sur / sous pour chaque arbre ensaché (échantillonnage stratifié) est la méthode la plus courante pour introduire les coûts. vous déséquilibrez intentionnellement l'ensemble de données.
(2) Pondération. Ne fonctionne jamais. Je pense que cela est souligné dans la documentation. Certains prétendent qu'il suffit de peser à toutes les étapes, y compris le fractionnement de Gini et le vote final. Si ça va marcher, ça va être une implémentation délicate.
(3) Fonction Metacost à Weka.
(4) Traiter une forêt aléatoire comme un classificateur probabiliste et changer le seuil. J'aime le moins cette option. Probablement en raison de mon manque de connaissances, mais même si l'algorithme peut générer des probabilités, cela n'a pas de sens pour moi de les traiter comme s'il s'agissait d'un modèle probabiliste.
Mais je suis sûr qu'il existe des approches supplémentaires.
la source
Il est recommandé que si la variable que vous essayez de prédire n'est pas à 50%
class 1
et à 50% pourclass 2
(comme la plupart des cas), vous ajustez lecutoff
paramètre pour qu'il représente le réelOOB
en résumé.Par exemple,
Dans ce cas, la probabilité d'avoir une valeur de un
class 1
est.96
tout en ayant une valeur declass 2
is.04
.Sinon, les forêts aléatoires utilisent un seuil de
0.5
.la source
On peut incorporer
costMatrix
dansrandomForest
explicitement via leparms
paramètre:la source
Vous pouvez intégrer la sensibilité aux coûts en utilisant la
sampsize
fonction dans lerandomForest
package.Variez les chiffres en
(100,20)
fonction des données dont vous disposez et des hypothèses / règles commerciales avec lesquelles vous travaillez.Il faut un peu d'essais et d'erreurs pour obtenir une matrice de confusion qui reflète les coûts des erreurs de classification. Jetez un œil aux prévisions criminelles du risque de Richard Berk : une approche d'apprentissage automatique , p. 82.
la source