Las seis técnicas principales utilizadas en la Ingeniería de Machine Learning

Introducción

La Ingeniería de Machine Learning es uno de los aspectos más importantes de cualquier proyecto de ciencia de datos . La Ingeniería de Machine Learning se refiere a las técnicas utilizadas para extraer y refinar características de los datos sin procesar. Las técnicas de Ingeniería de Machine Learning se utilizan para crear datos de entrada adecuados para el modelo y mejorar el rendimiento del modelo.

Los modelos se entrenan y construyen sobre las características que derivamos de los datos sin procesar para proporcionar el resultado requerido. Puede suceder que los datos que tenemos no sean lo suficientemente buenos para que el modelo aprenda algo de ellos. Si somos capaces de derivar las características que encuentran la solución a nuestro problema subyacente, resultaría ser una buena representación de los datos. Mejor es la representación de los datos, mejor será el ajuste del modelo y el modelo exhibirá mejores resultados.

El flujo de trabajo de cualquier proyecto de ciencia de datos es un proceso iterativo en lugar de un proceso de una sola vez. En la mayoría de los proyectos de ciencia de datos, se crea un modelo base después de crear y refinar las características a partir de los datos sin procesar. Al obtener los resultados del modelo base, algunas características existentes se pueden modificar y algunas características nuevas también se derivan de los datos para optimizar los resultados del modelo.

Ingeniería de Machine Learning

Las técnicas utilizadas en el proceso de Ingeniería de Machine Learning pueden proporcionar los resultados de la misma manera para todos los algoritmos y conjuntos de datos. Algunas de las técnicas comunes utilizadas en el proceso de Ingeniería de Machine Learning son las siguientes:

1. Transformación de valor

Los valores de las características se pueden transformar en alguna otra métrica mediante el uso de parámetros como la función logarítmica, la función raíz, la función exponencial, etc. Existen algunas limitaciones para estas funciones y es posible que no se utilicen para todos los tipos de conjuntos de datos. Por ejemplo, la transformación de raíz o la transformación logarítmica no se puede aplicar a las entidades que contienen valores negativos.

Una de las funciones más utilizadas es la función logarítmica. La función logarítmica puede ayudar a reducir la asimetría de los datos que pueden estar sesgados hacia un extremo. La transformación logarítmica tiende a normalizar los datos, lo que reduce el efecto de los valores atípicos en el rendimiento del modelo.

También ayuda a reducir la magnitud de los valores en una característica. Esto es útil cuando estamos usando algunos algoritmos que consideran que las características con valores mayores son de mayor importancia que las otras.

2. Imputación de datos

La imputación de datos se refiere a completar los valores faltantes en un conjunto de datos con algún valor estadístico. Esta técnica es importante ya que algunos algoritmos no funcionan con los valores perdidos que nos restringen el uso de otros algoritmos o imputan estos valores perdidos. Se prefiere usarlo si el porcentaje de valores perdidos en una característica es menor (alrededor del 5 al 10%), de lo contrario, se produciría una mayor distorsión en la distribución de los datos. Existen diferentes métodos para hacerlo para características numéricas y categóricas.

Podemos imputar los valores faltantes en características numéricas con valores arbitrarios dentro de un rango específico o con medidas estadísticas como media, mediana, etc. Estas imputaciones deben hacerse con cuidado ya que las medidas estadísticas son propensas a valores atípicos que degradarían el rendimiento del modelo. Para las características categóricas, podemos imputar los valores perdidos con una categoría adicional que falta en el conjunto de datos o simplemente imputarlos como perdidos si la categoría es desconocida.

El primero requiere un buen sentido del conocimiento del dominio para poder encontrar la categoría correcta, mientras que el segundo es más una alternativa para la generalización. También podemos usar el modo para imputar las características categóricas. La imputación de los datos con modo también puede conducir a una sobre representación de la etiqueta más frecuente si los valores faltantes son demasiado altos.

3. Codificación categórica

Uno de los requisitos de muchos algoritmos es que los datos de entrada sean de naturaleza numérica. Esto resulta ser una restricción para el uso de características categóricas en tales algoritmos. Para representar las características categóricas como números, necesitamos realizar una codificación categórica. Algunos de los métodos para convertir las características categóricas en números son los siguientes:

1. Codificación one-hot: – La codificación one-hot crea una nueva característica que toma un valor (0 o 1) para cada etiqueta en una característica categórica. Esta nueva característica indica si esa etiqueta de la categoría está presente para cada observación. Por ejemplo, suponga que hay 4 etiquetas en una característica categórica, luego, al aplicar la codificación one-hot, se crearían 4 características booleanas.

También se puede extraer la misma cantidad de información con 3 características como si todas las características contuvieran 0, entonces el valor de la característica categórica sería la cuarta etiqueta. La aplicación de este método aumenta el espacio de características si hay muchas características categóricas con una gran cantidad de etiquetas en el conjunto de datos.

2. Codificación de frecuencia: este método calcula el recuento o el porcentaje de cada etiqueta en la característica categórica y la asigna a la misma etiqueta. Este método no amplía el espacio de características del conjunto de datos. Un inconveniente de este método es que si las dos o más etiquetas tienen el mismo recuento en el conjunto de datos, le daría al mapa el mismo número para todas las etiquetas. Esto conduciría a la pérdida de información crucial.

3. Codificación ordinal: – También conocido como codificación de etiquetas, este método asigna los valores distintos de una característica categórica con un número que va de 0 a n-1, siendo n el número distintivo de etiquetas en la característica. Este método no amplía el espacio de características del conjunto de datos. Pero crea una relación ordinal dentro de las etiquetas de una entidad.

4. Manejo de valores atípicos

Los valores atípicos son los puntos de datos cuyos valores son muy diferentes del resto del lote. Para manejar estos valores atípicos, primero debemos detectarlos. Podemos detectarlos usando visualizaciones como diagrama de caja y diagrama de dispersión en Python, o podemos usar el rango intercuartil (IQR). El rango intercuartil es la diferencia entre el primer trimestre (percentil 25) y el tercer trimestre (percentil 75).

Los valores que no caen en el rango de (Q1 – 1,5 * IQR) y (Q3 + 1,5 * IQR) se denominan valores atípicos. Después de detectar los valores atípicos, podemos manejarlos eliminándolos del conjunto de datos, aplicando alguna transformación, tratándolos como valores perdidos para imputarlos usando algún método, etc.

5. Escala de funciones

La escala de características se usa para cambiar los valores de las características y traerlas dentro de un rango. Es importante aplicar este proceso si estamos usando algoritmos como SVM, Regresión lineal, KNN, etc. que son sensibles a la magnitud de los valores. Para escalar las características, podemos realizar estandarización, normalización, escalado mínimo-máximo. La normalización reescala los valores de un rango de característica de -1 a 1. Es la razón de la resta de cada observación y la media a la resta del valor máximo y mínimo de esa característica. es decir, [X – media (X)] / [max (X) – min (X)].

En la escala mínima-máxima, utiliza el valor mínimo de la característica en lugar de la media. Este método es muy sensible a los valores atípicos, ya que solo considera los valores finales de la característica. La estandarización cambia la escala de los valores de una característica de 0 a 1. No normaliza la distribución de los datos, mientras que el método anterior lo hará.

6. Manejo de variables de fecha y hora

Nos encontramos con muchas variables que indican la fecha y la hora en diferentes formatos. Podemos derivar más características de la fecha como el mes, día de la semana / mes, año, fin de semana o no, la diferencia entre las fechas, etc. Esto puede permitirnos extraer información más detallada del conjunto de datos. De las funciones de tiempo, también podemos extraer información como horas, minutos, segundos, etc.

Una cosa que la mayoría de la gente se pierde es que todas las variables de fecha y hora son características cíclicas. Por ejemplo, suponga que necesitamos verificar qué día entre el miércoles (3) y el sábado (7) está más cerca del domingo (siendo un 1). Ahora sabemos que el sábado está más cerca pero en términos numéricos será miércoles ya que la distancia entre 3 y 1 es menor que entre 7 y 1. Lo mismo se puede aplicar cuando el formato horario es de 24 horas.

Para abordar este problema, podemos expresar estas variables como una representación de la función sin y cos. Para la función ‘minuto’, podemos aplicar la función sin y cos usando NumPy para representarla en naturaleza cíclica de la siguiente manera:

minuto_feature_sin = np.sin (df [‘minuto_feature’] * (2 * π / 60))

minuto_feature_cos = np.cos (df [‘minuto_feature’] * (2 * π / 60))

(Nota: dividir por 60 porque hay 60 minutos en una hora. Si quieres hacerlo por meses, divídelo entre 12 y así sucesivamente)

Al trazar estas características en un diagrama de dispersión, notará que estas características exhiben una relación cíclica entre ellas.

Lea también: Ideas y temas de proyectos de Machine Learning

Hablemos de potencializar tu negocio con Machine Learning