Saltar al contenido principal Saltar al contenido complementario

Transformar tipos de datos

Cuando entrena un modelo de aprendizaje automático, es importante que el conjunto de datos represente con precisión todos los tipos de datos. Si una variable tiene una representación inexacta, podría dar lugar a un modelo con baja precisión o un modelo que se ve bien pero que no predice bien cuando se aplica a datos del mundo real. Debe poder discernir qué mide cada característica y cómo asignar una representación adecuada para esa característica.

Por lo general, el aprendizaje automático considera que todo lo que es un tipo de datos flotante o doble como un valor numérico y cualquier cadena de texto como un valor categórico. Sin embargo, esa no siempre es la interpretación correcta, como veremos en los siguientes ejemplos.

Los ejemplos se han basado en un conjunto de datos agregados para responder a la pregunta: "¿Volverá a comprar un usuario algún producto en los 30 días siguientes a la fecha de su primera compra?" El conjunto de datos contiene columnas de distintos tipos de datos, como cadena de texto, doble, entero, booleano y fecha.

Columnas y tipos de datos

Tabla con nombres de columnas y tipos de datos.

Cadenas de texto

La tabla a continuación muestra dos de las columnas de nuestro conjunto de datos que tienen el tipo de datos de cadena de texto. La columna MarketingSource no tiene una diferencia medible entre los valores, por ejemplo, entre "Facebook" y "Referencia del cliente". No existe una relación numérica o escalar y, por lo tanto, la columna debe considerarse categórica.

Por otro lado, los valores de la columna SourceCostPerAcquisition van de "Bajo" a "Alto" y tienen una diferencia más medible entre ellos. No es tan exacto como tener el coste promedio por adquisición de fuente en dólares, pero hay un orden de magnitud distinto entre los valores. En este caso, podría discutirse si SourceCostPerAcquisition debe considerarse categórico o numérico.

Datos de muestra para las columnas PersonID, MarketingSource y SourceCostPerAquisition

Tabla con datos de muestra.

Una práctica recomendada en estas situaciones es crear dos configuraciones separadas, cada una con una posible clasificación diferente de las características. Estos experimentos se ejecutarán por separado. La primera configuración sería para la representación de cadena original. En la segunda configuración, debe dar una asignación numérica a los distintos valores, convirtiendo la columna al tipo de datos doble. Por ejemplo, "Bajo" = 1,0, "Medio" = 2,0 y "Alto" = 3,0. Tras ejecutar cada configuración, podrá comprender mejor qué configuración funciona mejor para ese uso en particular. En algunos casos, tiene sentido utilizar una representación de cadena y, en otros, una representación numérica podría tener más sentido.

Números

Cuando hay una diferencia medible de lo que describen los datos en una columna, debe representarse como valores numéricos. Ejemplos de esto son costes, ingresos, ganancias, recuentos, sumas y promedios.

A veces, el conjunto de datos puede tener un valor numérico que no se puede medir porque es un diccionario o un valor incremental, como una identificación (ID). En nuestro ejemplo, los valores de la columna PersonID podrían haberse confundido con un valor numérico si no hubieran comenzado por "Person_". Tratar los ID como valores numéricos habría sido una representación inexacta de la diferencia entre esas filas. La mejor práctica en tales casos es representar el ID como una cadena. Antes de usar un conjunto de datos, es posible que deba determinar si alguna de las columnas numéricas debe convertirse en valores categóricos.

Fechas

En el contexto del aprendizaje automático, los tipos de campo de fecha son variables categóricas. Aunque las fechas y las marcas de tiempo se pueden sustraer unas de otras, una fecha tiene varios componentes. La pregunta es cuál de esos componentes considerar y cómo: ¿El valor debe ser el año, mes, día del mes o año, o la hora del día? ¿Quizás quieres la diferencia horaria en minutos? Para obtener el mayor poder predictivo, la fecha debe analizarse en al menos algunos de sus componentes. Algunos de esos componentes podrían ser categóricos y otros podrían ser numéricos.

Por ejemplo, una fecha se puede analizar en el día de la semana. Esto podría representarse como un valor numérico (1 a 7) o un valor de cadena de texto ("Domingo" a "Sábado").

Días de la semana como números y cadenas de texto

Tabla con los días laborables representados como números y cadenas de texto.

Hay algunos problemas con la representación del día de la semana como valor numérico. ¿Cuándo situamos el inicio de la semana, en lunes o domingo? Además, incluso si el día de la semana es importante, podría estar oculto en una tendencia cíclica.

En algunos casos, la tendencia puede ser muy reveladora, como en el Gráfico 1, donde la semana comienza el lunes.

Gráfico 1: Promedio de ventas por día de la semana donde la semana comienza el lunes

Represente las ventas por día de la semana con una línea de tendencia clara.

El gráfico 2 tiene los mismos datos que el gráfico 1, pero se ha desplazado un día para que la semana comience el domingo. Aquí la importancia de los datos es mucho menor.

Gráfico 2: Promedio de ventas por día de la semana donde la semana comienza en domingo

Trace las ventas por día de la semana sin una línea de tendencia clara.

El gráfico 3 ilustra otro problema relacionado con el uso del componente analizado de una fecha como valor numérico. Puede haber un patrón significativo presente, pero si no es lineal, se perderá. Debido a esto, ya las tendencias cíclicas (por ejemplo, la estacionalidad diaria o trimestral) que suelen estar presentes en los componentes de fecha, se recomienda utilizar estos componentes como valores categóricos y no como valores numéricos.

Gráfico 3: Ventas promedio por día de la semana que muestran un máximo a mitad de semana

Gráfico sobre las ventas por día de la semana con una tendencia cíclica que alcanza su punto máximo a mitad de semana.

Qlik AutoML utiliza ingeniería de características automática para separar los componentes de fechas y marcas de tiempo en sus propias columnas distintas. Esto ayuda a mejorar la capacidad predictiva de los modelos que crea. Las características diseñadas automáticamente que se derivan de una característica de fecha principal se clasifican como características numéricas. Si es necesario, puede anular esta funcionalidad para que las columnas de fecha se traten como categóricas. Para más información, vea Ingeniería de características de fecha.

Diferencias de fechas

Las diferencias de fecha se pueden usar como un mejor sustituto de los ID incrementales porque un ID incremental solo describe el orden en que se agregaron los registros a la tabla. Los ID incrementales pueden sesgarse fácilmente por el cambio en el volumen (clientes por día en muchos ejemplos), mientras que una diferencia de fecha es independiente de esa velocidad.

La diferencia de fecha puede ser una de varias medidas: segundos, horas, días, meses o trimestres. Escoja la más relevante para la granularidad de sus datos. Por ejemplo, al mirar datos mensuales, no habrá ningún valor real en una diferencia de fecha en días. En ese caso, una diferencia de fechas en meses sería más relevante.

¿Esta página le ha sido útil?

No dude en indicarnos en qué podemos mejorar si encuentra algún problema en esta página o su contenido, como, por ejemplo, errores tipográficos, pasos que falta o errores técnicos.