J'utilise randomForest
en R, dans le but de prédire les distances entre les protéines (modèle de régression en RF) "pour une modélisation de l'homologie" et j'ai obtenu d'assez bons résultats. Cependant, j'ai besoin d'un niveau de confiance pour classer mes valeurs prédites et filtrer les mauvais modèles. Je me demande donc s'il est possible de calculer un tel niveau de confiance, ou tout autre moyen de mesurer la certitude des prédictions ? Toute suggestion ou recommandation est fortement appréciée
Réponse
Trop de publicités?
StupidWolf
Points
34348
En suivant la méthode jackknife mise en évidence dans ce papier pour obtenir l'erreur standard, vous pouvez utiliser une implémentation dans le paquetage ranger
:
library(ranger)
library(mlbench)
data(BostonHousing)
mdl = ranger(medv ~ .,data=BostonHousing[1:400,],keep.inbag = TRUE)
pred = predict(mdl,BostonHousing[401:nrow(BostonHousing),],type="se")
head(cbind(pred$predictions,pred$se ))
[,1] [,2]
[1,] 10.673356 1.107839
[2,] 11.390374 1.102217
[3,] 12.760511 1.126945
[4,] 10.458128 1.100246
[5,] 10.720076 1.084376
[6,] 9.914648 1.102000
L'intervalle de confiance peut être estimé à 1,96*se. Il y a aussi un nouveau paquetage forestError disponible qui peut travailler sur les objets randomForest :
library(randomForest)
library(forestError)
mdl = randomForest(medv ~ .,data=BostonHousing[1:400,],keep.inbag=TRUE)
err = quantForestError(mdl,BostonHousing[1:400,],BostonHousing[401:nrow(BostonHousing),])
head(err$estimates)
pred mspe bias lower_0.05 upper_0.05
1 10.649734 15.70943 -1.5336411 2.935949 12.59486
2 11.611078 15.16339 -1.4436056 3.897293 13.55621
3 12.603938 20.92701 -0.9590869 4.890153 22.32699
4 10.650549 12.42555 -1.4188440 3.941648 12.49029
5 10.414707 29.08155 -1.1438267 2.700922 31.42272
6 9.720305 19.63286 -1.3469671 2.006520 16.43220
Vous pouvez vous référer à ce papier pour la méthode effectivement utilisée,