Un modo per garantire ciò è assicurarsi di aver codificato tutte le cose che fai per adattarsi al modello, anche "armeggiare". In questo modo, quando si esegue ripetutamente il processo, ad esempio tramite la convalida incrociata, si mantengono le cose coerenti tra le esecuzioni. Ciò garantisce che tutte le potenziali fonti di variazione vengano catturate dal processo di convalida incrociata.
L'altra cosa di vitale importanza è assicurarsi di disporre di un campione rappresentativo, in entrambi i set di dati. Se il tuo set di dati non è rappresentativo del tipo di dati che prevedi di utilizzare per prevedere, non c'è molto che puoi fare. Tutta la modellazione si basa sul presupposto che "l'induzione" funzioni: le cose che non abbiamo osservato si comportano come le cose che abbiamo osservato.
Come regola generale, state alla larga dalle complesse procedure di adattamento del modello a meno che (i) non sappiate cosa state facendo e (ii) non abbiate provato i metodi più semplici e scoperto che non funzionano e in che modo il metodo complesso corregge problemi con il metodo semplice. "Semplice" e "complesso" sono intesi nel senso di "semplice" o "complesso" per la persona che si adatta. Il motivo per cui è così importante è che ti consente di applicare ai risultati quello che mi piace chiamare un "sniff test". Il risultato sembra giusto? Non puoi "annusare" i risultati di una procedura che non capisci.
N> > P p N≈ p N< p
1Nioet e s tio= ( 1 - hio io)- 1et r a i nioet r a i niohio ioio∑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
Fondamentalmente, tutto ciò si riduce all'uso di un termine di penalità, per tenere conto della differenza tra errori di addestramento e test, come BIC o AIC. In questo modo si ottiene lo stesso risultato di un set di test, tuttavia non si è costretti a buttare via informazioni potenzialmente utili. Con il BIC, stai approssimando le prove per il modello, che assomiglia matematicamente a:
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)]
Ciò suggerisce una forma di convalida incrociata, ma in cui il set di addestramento viene costantemente aggiornato, un'osservazione alla volta dal set di test, simile al filtro Kalman. Prevediamo l'osservazione successiva dal set di test utilizzando il set di training corrente, misuriamo la deviazione dal valore osservato utilizzando la probabilità log log condizionale, quindi aggiorniamo il set di training per includere la nuova osservazione. Ma si noti che questa procedura digerisce completamente tutti i dati disponibili, assicurandosi allo stesso tempo che ogni osservazione sia testata come caso "fuori campione". È anche invariante, in quanto non importa ciò che chiamate "osservazione 1" o "osservazione 10"; il risultato è lo stesso (i calcoli possono essere più facili per alcune permutazioni rispetto ad altri). Anche la funzione di perdita è "adattiva"Li=log[p(yi|y1…yi−1MiI)]Lii
Suggerirei che la valutazione di modelli predittivi in questo modo funzionerebbe abbastanza bene.