Idées pour produire une équation de prédiction pour les forêts aléatoires


8

J'ai lu les articles suivants qui ont répondu à la question que j'allais poser:

Utilisez le modèle Random Forest pour faire des prédictions à partir des données des capteurs

Arbre de décision pour la prédiction de sortie

Voici ce que j'ai fait jusqu'à présent: j'ai comparé la régression logistique aux forêts aléatoires et la logistique RF surperformée. Maintenant, les chercheurs en médecine avec qui je travaille veulent transformer mes résultats RF en un outil de diagnostic médical. Par exemple:

Si vous êtes un homme asiatique âgé de 25 à 35 ans, que votre vitamine D est inférieure à xx et votre tension artérielle supérieure à xx, vous avez 76% de chances de développer une maladie xxx.

Cependant, RF ne se prête pas à de simples équations mathématiques (voir les liens ci-dessus). Voici donc ma question: quelles idées avez-vous tous pour utiliser RF pour développer un outil de diagnostic (sans avoir à exporter des centaines d'arbres).

Voici quelques-unes de mes idées:

  1. Utilisez RF pour la sélection des variables, puis utilisez la logistique (en utilisant toutes les interactions possibles) pour faire l'équation de diagnostic.
  2. D'une manière ou d'une autre, agréger la forêt RF en un «méga-arbre», qui fait en moyenne la répartition des nœuds entre les arbres.
  3. Semblable à # 2 et # 1, utilisez RF pour sélectionner des variables (disons m variables au total), puis créez des centaines d'arbres de classification, qui utilisent tous chaque m variable, puis choisissez le meilleur arbre unique.

D'autres idées? De plus, faire # 1 est facile, mais avez-vous des idées sur la façon d'implémenter # 2 et # 3?


Faire une équation de prédiction pour chaque arbre (ce sera de simples points de partage), puis faire la moyenne des prédictions de chaque équation? Vous obtiendrez une équation de monstre, mais elle représentera pleinement la forêt.
Zach

Bonne idée @Zach. Mais malheureusement, j'essaie d'éviter quoi que ce soit de «monstre».
dfife

1
Pourriez-vous rappeler pourquoi les forêts aléatoires posent des problèmes de mise en œuvre pour vous? Ils ne sont pas particulièrement intensifs, sauf si vous avez des milliers de fonctionnalités. Vous pouvez l'élaguer, mais il est peu probable que vous ayez une forme analytique digestible.
Jessica Collins

@ Jacob - Le problème est que RF a beaucoup d'arbres de décision. Je serais ravi de signaler une seule formule (<quelques lignes si possible) qui prédit presque aussi précisément que RF. Étant donné que je publie mon travail à un public d'une sophistication statistique modeste, je pense que l'exportation de pages sur des pages d'arbres limiterait considérablement la probabilité que mes résultats soient mis en œuvre en milieu clinique.
dfife

J'ai écrit une fonction pour générer du code SQL pour un modèle de forêt aléatoire, voir: gist.github.com/shanebutler
Shane

Réponses:


6

Voici quelques réflexions:

  1. Tous les modèles à boîte noire peuvent être inspectés d'une manière ou d'une autre. Vous pouvez calculer l'importance variable pour chaque entité par exemple ou vous pouvez également tracer la réponse prédite et la réponse réelle pour chaque entité ( lien );
  2. Vous pourriez penser à une taille de l'ensemble. Tous les arbres de la forêt ne sont pas nécessaires et vous pouvez en utiliser quelques-uns. Document: [À la recherche de la plus petite forêt aléatoire, Zhang]. Sinon, juste Google "élagage d'ensemble", et jetez un œil au chapitre "Méthodes d'ensemble: fondements et algorithmes" ;
  3. Vous pouvez créer un modèle unique par sélection de fonctionnalités, comme vous l'avez dit. Sinon, vous pouvez également essayer d'utiliser la méthode de Domingos dans [Acquisition de connaissances à partir d'exemples via plusieurs modèles] qui consiste à créer un nouvel ensemble de données avec des prédictions en boîte noire et à construire un arbre de décision par-dessus.
  4. Comme mentionné dans cette réponse de Stack Exchange, un modèle d'arbre peut sembler interprétable, mais il est sujet à des changements élevés simplement en raison de petites perturbations des données d'apprentissage. Ainsi, il est préférable d'utiliser un modèle à boîte noire. L'objectif final d'un utilisateur final est de comprendre pourquoi un nouvel enregistrement est classé dans une classe particulière. Vous pourriez penser à certaines importances de fonctionnalités uniquement pour cet enregistrement particulier.

J'irais pour 1. ou 2.


11

J'ai dû faire face à la même situation d'utilisation de la RF dans un cadre de diagnostic, avec des intervenants habitués aux algorithmes qui se résument à une seule équation lisible. J'ai trouvé que si vous commencez par expliquer un arbre de décision simple (ici vous pouvez utiliser des équations), puis très compliqué, puis expliquez les inconvénients du sur-ajustement, vous commencez à obtenir quelques hochements de tête. Une fois que vous expliquez que de nombreux petits arbres peuvent atténuer l'inexactitude en étant cultivés différemment ("au hasard"), et qu'ils peuvent être considérés comme un vote d'ensemble ou une moyenne pour éviter un ajustement excessif mais toujours tenir compte des cas marginaux, vous comprenez. Voici quelques exemples de diapositives que j'ai utilisées avec une bonne réception:

Vous ne pouvez pas vous éloigner des arbres dans une forêt, et c'est ce qui donne à l'algorithme autant de puissance prédictive et de robustesse, donc il y a rarement une meilleure solution si la RF fonctionne très bien pour vous. Ceux qui compareront, comme SVM (en fonction de vos données), seront tout aussi complexes. Vous devez leur faire comprendre que toute bonne solution sera une sorte de boîte noire (pour l'utilisateur). Votre meilleure décision consiste à créer une implémentation de consommable qui ne nécessite pas plus d'efforts qu'une équation unique. J'ai réussi à construire un modèle RF en Python (via sklearn) et la création d'une API REST de serveur Web simple qui charge ce modèle en mémoire et accepte les variables dans un POST pour générer la prédiction. Vous pouvez également le faire très facilement en Java ou en R, ou ignorer l'API et créer simplement un fichier binaire / jar exécutable qui prend les données comme arguments.


Bon point! - Agréger les résultats de la RF dans une seule équation perdra inévitablement certains de ses avantages. Je n'y avais pas pensé.
dfife

2
Très probablement oui. Cependant, l'utilisation de RF pour calculer l'importance variable pour réduire la dimensionnalité, suivie d'une méthode que votre public connaît mieux, est un compromis courant. Il est important de savoir que l'importance variable dans les RF est généralement calculée en fonction des performances dans les RF (augmentation, réduction des erreurs, etc.) et peut ne pas avoir toutes le même poids dans d'autres méthodes.
wwwslinger

2

J'ai de l'expérience dans le déploiement de forêts aléatoires dans un environnement SQL Server via User Defined Function. L'astuce consiste à convertir les IF-THEN ELSErègles que vous obtenez de chaque arbre en une CASE-WHEN ENDou toute autre Conditional Processingconstruction (certes, j'ai utilisé l'implémentation Bootstrap Forest de JMP Pro - 500k lignes de code SQL).

Il n'y a absolument aucune raison pour laquelle cela ne peut pas être réalisé en utilisant le rattle Rpackage. Jetez un œil à randomForest2Rules& printRandomForestsfonctions dans ce package. Les deux prennent l' random forestobjet en entrée et visitent chaque arbre de la forêt et produisent un ensemble de IF-THEN ELSErègles. En prenant cela comme point de départ, il ne devrait pas être difficile de convertir cette logique dans la langue souhaitée de manière automatisée, car la sortie de la fonction mentionnée ci-dessus est du texte structuré.

Ce qui précède, il est également important de décider le plus petit non. d'arbres dont vous avez besoin dans la forêt pour faire des prédictions au niveau de précision souhaité (indice: plot (rf.object) vous montre à quel point les prédictions forestières ne s'améliorent pas malgré l'ajout d'arbres.) afin de garder le non. de lignes pour représenter la forêt vers le bas.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.