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.
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 (OneHotEncoder) o imputar valores nulos.
Como ejercicio o Práctica 0 es interesante tomar un conjunto de datos real, «sucio», de Internet (o varios, de aquellos que más nos interesen, comportamientos de videojugadores, tiendas como de Steam, etc.), y usar Pandas para explorarlo, limpiarlo… y también preprocesarlo y transformarlo, usando usando Sklearn para dejarlo listo de cara al siguiente tema.
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.