Kitabı oku: «Introducción al Machine Learning con MATLAB», sayfa 2
CAPÍTULO 1
Fundamentos del Machine Learning
En este capítulo se presentan los conceptos básicos del aprendizaje máquina, que permitirán al lector familiarizarse con el tema. Además, se introducen los pasos básicos en la aplicación del aprendizaje máquina. Por último, se discute acerca de la importancia de los tipos de datos, su preprocesamiento y su despliegue. Los objetivos principales de este capítulo son: aprender de forma rápida y sencilla el proceso de aplicación del aprendizaje máquina, así como comprender sus principios.
Objetivos:
• Conocer los conceptos del aprendizaje máquina
• Entender las diferentes etapas del aprendizaje máquina
• Aprender a utilizar las herramientas en la preparación de datos para el aprendizaje máquina en problemas reales
1.1. Introducción
A fin de responder «¿qué es el aprendizaje máquina?», es necesario partir de la siguiente definición dada por Bostjan Kaluza (2016) [1]:
El aprendizaje máquina es un subcampo de la inteligencia artificial. Este ayuda a los ordenadores a aprender y actuar como seres humanos con la ayuda de algoritmos y datos. Dado un conjunto de datos, un algoritmo de aprendizaje máquina aprende diferentes propiedades de los datos e infiere las propiedades de los datos que se pueden presentar en el futuro.
A partir de la definición anterior, se puede inferir que el objetivo del aprendizaje máquina es desarrollar sistemas que permitan a los ordenadores aprender y generalizar comportamientos. En la actualidad, el aprendizaje máquina se aplica en diversas áreas: en medicina, como auxiliar en el diagnóstico de diversas patologías y como clasificador de secuencias de ADN; en sistemas financieros, analizando el mercado de valores y detectando fraudes en el uso de tarjetas de crédito; o en informática, aplicado en sistemas de reconocimiento de habla y lenguaje escrito, entre otras.
Existen conceptos clave en el aprendizaje máquina que sientan las bases para comprender este campo. Estos pueden dividirse en dos áreas sustanciales: los conceptos sobre datos y los conceptos sobre aprendizaje. Los conceptos sobre datos otorgan la nomenclatura apropiada para describir los datos y sus conjuntos. Los conceptos sobre aprendizaje describen el aprendizaje obtenido a partir de los datos.
1.2. Conceptos sobre datos
Como se mencionó anteriormente, los métodos de aprendizaje máquina aprenden a partir de los ejemplos. Resulta importante tener una buena comprensión de los datos de entrada y la variada terminología utilizada al describir los datos. Los datos pueden estructurarse en filas y columnas, como una tabla de base de datos o como una hoja de cálculo. Estos son conocidos como «estructura tradicional de datos», y son comunes en el campo del aprendizaje máquina.
Los conceptos básicos para datos del aprendizaje máquina se definen a continuación:
Observación: es la entidad más pequeña, con propiedades de interés para un estudio que puede ser registrado.
Características: son las propiedades o atributos de las observaciones que pueden ser útiles para el aprendizaje.
Tipo de datos: las características tienen un tipo de datos. Estos pueden ser de valor real o entero, o pueden tener un valor categórico u ordinal.
Conjuntos de datos: una colección de observaciones es un conjunto de datos y, cuando se trabaja con métodos de aprendizaje máquina, generalmente se requieren algunos conjuntos de datos para diferentes propósitos.
Datos de entrenamiento: conforman un conjunto de datos que se incorpora al algoritmo de aprendizaje máquina para entrenar al modelo.
Datos de prueba: constituyen un conjunto de datos utilizado para validar la precisión del modelo, pero que no se emplea para entrenar al modelo. Se lo conoce también como «conjunto de datos de validación».
Además de los datos mencionados con anterioridad, existen otros, como imágenes, vídeos y texto. Estos son llamados «datos no estructurados», para poder ser aplicados a métodos de aprendizaje máquina, los cuales deben ser transformados a una forma estructurada de datos. Los datos no estructurados no se consideran en este libro.
1.3. Conceptos sobre aprendizaje
En este apartado, se consideran algunos conceptos de alto nivel sobre el aprendizaje. El aprendizaje máquina se apoya/basa en el aprendizaje con algoritmos. Los conceptos básicos sobre aprendizaje se definen a continuación:
Inducción: los algoritmos de aprendizaje máquina aprenden a través de un proceso llamado «inducción del aprendizaje». Este es un proceso de razonamiento donde se realiza un modelo de la información (datos de entrenamiento).
Generalización: el objetivo de la generalización reside en encontrar el patrón o modelo más significativo para las instancias del entrenamiento. A partir de este modelo, se realizan predicciones o decisiones.
Sobreentrenamiento: se conoce como sobreentrenamiento al hecho de que un modelo aprenda los datos de entrenamiento de una manera tan precisa o exacta que pierda la capacidad de generalizar. El resultado es un bajo rendimiento en datos que no sean del conjunto de entrenamiento.
Subentrenamiento: se refiere a cuando un modelo no ha aprendido suficientemente la estructura de la base de datos, debido a que el proceso de aprendizaje finalizó de forma temprana o inesperada. El resultado que otorga el subentrenamiento resulta bueno en términos de generalización, pero su rendimiento es deficiente en la mayoría de los datos, incluido el conjunto de datos de entrenamiento.
Aprendizaje en línea: el aprendizaje en línea se lleva a cabo cuando un método de aprendizaje máquina se alimenta con observaciones de datos del tema en cuestión, a medida que estén disponibles. El aprendizaje en línea requiere métodos que sean robustos para los datos ruidosos, pero también puede producir modelos que sean más afines con el estado actual del conjunto de datos del tema en cuestión.
Aprendizaje fuera de línea: el aprendizaje fuera de línea se produce cuando el método se alimenta con datos preparados previamente, que, luego, se utilizan de manera operacional en datos no observados. El proceso de entrenamiento puede controlarse y puede ajustarse de forma cuidadosa, porque el alcance de los datos de entrenamiento es conocido [2].
Una vez definidos los conceptos básicos, tanto para los datos como para el aprendizaje, se puede pasar a conocer los tipos de problemas existentes dentro del entorno del aprendizaje máquina, así como los tipos de datos y tipos de aprendizaje utilizados en el desarrollo de los algoritmos del aprendizaje máquina.
1.4. Tipos de problemas
Existen varias clases comunes de problemas en el aprendizaje máquina. Las clases de problemas que se mencionan a continuación son arquetipos para la mayoría de los problemas, a los que nos referimos cuando el aprendizaje máquina es implementado:
Clasificación: se produce cuando los datos tienen una etiqueta, lo que significa que se les asignó una clase; por ejemplo, fraude/no fraude. La decisión que se modela consiste en asignar etiquetas a nuevos datos no etiquetados. Esto puede ser considerado como un problema al generar un discriminante y modelar las diferencias o similitudes entre grupos [3].
Regresión: los datos se encuentran etiquetados con un valor real en lugar de una etiqueta. Los ejemplos, fáciles de entender, son datos de series de tiempo, como el precio de un producto y sus variaciones, dentro de una ventana de tiempo. La decisión que se modela es la relación entre entradas y salidas.
Agrupamiento: en el agrupamiento, los datos no están etiquetados, pero se pueden dividir en grupos según la similitud y otras medidas de estructura natural en los datos. Un claro ejemplo reside en la segmentación de clientes en grupos con datos demográficos similares.
Extracción de reglas: en este tipo de problema, los datos se utilizan como base para la extracción de reglas proposicionales (antecedente/consecuente o si/entonces). Normalmente, estas reglas no están dirigidas, lo que significa que, con los métodos, se descubren relaciones estadísticamente compatibles entre atributos en los datos, que no necesariamente implican algo que se está prediciendo. Un ejemplo es el descubrimiento de la relación entre la compra de cerveza y pañales.
1.5. Tipos de datos
Para cumplir con los propósitos del análisis de datos y del modelado predictivo, resulta importante conocer el tipo de dato que se va a seleccionar, con el fin de ayudar a determinar el tipo de visualización, análisis de datos o modelo estadístico.
Continuo: lo constituyen los datos que pueden tomar cualquier valor dentro de un intervalo. Entre algunos ejemplos se encuentran la velocidad del viento, la distancia recorrida por un coche o la estatura de una persona.
Discreto: este tipo de datos puede tomar solo valores enteros; por ejemplo, el conteo de recurrencia de un evento o el número de clics de un sitio web.
Categórico: son datos que pueden tomar solo un conjunto específico de valores, los cuales representan un conjunto de categorías posibles, tales como el tipo de sangre o los estados de un país, entre otros.
Binario: los datos binarios suponen un caso especial dentro de los datos categóricos. Estos cuentan con solo dos categorías de valores: verdadero o falso; entre algunos ejemplos, enfermo/saludable, día/noche o activo/inactivo.
Ordinal: son datos categóricos que tienen un orden explícito; por ejemplo, la talla de ropa o la calificación numérica de un producto (1.°, 2.°, 3.°, 4.° o 5.°).
1.6. Tipos de aprendizajes
En el aprendizaje máquina se conocen tres tipos de aprendizaje: aprendizaje supervisado, aprendizaje no supervisado y aprendizaje por refuerzo. A continuación, se define cada uno de estos tipos de aprendizaje.
Aprendizaje supervisado: se corresponde con el proceso donde se generalizan las relaciones entre las observaciones de sus características de entrada y salida (etiqueta), donde este modelo de «relación» especula una salida (etiqueta) para producir nuevas observaciones. Este tipo de aprendizaje se utiliza cuando se requiere la predicción [4].
Aprendizaje no supervisado: este es un proceso de aprendizaje para generalizar la estructura en los datos donde no se requiere predicción. Las estructuras naturales son identificadas y explotadas para relacionar ciertas observaciones respecto a otras.
Aprendizaje por refuerzo: con este sistema de aprendizaje, llamado agente, se puede observar el entorno, seleccionar y realizar acciones, con la finalidad de obtener recompensas a cambio (o sanciones en forma de recompensas negativas). Luego, debe aprender por sí mismo cuál es la mejor estrategia, llamada política, para obtener la mayor recompensa con el paso del tiempo. Con una política, se define qué acción debe hacer el agente cuando se encuentra en una situación dada [5].
Una vez definidos y comprendidos los tipos de problemas, los tipos de datos y los tipos de aprendizajes, se puede pasar a conocer cuáles son las etapas requeridas para el desarrollo de sistemas basados en el aprendizaje máquina.
1.7. Etapas de implementación del aprendizaje máquina
La implementación de algoritmos de aprendizaje máquina implica una serie de pasos que son muy similares al proceso de modelado estadístico. Estos se dividen en cinco etapas: recopilación de datos, exploración y preparación de datos, entrenamiento, evaluación del modelo y, por último, mejora del modelo. En la figura 1.1 se pueden observar las etapas de implementación del aprendizaje máquina de una forma esquemática. Cada etapa se define a continuación.
Recopilación de datos: este paso implica reunir el material de aprendizaje que implementará un algoritmo para generar un conocimiento procesable. En la mayoría de los casos, los datos deberán combinarse en una sola fuente, como un archivo de texto, hoja de cálculo o base de datos.
Exploración y preparación de datos: la calidad de cualquier proyecto de aprendizaje automático se basa, en gran medida, en la calidad de sus datos de entrada. Para mejorar la calidad de los datos, estos requieren de una preparación especial para el proceso de aprendizaje. Esta preparación implica arreglar o limpiar los llamados datos «desordenados», eliminando datos innecesarios, y recodificando los datos para ajustarse a las entradas esperadas de la técnica de aprendizaje máquina.
Entrenamiento: ya que los datos han sido preparados, estos alimentan a la técnica o algoritmo específico, el cual construirá un modelo con base en los datos de entrenamiento.
Evaluación del modelo: debido a que cada modelo da como resultado un sesgo en la construcción del modelo que otorga la solución al problema, resulta importante evaluar cómo de eficiente es el aprendizaje del algoritmo durante su etapa de entrenamiento. Dependiendo del tipo de modelo utilizado, es posible valorar la precisión del modelo mediante una evaluación con los datos de prueba. En algunos casos, se requiere del desarrollo de medidas de rendimiento específicas para la aplicación prevista.
Mejora del modelo: si se necesita un mejor rendimiento, resulta fundamental utilizar estrategias más avanzadas para aumentar el rendimiento del modelo. Algunas veces, puede ser necesario cambiar a un tipo diferente de algoritmo de aprendizaje, con la finalidad de que el nuevo algoritmo pueda realizar la misma tarea de una manera más precisa. A su vez, puede que se requiera complementar los datos de entrenamiento con datos adicionales más representativos del problema abordado, o realizar un trabajo preparatorio adicional, como se indica en el paso 2 de este proceso (véase figura 1.1).
Figura 1.1. Etapas de implementación de un algoritmo de aprendizaje máquina.
1.8. Exploración y preparación de datos
La importancia de tener datos limpios y confiables resulta vital en cualquier proyecto de aprendizaje máquina. La falta de limpieza y confiabilidad en los datos que serán suministrados a nuestro algoritmo de aprendizaje máquina podría tener fuertes repercusiones, desde el mal empleo de recursos materiales hasta pérdidas humanas. Es bien sabido que cualquier proyecto de aprendizaje máquina emplea casi el 80 % de su tiempo en el proceso de preparación de datos, y solo el 20 % en el modelado de los datos y los resultados derivados de la técnica implementada de aprendizaje máquina. La limpieza o preparación de datos involucra procesos de detección, así como el abordaje de errores, omisiones e inconsistencias dentro de un conjunto de datos. La preparación de datos consta de procesos independientes, que son la «depuración de datos» y el «llenado de datos faltantes».
Importación de datos en MATLAB
Antes de llevar a cabo los procesos de depuración y llenado de datos faltantes, se deben obtener los datos que procesar; para ello, se importan los datos de diferentes formatos (csv o xlsx, etc.) al entorno de MATLAB. Esta es una tarea bastante sencilla, gracias a que MATLAB ya cuenta con un importador de datos integrado. Para este ejemplo se importarán datos que se encuentran en un formato común, que es el csv. Los pasos se describen a continuación.
El primer paso para importar los datos consiste en tener el entorno de MATLAB listo para usarse. Nos ubicamos en la «ventana de archivos» y hacemos doble clic sobre el archivo en cuestión que, para este caso, es «conjunto de datos Iris.csv», como se muestra en la figura 1.2. Enseguida se abrirá el «asistente de importación de datos», el cual nos presentará la información de forma matricial, donde las columnas son los campos de características, y las filas las observaciones.
Figura 1.2. Ventanas del entorno de MATLAB.
El objetivo es exportar los datos de las primeras siete observaciones, con sus cuatro primeros campos de características. Comenzamos al especificar un rango de observaciones deseadas (B2:E8). Después, definimos el nombre de la variable que contendrá la información seleccionada; para este ejemplo se llamará «datos». Luego, se elegirá el tipo de formato en el que se desea que se importe la información seleccionada. Los formatos posibles son: vectores columna, matriz numérica, arreglo de celdas o tabla. Para nuestro ejemplo se seleccionará la opción «Matriz numérica», y, finalmente, se presionará sobre la opción «importar». La secuencia de pasos para la importación de datos se muestra en la figura 1.3.
Figura 1.3. Pasos para importar datos al entorno de MATLAB.
Depuración de datos
La depuración de datos persigue los siguientes objetivos:
• Identificar datos atípicos, inexactos, incompletos, irrelevantes o corruptos, para eliminarlos de un procesamiento posterior
• Analizar datos, extraer información de interés o validar si los datos se encuentran en un formato aceptable
• Transformar los datos en un formato de escala de tiempo o rango normalizado
Llenado de valores perdidos
Los algoritmos del aprendizaje máquina, generalmente, no funcionan bien si se tienen valores faltantes. Es muy importante entender por qué falta un valor. Puede hacerlo debido a varias razones, tales como un error aleatorio, un fallo sistemático o ruido del sensor. Una vez identificada la razón, existen múltiples formas de lidiar con los valores que faltan, como se muestra en la siguiente lista:
Eliminar la observación: si se cuenta con suficientes datos y solo un par de las observaciones no relevantes tienen algunos valores faltantes, entonces es seguro eliminar estas observaciones.
Eliminar el atributo: eliminar un atributo tiene sentido cuando la mayoría de los valores faltan, los valores son constantes o el atributo se halla fuertemente correlacionado con otro atributo.
Asignar un valor especial N/D: algunas veces falta un valor, debido a diversas razones: que está fuera del alcance, que el valor de atributo discreto no se encuentra definido o que no resulta posible obtener o medir el valor en cuestión; por ejemplo, una persona nunca califica una película, por lo que su calificación en dicho filme es inexistente.
Tomar el valor de atributo promedio: en caso de que se cuente con un número limitado de observaciones, no resulta viable permitirse eliminar observaciones o atributos. En este caso, se pueden estimar los valores perdidos; por ejemplo, asignando el valor de atributo promedio o el valor promedio sobre observaciones similares.
Predecir el valor de otros atributos: se puede predecir el valor anterior de los datos de entrada si el atributo posee dependencias de tiempo.
Como se puede observar, el valor, o valores, puede faltar por muchas razones; por lo tanto, resulta importante entender por qué falta, está ausente o dañado para poder llenarlo correctamente.
Llenado de valores faltantes en MATLAB
Una vez importados los datos al entorno de MATLAB, se prosigue a presentar funciones y ejemplos de diferentes casos de aplicación sobre el llenado de valores faltantes. Los valores faltantes dependen del tipo de dato; a continuación, en la tabla 1.1, se puede observar el listado de los tipos de datos faltantes.
NaN(Not a Number) | Para los datos de tipo real o punto flotante (double y single) y extensiones de tiempo (duration y calendarDuration) |
NaT(Not a Time) | Para los datos que involucran tiempo o fechas (datetime) |
' ' | Para datos de tipo carácter (char) vacíos |
<missing> | Para cadenas (string) vacías |
{' '} | Para arreglos de celdas con cadenas vacías |
<undefined> | Para datos categóricos (categorical) no definidos |
Tabla 1.1. Tipos de datos faltantes.
Con la función ismissing de MATLAB se indica qué elementos de una tabla, matriz o vector son valores faltantes. El resultado que entrega es una matriz o vector lógico del tamaño del argumento de entrada. Esta función tiene la siguiente sintaxis:
DM = ismissing(V)
El ejemplo de cómo utilizar la función ismissing es presentado en el algoritmo 1.1, donde se define un vector V con valores de tipo enteros y valores faltantes. La función ismissing procesa el argumento de entrada V y el resultado de este procesamiento se entrega en DM, que es un vector de la misma dimensión de V con valores lógicos:
% Se define un vector con diferentes valores
V = [3 NaN 5 6 7 NaN NaN 9];
% Se ejecuta la función ismissing a los datos
DM = ismissing(V)
DM = 1x8 logical array
0 1 0 0 0 1 1 0
Algoritmo 1.1. Ejemplo del uso de la función ismissing de MATLAB.
A continuación, se definirá la tabla de datos D1, que contendrá datos tabulares de diferentes tipos de datos. Mediante la función table, se unirán a estos vectores y columnas, obteniendo como resultado la tabla D1. Dicho ejemplo es presentado en el algoritmo 1.2:
% Programa 1.2 para la Definición de una tabla en MatLAB
% Autores: Erik Cuevas, Omar Avalos, Arturo Valdivia y Primitivo Díaz
% Vector de observaciones de tipo entero
IntVar = [NaN;2;4;8;9;12;18;27];
% Vector de observaciones de tipo real
RealVar = single([1.1;NaN;5.2;7.3;9.4;11.5;16.6;21.7]);
% Vector de observaciones de tipo Celda con cadenas
celdcadVar = {'uno';'tres';'nueve';'siete';'diez';'doce';'veinte';'treinta'};
% Vector de observaciones de tipo caracter
caractVar = ['A';'B';'C';' ';'E';'F';'G';'H'];
% Vector de observaciones de tipo categóricas
categoVar = categorical({'rojo';'amarillo';'azul';'violeta';'';'morado';...
'naranja';'blanco'});
% Vector de observaciones de tipo fecha
fechaVar = [datetime(2014:1:2018,7,20) NaT datetime(2017,8,26)...
datetime(2017,10,8) ]';
% Vector de observaciones de tipo cadena
cadVar = ["a";"b";"c";"d";"e";"f";missing;"i"];
% Se crea una tabla usando los vectores como columnas mediante table
D1 = table(IntVar,RealVar,celdcadVar,caractVar,categoVar,fechaVar,cadVar)
Algoritmo 1.2. Definición de una tabla en MATLAB.
Para el siguiente ejemplo, se tomará la tabla de datos D1 que se definió en el algoritmo 1.2, donde la inspección de los datos que contiene la tabla D1 se observa en la figura 1.4. Para el siguiente ejemplo, se utilizará la función rmmissing para eliminar las observaciones con características faltantes de la tabla D1.
Figura 1.4. Inspección de datos correspondientes a la tabla D1.
Como se puede observar, la tabla de datos D1 contiene una serie de valores faltantes en diferentes filas. La última observación es la única que no contiene valores faltantes. El ejemplo consiste en remover todas las observaciones o filas que contengan, al menos, un valor faltante; por lo tanto, cabe esperar que solo la última fila sea retornada como resultado en la variable R. Esta función tiene la siguiente sintaxis:
R = rmmissing(D1)
La ejecución de la función rmmissing con el argumento D1 entregará el resultado que se muestra en la figura 1.5.
Figura 1.5. Resultado de eliminar las instancias con valores faltantes en la tabla D1.