Categorías
Universitario Videojuego

Transformación y reducción

En esta lección se asume que contamos ya con datos correctos (hasta cierto punto) y ahora la tarea consiste es prepararlos para que los algoritmos puedan trabajar con ellos.

Seguramente la lección más interesante de cara a los futuros temas es esta sobre preprocesado o preprocesamiento de datos. Ya ha aparecido cuestiones importantes como el tema de los valores nulos, de los valores atípicos (outliers) y decidir cómo se va a hacer la imputación… pero ahora vamos a añadir el tema del equilibrado de clases (técnicas tanto de sobremuestreo como de sumuestreo). Después, como una segunda parte dentro de esta lección entraremos en el tema de las transformaciones tanto de estandarización como de codificación de variables categóricas (One-Hot Encoding, que en pandas se hace con la función get_dummies()).

Aunque bibliotecas como Scikit-Learn (alias Sklearn) son famosas por sus modelos predictivos, esta tiene un módulo excelente de preprocesamiento (sklearn.preprocessing). Para practicar con Python, en este punto sería interesante aprender a usar herramientas informáticas que ofrece este lenguaje para normalizar datos (MinMaxScaler, StandardScaler), codificar variables categóricas o imputar valores nulos.

Selección de variables

Antes de ponernos a trabajar con los datos a veces los algoritmos necesitan un «preprocesado» de los mismos. Por ejemplo, de cara a los algoritmos que vendrán después debemos pensar muy bien que variables son irrelevantes y no las necesitamos, o cuales son redundantes teniendo en cuenta las que hayamos escogido previamente.

Transformación

Normalmente hablamos de transformación cuando realizamos el escalado, la normalización, o la estandarización de los datos. Aunque también podemos considerar que todo lo que sigue a continuación son «transformaciones» pensadas para mejorar el rendimiento del sistema que va a trabajar con estos datos.

Variables con magnitudes dispares distorsionan los algoritmos basados en distancias (como KNN, SVM o Redes Neuronales Artificiales), por ello usamos Min-Max Scaling para transformar todas esas características a un rango fijo, típicamente [0, 1]. También se realiza la estandarización (Z-Score) para conseguir que la media sea 0 y la desviación típica 1, preferible cuando hay valores extremos o se asume distribución gaussiana.

Codificación

La codificación (encoding) de los datos, busca optimizarlos para hacer lo más eficiente posible su posterior procesamiento, y de paso convertir cualquier variable categórica -es decir, que no es numérica- a numérica. Puede realizarse ya sea con etiquetas, usando codificación ordinal (label encoding) -si las categorías tienen orden explícito- o binaria disyuntiva (más conocida como one-hot encoding), creando una columna binaria por cada categoría.

Ingeniería de características

A veces es necesario crear nuevas variables o combinar las existentes, aprovechando el conocimiento del domino que tenemos, todo con tal de extraer información útil que pueda servirnos en el procesamiento posterior. Se usan transformaciones no lineales (como logaritmos o potencias) para suavizar las distribuciones altamente sesgadas, y la discretización (discretization / binning) para convertir variables continuas en «intervalos» o contenedores (bins).

Reducción de dimensionalidad

A menor número de dimensiones, menos cómputo será requerido para trabajar con estos datos. Por eso se puede usar selección de características (feature selection) para elegir aquellas características que más información aportan y prescindir de las otras.

También se puede hacer un análisis de componentes principales (PCA, Principal Component Analysis) para crear nuevas variables que «resumen» la información más importante.l

Equilibrado de clases

Es muy normal que haya eventos raros que ocurren pocas veces y nos «desequilibran» las clases de datos. Si una clase es más minoritaria, podemos aumentar el numero de muestras de esa clase, haciendo sobremuestreo (oversampling), por ejemplo duplicando muestras. También podemos reducir el número de muestras de la otra clase, haciendo submuestreo (undersampling), eliminando muestras pero intentando no descartar información valiosa.

Existe una técnica de sobremuestreo sintético de clase minoritaria (SMOTE, o Synthetic Minority Oversampling Technique) que genera muestras artificiales -mediante interpolación- para equilibrar el conjunto de datos.

Más información

Para complementar es recomendable consultar otros documentos.

Esta página está licenciada bajo CC BY-NC-SA 4.0 por Laboratorios Narratech.