Eine Möglichkeit, dies zu gewährleisten, besteht darin, sicherzustellen, dass Sie alle Dinge, die Sie tun, um zum Modell zu passen, codiert haben , auch das "Basteln". Auf diese Weise behalten Sie die Konsistenz zwischen den Läufen bei, wenn Sie den Prozess wiederholt ausführen, z. B. durch Kreuzvalidierung. Dies stellt sicher, dass alle potenziellen Variationsquellen durch den Kreuzvalidierungsprozess erfasst werden.
Die andere wichtige Sache ist, sicherzustellen, dass Sie in beiden Datensätzen eine repräsentative Stichprobe haben. Wenn Ihr Datensatz nicht für die Art von Daten repräsentativ ist, die Sie voraussichtlich zur Vorhersage verwenden, können Sie nicht viel tun. Alle Modelle basieren auf der Annahme, dass "Induktion" funktioniert - die Dinge, die wir nicht beobachtet haben, verhalten sich wie die Dinge, die wir beobachtet haben.
Halten Sie sich generell von komplexen Modellanpassungsprozeduren fern, es sei denn, (i) Sie wissen, was Sie tun, und (ii) Sie haben die einfacheren Methoden ausprobiert und festgestellt, dass sie nicht funktionieren und wie die komplexe Methode die Probleme behebt Probleme mit der einfachen Methode. "Einfach" und "komplex" sind im Sinne von "einfach" oder "komplex" für die Person zu verstehen, die die Anpassung vornimmt. Der Grund, warum dies so wichtig ist, besteht darin, dass Sie das, was ich als "Schnüffeltest" bezeichne, auf die Ergebnisse anwenden können. Sieht das Ergebnis richtig aus? Sie können die Ergebnisse einer Prozedur, die Sie nicht verstehen, nicht "riechen".
N>>p p N≈p N<p
1Nietesti=(1−hii)−1etrainietrainihiii∑ihii=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
Grundsätzlich reduziert sich dies auf die Verwendung eines Strafbegriffs, um den Unterschied zwischen Trainings- und Testfehlern wie BIC oder AIC zu berücksichtigen. Auf diese Weise erhalten Sie praktisch das gleiche Ergebnis wie mit einem Test-Set, müssen jedoch keine potenziell nützlichen Informationen wegwerfen. Mit dem BIC approximieren Sie den Beweis für das Modell, der mathematisch wie folgt aussieht:
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)]
Dies deutet auf eine Form der Kreuzvalidierung hin, bei der das Trainingsset jedoch ständig aktualisiert wird, und zwar eine Beobachtung nach der anderen aus dem Testset - ähnlich wie beim Kalman-Filter. Wir sagen die nächste Beobachtung aus dem Testsatz unter Verwendung des aktuellen Trainingssatzes voraus, messen die Abweichung vom beobachteten Wert unter Verwendung der bedingten Log-Wahrscheinlichkeit und aktualisieren dann den Trainingssatz, um die neue Beobachtung einzuschließen. Beachten Sie jedoch, dass bei diesem Verfahren alle verfügbaren Daten vollständig aufbereitet werden und gleichzeitig sichergestellt wird, dass jede Beobachtung als "Out-of-Sample" -Fall getestet wird. Es ist auch insofern unveränderlich, als es keine Rolle spielt, was Sie "Beobachtung 1" oder "Beobachtung 10" nennen; Das Ergebnis ist dasselbe (Berechnungen sind für einige Permutationen möglicherweise einfacher als für andere). Die Verlustfunktion ist auch "adaptiv"Li=log[p(yi|y1…yi−1MiI)]Lii
Ich würde vorschlagen, dass die Bewertung von Vorhersagemodellen auf diese Weise recht gut funktioniert.