Il modello di regressione lineare di Scikit-learn consente agli utenti di disabilitare l'intercettazione. Quindi, per la codifica one-hot, devo sempre impostare fit_intercept = False? Per la codifica fittizia, fit_intercept deve essere sempre impostato su True? Non vedo alcun "avviso" sul sito web.
Per un modello lineare non regolamentato con codifica one-hot, sì, è necessario impostare l'intercetta su false o altrimenti incorrere in una perfetta collinearità. sklearn
consente anche una penalità per il restringimento della cresta, e in quel caso non è necessario, e in effetti dovresti includere sia l'intercettazione che tutti i livelli. Per la codifica fittizia è necessario includere un'intercettazione, a meno che non siano state standardizzate tutte le variabili, nel qual caso l'intercettazione è zero.
Poiché la codifica one-hot genera più variabili, ha più grado di libertà rispetto alla codifica fittizia?
L'intercettazione è un ulteriore grado di libertà, quindi in un modello ben specificato equivale a tutto.
Per il secondo, cosa succede se ci sono k variabili categoriche? k variabili vengono rimosse con codifica fittizia. Il grado di libertà è sempre lo stesso?
Non è stato possibile adattare un modello in cui sono stati utilizzati tutti i livelli di entrambe le variabili categoriali, intercettare o meno. Perché, non appena hai codificato a caldo tutti i livelli in una variabile nel modello, ad esempio con le variabili binarie , allora hai una combinazione lineare di predittori uguale al vettore costantex1,x2,…,xn
x1+x2+⋯+xn=1
Se poi provi ad inserire tutti i livelli di un'altra categoriale nel modello, finisci con una combinazione lineare distinta uguale a un vettore costantex′
x′1+x′2+⋯+x′k=1
e così hai creato una dipendenza lineare
x1+x2+⋯xn−x′1−x′2−⋯−x′k=0
Quindi è necessario tralasciare un livello nella seconda variabile e tutto si allinea correttamente.
Supponiamo che io abbia 3 variabili categoriali, ognuna delle quali ha 4 livelli. Nella codifica fittizia, 3 * 4-3 = 9 variabili sono costruite con una intercettazione. Nella codifica one-hot, le variabili 3 * 4 = 12 sono costruite senza intercettazione. Ho ragione?
La seconda cosa in realtà non funziona. La matrice di progettazione colonne creata sarà singolare. È necessario rimuovere tre colonne, una da ciascuna di tre distinte codificazioni categoriche, per ripristinare la non singolarità del progetto.3×4=12