Convalida incrociata in StackingClassifier Scikit-Learn
StackingClassifier
Nella documentazione di Scikit-Learn è scritto:
Si noti che
estimators_
sono adattati per interoX
mentrefinal_estimator_
viene addestrato utilizzando previsioni convalidate in modo incrociato degli stimatori di base utilizzandocross_val_predict
.
... la convalida incrociata 5 volte predefinita
La mia domanda, perché utilizzare la convalida incrociata di 5 volte solo nello stimatore finale? perché lo stimatore finale non è adattato all'intero X '(output dagli stimatori di base)?
Risposte
Ciò include 2 domande, affronterò ciascuna di esse.
- Potremmo usare la convalida incrociata sull'intero sistema, ma questo ci danneggerebbe un po' troppo.
Lo scopo della convalida incrociata è trovare i parametri ottimali, quelli che consentono al modello di adattarsi bene ai dati senza un adattamento eccessivo. È sufficiente che il nostro stimatore finale lo faccia; non è necessario determinare individualmente le impostazioni di tutti gli stimatori di base. Gli stimatori di base possono includere una serie di diverse impostazioni dei parametri, ad esempio; così come una selezione di diversi tipi di classificatori. Se qualcuno di loro è incline all'overfitting, questo dovrebbe essere compensato da altri che non hanno questo problema. Finché lo stimatore finale non mette tutte le sue uova nel paniere sbagliato, dovremmo andare bene (ed è per questo che abbiamo bisogno di una convalida incrociata qui, per assicurarci che ciò non accada).
- Addestreremo lo stimatore finale sull'intero set di addestramento - questo accade dopo aver trovato i parametri ottimali o il set di stimatori di base utilizzando la convalida incrociata. Come dice il nome, la convalida incrociata è intesa per convalidare il metodo. Non per creare il modello finale.