Erik Cuevas Jiménez

Introducción al Machine Learning con MATLAB


Скачать книгу

      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.

Illustration

      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

      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

      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)