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:
- Utilisez RF pour la sélection des variables, puis utilisez la logistique (en utilisant toutes les interactions possibles) pour faire l'équation de diagnostic.
- 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.
- 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?
la source
Réponses:
Voici quelques réflexions:
J'irais pour 1. ou 2.
la source
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.
la source
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 lesIF-THEN ELSE
règles que vous obtenez de chaque arbre en uneCASE-WHEN END
ou toute autreConditional Processing
construction (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
R
package. Jetez un œil àrandomForest2Rules
&printRandomForests
fonctions dans ce package. Les deux prennent l'random forest
objet en entrée et visitent chaque arbre de la forêt et produisent un ensemble deIF-THEN ELSE
rè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.
la source