One Hot Encoding

El método de codificación Label Encoding es una forma sencilla de asignar valores numéricos a las diferentes categorías de una variable categórica. Sin embargo, presenta una limitación importante, y es que estos valores numéricos pueden ser malinterpretados por algunos algoritmos de aprendizaje automático. Por ejemplo, si codificamos cuatro ciudades con los valores 0, 1, 2 y 3, es posible que un algoritmo interprete erróneamente que, por ejemplo, la ciudad correspondiente al valor 3 tiene -según algún criterio- un valor tres veces mayor que la ciudad con el valor 1, lo cual no es cierto.

Una alternativa al Label Encoding es el método de codificación llamado One Hot Encoding. Esta estrategia consiste en crear una columna binaria (que solo puede contener los valores 0 o 1) para cada valor único que exista en la variable categórica que estamos codificando, y marcar con un 1 la columna correspondiente al valor presente en cada registro, dejando las demás columnas con un valor de 0. Por ejemplo, en el caso de la variable "sex" de los pasajeros del Titanic, One Hot Encoding crearía dos columnas binarias (una para el valor "male" y otra para el valor "female"). Para cada pasajero, se asignaría un valor de 1 a la columna correspondiente a su género y un valor de 0 a la columna del género opuesto. De esta manera, cada registro queda representado por un vector binario que indica la presencia o ausencia de cada valor categórico, y se evita la posibilidad de que los algoritmos malinterpreten los valores numéricos asignados por Label Encoding.

Una desventaja de este método es que estamos aumentando la dimensionalidad del conjunto de datos (es decir, aumentando el número de columnas o características categóricas a partir de las cuales entrenar el modelo), lo que puede resultar problemático si el número de muestras de las que se dispone no es suficientemente elevado.

Scikit-Learn implementa esta funcionalidad en la clase sklearn.preprocessing.OneHotEncoder y Pandas la implementa en la clase pandas.get_dummies.