Data & Feature Engineering

Encoding Categorical Variables

Converting non-numeric strings and categories into model-ready numerical matrices without introducing false ordinal rankings.

🟢 beginner4 min readfeatures
Categorical Encoding transforms string labels and discrete variables into numerical formats. Low-cardinality features use One-Hot Encoding (binary indicator columns) or Ordinal Encoding (integer mapping for ordered data). High-cardinality features use Target Encoding, Frequency Encoding, or Entity Embeddings. Selecting the wrong encoding introduces artificial distance assumptions or causes high-dimensional sparse matrix explosions.

Categorical Encoding Decision Tree

                          Is the Categorical Feature Ordered (Ordinal)?
                                 /                            \
                              Yes                              No
                              /                                  \
                    Use Ordinal Encoding            Is Cardinality High (> 15 values)?
              ('Small'=0, 'Med'=1, 'Large'=2)              /                     \
                                                         No                      Yes
                                                        /                          \
                                              Use One-Hot Encoding         Target / Frequency Encoding
                                              ([1,0,0], [0,1,0])           / Entity Embeddings

Encoding Methods Comparison

Encoding MethodMechanicsBest ForOutput DimPrimary Risk
One-HotBinary 1/0 column per categoryLow-cardinality nominal data$C$ columnsSparse matrix explosion for large $C$
OrdinalAssigns integer 0 to $C-1$Ordered categories (Education, Size)1 columnImposes false distance on nominal data
Frequency / CountReplaces category with frequency countMedium/High cardinality features1 columnCollapses categories with identical counts
Target EncodingReplaces category with target mean $\bar{y}_c$High-cardinality features in GBDTs1 columnTarget Leakage / Overfitting
Entity EmbeddingsLearned dense vector via Neural NetHigh-cardinality features in Deep Learning$k$-dim vectorRequires neural net training step

The Dummy Variable Trap in Linear Regression

When using One-Hot encoding with a bias intercept in Linear Regression:

$$\sum_{j=1}^C x_{\text{onehot}, j} = 1.0 = \text{Bias Intercept Vector}$$

This creates perfect multicollinearity ($\text{rank}(X) < d$). Invertibility fails for $(X^T X)^{-1}$.

Fix: Drop one binary column (Dummy Variable Encoding), retaining $C-1$ columns. The baseline dropped category is absorbed into the bias intercept $b$.

Say this out loud

"Categorical encoding converts discrete strings into model inputs. We use Ordinal Encoding only when natural ordering exists (e.g. education level). For un-ordered categories, we use One-Hot Encoding for low-cardinality features, dropping one column for linear models to avoid the dummy variable trap. For high-cardinality features like ZIP codes, we use Out-of-Fold Target Encoding or learned Entity Embeddings."

Follow-ups to expect

Check yourself

Question 1 of 3

Why is applying Ordinal Encoding (mapping 'Red'=0, 'Green'=1, 'Blue'=2) dangerous for linear models and neural networks?

More in Data & Feature Engineering

See all →
Feature Engineering Fundamentals4 minSQL Questions in ML Interviews5 minScaling & Normalization5 min