Le modèle de régression linéaire de Scikit-learn permet aux utilisateurs de désactiver l'interception. Donc, pour l'encodage one-hot, dois-je toujours définir fit_intercept = False? Pour l’encodage factice, fit_intercept doit toujours être défini sur True? Je ne vois aucun "avertissement" sur le site.
Pour un modèle linéaire non normalisé avec un codage à chaud, oui, vous devez paramétrer l'interception sur faux, sinon la colinéarité sera parfaite. sklearn
permet également une pénalité de retrait de crête et, dans ce cas, cela n’est pas nécessaire. En fait, vous devez inclure à la fois l’interception et tous les niveaux. Pour l’encodage factice, vous devez inclure une interception, sauf si vous avez normalisé toutes vos variables, auquel cas l’interception est égale à zéro.
Comme l'encodage one-hot génère plus de variables, a-t-il plus de degré de liberté que l'encodage factice?
L'interception est un degré de liberté supplémentaire, donc dans un modèle bien spécifié, tout est égal.
Pour le second, que se passe-t-il s'il y a k variables catégoriques? k variables sont supprimées en codage factice. Le degré de liberté est-il toujours le même?
Vous ne pouviez pas adapter un modèle dans lequel vous utilisiez tous les niveaux des deux variables qualitatives, interceptées ou non. Car dès que vous avez codé à chaud tous les niveaux d'une variable du modèle, par exemple avec les variables binaires , vous obtenez une combinaison linéaire de prédicteurs égale au vecteur constantx1,x2,…,xn
x1+x2+⋯+xn=1
Si vous essayez ensuite d'entrer tous les niveaux d' un autre catégorique dans le modèle, vous obtenez une combinaison linéaire distincte égale à un vecteur constant.x′
x′1+x′2+⋯+x′k=1
et ainsi vous avez créé une dépendance linéaire
x1+x2+⋯xn−x′1−x′2−⋯−x′k=0
Donc, vous devez laisser un niveau dans la deuxième variable, et tout s'aligne correctement.
Dis, j'ai 3 variables catégoriques, chacune ayant 4 niveaux. Dans l’encodage factice, 3 * 4-3 = 9 variables sont construites avec une interception. Dans le codage à chaud, 3 * 4 = 12 variables sont construites sans interception. Ai-je raison?
La deuxième chose ne fonctionne pas réellement. La matrice de conception colonnes que vous créez sera singulière. Vous devez supprimer trois colonnes, une de chacun des trois encodages catégoriels distincts, pour récupérer la non-singularité de votre conception.3×4=12