O modelo de regressão linear do Scikit-learn permite que os usuários desativem a interceptação. Portanto, para a codificação one-hot, devo sempre definir fit_intercept = False? Para codificação fictícia, fit_intercept sempre deve ser definido como True? Não vejo nenhum "aviso" no site.
Para um modelo linear não regulamentado com codificação one-hot, sim, você precisa definir a interceptação como falsa ou incorrer em colinearidade perfeita. sklearn
também permite uma penalidade de encolhimento da cordilheira e, nesse caso, não é necessário; na verdade, você deve incluir a interceptação e todos os níveis. Para codificação dummy, você deve incluir uma interceptação, a menos que padronize todas as suas variáveis; nesse caso, a interceptação é zero.
Como a codificação one-hot gera mais variáveis, ela tem mais grau de liberdade do que a codificação fictícia?
A interceptação é um grau adicional de liberdade; portanto, em um modelo bem especificado, tudo se iguala.
Para o segundo, e se houver k variáveis categóricas? As variáveis k são removidas na codificação fictícia. O grau de liberdade ainda é o mesmo?
Não foi possível ajustar um modelo no qual você usou todos os níveis de ambas as variáveis categóricas, interceptadas ou não. Pois, assim que você codificar todos os níveis em uma variável no modelo, digamos com variáveis binárias , você terá uma combinação linear de preditores igual ao vetor constantex1,x2,…,xn
x1+x2+⋯+xn=1
Se você tentar inserir todos os níveis de outro categórico no modelo, você terá uma combinação linear distinta igual a um vetor constantex′
x′1+x′2+⋯+x′k=1
e assim você criou uma dependência linear
x1+x2+⋯xn−x′1−x′2−⋯−x′k=0
Portanto, você deve deixar de fora um nível na segunda variável, e tudo se alinha adequadamente.
Digamos, eu tenho 3 variáveis categóricas, cada uma com 4 níveis. Na codificação fictícia, 3 * 4-3 = 9 variáveis são construídas com uma interceptação. Na codificação one-hot, 3 * 4 = 12 variáveis são criadas sem interceptação. Estou correcto?
A segunda coisa realmente não funciona. A matriz de design da coluna criada por você será singular. Você precisa remover três colunas, uma de cada uma das três codificações categóricas distintas, para recuperar a não singularidade do seu design.3×4=12