4
$\begingroup$

Beginner in machine learning, I'm looking into the one-hot encoding concept.

Unlike in statistics when you always want to drop the first level to have k-1 dummies (as discussed here on SE), it seems that some models needs to keep it and have k dummies.

I know that having k levels could lead to collinearity problems, but I'm not aware of any problem caused by having k-1 levels.

But since pandas.get_dummies() has its drop_first argument to false by default, this definitely has to be useful sometimes.

In which cases (algorithms, parameters...) would I want to keep the 1st level and fit with k levels for each categorical variable?

EDIT: @EliasStrehle's comment on above-mentioned link states that this is only true if the model has an intercept. Is this rule generalizable? What about algorithms like KNN or trees which are not exactly models in the statistic definition?

$\endgroup$
  • 1
    $\begingroup$ Do you have any specific algorithms you're interested in? I'd can see this question being answered differently depending on the algorithm (i.e. regression vs. decision tree). $\endgroup$ – Alex L Mar 19 '19 at 20:47
  • 1
    $\begingroup$ Actually, this is my point. How could I know that a given algorithm needs to drop the first level of its categorical variables or not ? $\endgroup$ – Dan Chaltiel Mar 19 '19 at 20:49
1
$\begingroup$

First, if your data has missing values, get_dummies by default will produce all zeros, so that perfect multicollinearity doesn't actually hold. Also, from a data manipulation standpoint (without regard for modeling), it makes some sense to keep the symmetry of having a dummy for every value of the categorical variable.

In a decision tree (and various ensembles thereof), keeping all the dummies is beneficial: if you remove the first dummy, then the model can only select on that level by selecting (through several steps in the tree, rather unlikely!) "not this other dummy."
Then again, it's probably better not to one-hot encode at all for decision trees, but for now some packages don't deal innately with categorical variables.

K-nearest neighbors seems like it would also benefit from keeping all levels. The taxicab distance, limited to the dummies of one feature, between two points with different values is 1 if one of their values was the removed dummy, otherwise 2.
But again, it seems like KNN would be better off without one-hot encoding, but instead some more informed measure of distances between the category's values if you can come up with them.

See also https://stats.stackexchange.com/questions/231285/dropping-one-of-the-columns-when-using-one-hot-encoding
(In particular, when using regularization in a linear model, it may be worth keeping all dummies.)

$\endgroup$
  • $\begingroup$ Very interesting but you only answered on my examples. If there is no general rule on this matter, what concepts should I learn to be able to tell ? $\endgroup$ – Dan Chaltiel Mar 20 '19 at 16:14
  • $\begingroup$ Additionnaly, I'm using python's scikit which apparently needs one-hot encoding beforehand. $\endgroup$ – Dan Chaltiel Mar 20 '19 at 16:15
  • $\begingroup$ I'm not sure of a general rule. I suspect keeping all dummies is generally better except when the model assumes that there is no multicollinearity. As another example, neural networks are linear before activations, so they can use the multicollinearity to recover the removed dummy internally; but I don't think leaving the dummy there will hurt the model. $\endgroup$ – Ben Reiniger Mar 20 '19 at 18:22
  • $\begingroup$ +1 Thanks, your answer was definitely helping $\endgroup$ – Dan Chaltiel Mar 20 '19 at 18:35

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.