El modelo de regresión lineal de Scikit-learn permite a los usuarios desactivar la intercepción. Entonces, para la codificación en caliente, ¿debería establecer siempre fit_intercept = False? Para la codificación ficticia, fit_intercept siempre debe establecerse en True? No veo ninguna "advertencia" en el sitio web.
Para un modelo lineal no regularizado con codificación de uno en caliente, sí, debe configurar la intersección como falsa o incurrir en una colinealidad perfecta. sklearn
también permite una penalización por contracción de cresta, y en ese caso no es necesario, y de hecho debe incluir tanto la intercepción como todos los niveles. Para la codificación ficticia, debe incluir una intercepción, a menos que haya estandarizado todas sus variables, en cuyo caso la intercepción es cero.
Dado que la codificación en caliente genera más variables, ¿tiene más grado de libertad que la codificación ficticia?
La intersección es un grado adicional de libertad, por lo que en un modelo bien especificado todo es igual.
Para el segundo, ¿qué pasa si hay k variables categóricas? Las k variables se eliminan en la codificación ficticia. ¿El grado de libertad sigue siendo el mismo?
No pudo ajustar un modelo en el que utilizó todos los niveles de ambas variables categóricas, interceptar o no. Porque, tan pronto como haya codificado en caliente todos los niveles en una variable en el modelo, digamos con variables binarias , entonces tiene una combinación lineal de predictores igual al vector constantex1,x2,…,xn
x1+x2+⋯+xn=1
Si luego intentas ingresar todos los niveles de otra categórica en el modelo, terminas con una combinación lineal distinta igual a un vector constantex′
x′1+x′2+⋯+x′k=1
y entonces has creado una dependencia lineal
x1+x2+⋯xn−x′1−x′2−⋯−x′k=0
Por lo tanto, debe omitir un nivel en la segunda variable y todo se alineará correctamente.
Digamos que tengo 3 variables categóricas, cada una de las cuales tiene 4 niveles. En la codificación ficticia, se construyen 3 * 4-3 = 9 variables con una sola intersección. En la codificación one-hot, 3 * 4 = 12 variables se construyen sin una intercepción. ¿Estoy en lo correcto?
La segunda cosa no funciona realmente. La matriz de diseño de columna que cree será singular. Debe eliminar tres columnas, una de cada una de las tres codificaciones categóricas distintas, para recuperar la no singularidad de su diseño.3×4=12