Une façon de vous en assurer est de vous assurer que vous avez bien codé tout ce que vous faites pour correspondre au modèle, même le "rafistolage". Ainsi, lorsque vous exécutez le processus à plusieurs reprises, par exemple via une validation croisée, vous gardez la cohérence entre les exécutions. Cela garantit que toutes les sources potentielles de variation sont capturées par le processus de validation croisée.
L’autre élément essentiel est de vous assurer que vous disposez d’un échantillon représentatif dans les deux ensembles de données. Si votre jeu de données n'est pas représentatif du type de données que vous prévoyez utiliser pour prédire, vous ne pouvez pas faire grand chose. Toute modélisation repose sur l'hypothèse que "l'induction" fonctionne: les choses que nous n'avons pas observées se comportent comme celles observées.
En règle générale, éloignez-vous des procédures complexes d'ajustement de modèle, sauf si (i) vous savez ce que vous faites, et (ii) que vous avez essayé les méthodes les plus simples et que vous vous êtes rendu compte qu'elles ne fonctionnaient pas, et que la méthode complexe corrige le problème. problèmes avec la méthode simple. "Simple" et "complexe" s'entendent au sens de "simple" ou "complexe" pour celui qui effectue l'ajustement. La raison pour laquelle cela est si important est que cela vous permet d'appliquer ce que j'aime appeler un "test de détection" aux résultats. Le résultat est-il correct? Vous ne pouvez pas "sentir" les résultats d'une procédure que vous ne comprenez pas.
N> > P p N≈ p N< p
1Njeet e s tje= ( 1 - hje je)- 1et r a i njeet r a i njehje jejeΣjehje je= ppN>>phiip=21N×pX
hii=xTi(XTX)−1xi=1Ns2x(1xi)(x2¯¯¯¯¯−x¯¯¯−x¯¯¯1)(1xi)=1+x~2iN
x¯¯¯=N−1∑ixix2¯¯¯¯¯=N−1∑ix2is2x=x2¯¯¯¯¯−x¯¯¯2x~i=xi−x¯¯¯sxxi1N100x~i=5hii=261001−26100=74100100001−26100001%10000x~=5025%
N>>p2hii=xTiEET(XTX)−1EETxiEXTXΛhii=zTiΛ−1zi=∑pj=1z2jiΛjjzi=ETxixi
ketest{k}=(Ik−H{k})−1etrain{k}H{k}=X{k}(XTX)−1XT{k}X{k}N>>p
Fondamentalement, tout cela revient à utiliser un terme de pénalité pour tenir compte de la différence entre les erreurs d'apprentissage et de test, telles que BIC ou AIC. Cela produit effectivement le même résultat que l'utilisation d'un ensemble de tests, mais vous n'êtes pas obligé de jeter des informations potentiellement utiles. Avec le code BIC, vous approximez les preuves du modèle, qui ressemble mathématiquement à:
p(D|MiI)=p(y1y2…yN|MiI)
Mi
p(D|MiI)=p(y1|MiI)p(y2…yN|y1MiI)
=p(y1|MiI)p(y2|y1MiI)p(y3…yN|y1y2MiI)
=⋯=∏i=1Np(yi|y1…yi−1MiI)
⟹log[p(D|MiI)]=∑i=1Nlog[p(yi|y1…yi−1MiI)]
Cela suggère une forme de validation croisée, mais lorsque l'ensemble d'apprentissage est mis à jour en permanence, une observation à la fois de l'ensemble d'essai - similaire au filtre de Kalman. Nous prédisons l'observation suivante à partir de l'ensemble de tests en utilisant l'ensemble d'apprentissage actuel, mesurons l'écart par rapport à la valeur observée à l'aide du log-vraisemblance conditionnel, puis mettons à jour l'ensemble d'apprentissage en incluant la nouvelle observation. Cependant, notez que cette procédure digère complètement toutes les données disponibles, tout en veillant à ce que chaque observation soit testée comme un cas "hors échantillon". Il est également invariant, en ce sens que ce que vous appelez "observation 1" ou "observation 10" n'a pas d'importance; le résultat est identique (les calculs peuvent être plus faciles pour certaines permutations que d'autres). La fonction de perte est aussi "adaptative"Li=log[p(yi|y1…yi−1MiI)]Lii
Je suggérerais que l'évaluation des modèles prédictifs de cette façon fonctionnerait assez bien.