Je cherche à former un classificateur qui établira une distinction entre les objets Type A
et ceux Type B
dont le nombre d’apprentissage est relativement important, soit environ 10 000 objets, dont la moitié environ Type A
et la moitié Type B
. Le jeu de données comprend 100 entités continues détaillant les propriétés physiques des cellules (taille, rayon moyen, etc.). La visualisation des données dans des diagrammes de dispersion par paires et des diagrammes de densité nous indique qu'il existe un chevauchement important dans la distribution des cellules cancéreuses et normales dans de nombreuses caractéristiques.
J'explore actuellement les forêts aléatoires en tant que méthode de classification pour cet ensemble de données et j'ai obtenu de bons résultats. En utilisant R, les forêts aléatoires permettent de classer correctement environ 90% des objets.
Une des choses que nous voulons essayer de faire est de créer une sorte de "score de certitude" qui permettra de quantifier notre confiance en la classification des objets. Nous savons que notre classificateur ne sera jamais précis à 100%, et même si les prévisions sont très précises, nous voudrons des techniciens qualifiés pour identifier les objets véritablement Type A
et réellement Type B
. Ainsi, au lieu de fournir des prédictions sans compromis d' Type A
ou Type B
, nous voulons présenter un score pour chaque objet qui décrira comment A
ou B
un objet est. Par exemple, si nous concevons un score compris entre 0 et 10, un score de 0 peut indiquer qu'un objet est très similaire aux Type A
objets, tandis qu'un score de 10 indique qu'un objet est très similaire Type B
.
Je pensais que je pourrais utiliser les votes au sein des forêts aléatoires pour élaborer un tel score. Étant donné que la classification dans les forêts aléatoires est effectuée à la majorité des voix dans la forêt d’arbres générés, je suppose que les objets votés par 100% des arbres Type A
diffèrent des objets votés par, par exemple, 51% des arbres. être Type A
.
Actuellement, j'ai essayé de définir un seuil arbitraire pour la proportion de votes qu'un objet doit recevoir pour être classé comme Type A
ou Type B
, et si le seuil n'est pas dépassé, il sera classé comme Uncertain
. Par exemple, si je force la condition que 80% ou plus des arbres doivent être d'accord sur une décision pour qu'une classification soit validée, je trouve que 99% des prédictions de la classe sont correctes, mais qu'environ 40% des objets sont classés comme Uncertain
.
Serait-il alors logique de tirer parti des informations de vote pour évaluer la certitude des prévisions? Ou suis-je dans la mauvaise direction avec mes pensées?
Réponses:
Cela est parfaitement logique, et toutes les implémentations de forêts aléatoires avec lesquelles j'ai travaillé (telles que celle de MATLAB) fournissent également des sorties probabilistes.
Je n'ai pas travaillé avec la mise en œuvre de R, mais je serais choqué par l'absence d'un moyen simple d'obtenir des résultats indirects à partir des votes ainsi que d'une décision difficile à prendre.
Edit: Il suffit de jeter un coup d’œil sur R et predictif.randomForest affiche également les probabilités.
la source
Si vous utilisez R, le pack caret vous évitera de réinventer la roue. Par exemple, le code suivant utilise la validation croisée pour choisir les paramètres de réglage d'un modèle de forêt aléatoire, puis génère la moyenne et l'écart type de précision pour chaque pli de validation croisée. Enfin, il calcule les probabilités de classe pour le modèle.
Le point positif de caret est qu’il est très facile de comparer différents modèles prédictifs. Par exemple, si vous voulez essayer un SVM, vous pouvez remplacer le texte
method='rf'
avecmethod='svmLinear'
oumethod='svmRadial'.
Vous pouvez également choisir vos paramètres de réglage en fonction de l' ASC plutôt que la précision en ajoutant une ligne au paramètre trainControl:summaryFunction=twoClassSummary
.Enfin, le package PerformanceAnalytics contient un peu de code
chart.Correlation(Dataset[-5], col= Dataset$Class)
, qui n'est pas nécessaire pour construire le modèle, mais fournit une belle visualisation de votre jeu de données.la source
modelLookup()
commande pour obtenir une liste de ce qui est possible.prob
type depredict
est également disponible en utilisantrandomForest
pour former votre modèle (avec ou sans l'utilisation d'autres packages tels quecaret
ouPerformanceAnalytics
).Le package randomForest dans R est un package plutôt convenable pour entrer dans les détails de votre analyse. Il vous fournit les votes (sous forme de fraction ou de nombre brut) et offre une capacité intégrée pour le réglage et la validation croisée. Il peut même vous donner plus d'informations sur vos fonctionnalités (si vous voulez savoir lesquelles de vos 100 le plus important en analyse).
Si vous utilisez déjà ce paquet, alors vous voulez peut-être le regarder de plus près et si vous ne l'utilisez pas, alors peut-être le vérifier.
la source