Intervalles de prédiction pour les algorithmes d'apprentissage automatique

14

Je veux savoir si le processus décrit ci-dessous est valide / acceptable et toute justification disponible.

L'idée: les algorithmes d'apprentissage supervisé ne supposent pas de structures / distributions sous-jacentes sur les données. À la fin de la journée, ils produisent des estimations ponctuelles. J'espère quantifier en quelque sorte l'incertitude des estimations. Maintenant, le processus de construction du modèle ML est intrinsèquement aléatoire (par exemple, dans l'échantillonnage pour la validation croisée pour le réglage hyperparamétrique et dans le sous-échantillonnage dans GBM stochastique), donc un pipeline de modélisation va me donner une sortie différente pour les mêmes prédicteurs avec chaque graine différente. Mon idée (naïve) est d'exécuter ce processus encore et encore pour arriver à une distribution de la prédiction, et j'espère pouvoir faire des déclarations sur l'incertitude des prédictions.

Si cela est important, les ensembles de données avec lesquels je travaille sont généralement très petits (~ 200 lignes).

Est-ce que ça a du sens?

Pour clarifier, je n'amorce pas réellement les données au sens traditionnel (c'est-à-dire que je ne rééchantillonne pas les données). Le même ensemble de données est utilisé à chaque itération, j'exploite simplement le caractère aléatoire dans xval et GBM stochastique.

kevinykuo
la source
2
Si vous voulez réellement un intervalle de prédiction (plutôt qu'un intervalle de confiance), vous devez tenir compte de la variation des observations sur le modèle, et pas seulement de la variation des prédictions du modèle
Glen_b -Reinstate Monica
@Glen_b, l'approche décrite dans l'OP ou une version boostée me donnerait-elle les intervalles de confiance? Je commence à penser qu'un intervalle de prédiction n'est pas possible sans spécifier une distribution sous-jacente pour les données, donc je pourrais avoir besoin de reformuler la question la prochaine fois.
kevinykuo
Vous pouvez amorcer les intervalles de prédiction ... tout simplement pas en faisant ce que vous décrivez dans le Q.
Glen_b -Reinstate Monica
@Glen_b pourriez-vous décrire comment le faire dans une réponse?
kevinykuo
1
Je n'ai pas pu donner de réponse suffisante ici. Mais voir Davison et Hinkley (1997) dans les chapitres sur la régression multiple et les GLM qui donnent une idée du genre de choses qui pourraient être nécessaires. Dans le cas d'une régression multiple par exemple, les résidus sont rééchantillonnés pour obtenir une estimation bootstrap de l'incertitude prédictive (variation des prédictions en raison de l'incertitude des paramètres) et rééchantillonnés à nouveau pour faire face à la variation du processus. Avec un schéma approprié, vous pourriez peut-être également être en mesure de faire face à l'incertitude des spécifications du modèle lors de cette première étape, mais vous ne pouvez pas omettre la 2e étape pour la variabilité du processus
Glen_b -Reinstate Monica

Réponses:

5

Pour moi, il semble que la meilleure approche pour quantifier les incertitudes dans les prévisions. Assurez-vous simplement de répéter toutes les étapes de modélisation (pour un GBM qui serait le réglage des paramètres) à partir de zéro dans chaque rééchantillonnage d'amorçage. Il pourrait également être utile d'amorcer les classements d'importance pour quantifier l'incertitude dans les classements.

J'ai trouvé que parfois les intervalles ne contiennent pas la prédiction réelle, en particulier lors de l'estimation d'une probabilité. L'augmentation du nombre minimal d'observations dans chaque nœud terminal résout généralement cela, au moins dans les données avec lesquelles j'ai travaillé.

La prédiction conforme semble être une approche utile pour quantifier la confiance dans les prédictions sur les nouvelles données. Jusqu'à présent, je n'ai fait qu'effleurer la surface et d'autres sont probablement plus adaptés pour donner un avis à ce sujet.

Il y a un code R brut dans ma réponse à ce post sur la recherche d'un intervalle de prédiction GBM.

J'espère que cela t'aides!

ErikL
la source
2

Vous pouvez diviser votre incertitude sur la prédiction en termes de «biais» et de «variance». Le terme de biais fait référence à une erreur de spécification du modèle: si vous ajustez un modèle linéaire pour une fonction non linéaire, vous obtiendrez toujours une erreur. Le terme «variance» fait référence à une erreur dans l'estimation des paramètres du modèle. Vous approchez compte de la variance partie de l'incertitude, alors que vous ne pouvez pas estimer le biais.

Comme suggéré par @ErikL, la prédiction conforme est une approche théoriquement justifiée qui adopte une idée assez similaire pour le bootstrap. La prédiction conforme utilisant la reconstruction du modèle en utilisant un nouveau point prend en compte à la fois le biais et la variance, tandis que pour la régression, ils ont besoin de ressources informatiques importantes. Vous pouvez l'essayer avec Python en utilisant une bibliothèque non conforme .

Alexey Zaytsev
la source
1

Non, cela semble être une mauvaise idée. Tout d'abord, comme l'a souligné Alexey, il existe un biais et une variance. Même pour le meilleur choix de paramètres, vous ne pouvez pas éviter la variance. Votre méthode n'essaie même pas d'y remédier. Il y a un autre problème très important: une partie, et probablement la plupart, de l'erreur de votre modèle se trouve dans les données, plutôt que dans le caractère aléatoire inhérent au modèle. (Sans oublier que certains modèles, comme la régression linéaire simple, ne sont pas aléatoires du tout, et pour les modèles aléatoires, le degré de caractère aléatoire varie d'un modèle à l'autre)

Je vous suggère de tester votre approche sur des données simulées simples et sur un modèle que vous connaissez. Je suis sûr que, pour les raisons que j'ai décrites, votre erreur estimée sera beaucoup plus petite que la vraie erreur (ou votre distribution sera beaucoup plus étroite).

Pour estimer la distribution des erreurs, vous pouvez utiliser une bonne vieille validation croisée.

user31264
la source
0

Je pense à ce problème maintenant. Voici mes découvertes:

(1) Méthode Delta
(2) Rééchantillonnage bootstrap
(3) Méthode bayésienne
(4) Estimation de la variance moyenne (MVE)

L'idée tente d'estimer les deux sources de la variabilité de la prédiction, l'incertitude à partir de l'estimation des paramètres du modèle et l'erreur irréductible.

Voici plusieurs références:

Approches d'apprentissage automatique pour l'estimation de l'intervalle de prédiction pour la sortie du modèle, Durga L. Shrestha, Dimitri P. Solomatine, 2006
Une comparaison de certaines estimations d'erreur pour les modèles de réseau neuronal, Robert Tibshirani, 1995
Examen complet des intervalles de prédiction basés sur les réseaux neuronaux et nouveaux Avances, Abbas khosravi, Doug Creighton, 2011

J'espère que cela m'aide et corrige tout ce qui précède est inapproprié. J'aimerais en savoir plus des autres.

Démo
la source
1
Pourriez-vous expliquer comment ce message répond à la question d'origine?
whuber
Le titre est «PI pour les algorithmes ML», @kevinykuo demande si sa méthode de «bootstraping» fonctionne. Je pointe plusieurs références sur certaines méthodes utilisées dans PI pour Neural Network.
Démo