Читать книгу Introducción al Machine Learning con MATLAB - Erik Cuevas Jiménez - Страница 20
Tratamiento de datos atípicos
ОглавлениеLos datos atípicos son los valores extremos que se presentan en ciertas observaciones; generalmente, es necesario tratarlos, ya sea eliminándolos o transformándolos. La función isoutlier de MATLAB toma un argumento de entrada, ya sea una tabla, matriz o vector D. Esta función devuelve una matriz o vector lógico AD, cuyos elementos verdaderos corresponden a la detección de valores atípicos. Esta función tiene la siguiente sintaxis:
AD = isoutlier(D)
Por defecto, se considera que un valor es atípico cuando se encuentra alejado a más de tres desviaciones absolutas de medianas (DAM) escaladas. Si D es una matriz o tabla, entonces isoutlier opera en cada columna por separado.
En el presente ejemplo se eliminarán los valores atípicos encontrados en las observaciones VD. Se parte del vector de observaciones VD, que contiene los valores atípicos. La función isoutlier detecta qué elementos son valores atípicos, dado el criterio DAM, y los guarda en AD. Las observaciones atípicas se eliminarán del vector de observaciones usando la siguiente expresión:
VD(AD)=[]
Lo que realiza esta expresión es eliminar las posiciones correspondientes a los valores de verdadero de AD. El ejemplo completo se presenta a continuación en el algoritmo 1.3:
% Autores: Erik Cuevas, Omar Avalos, Arturo Valdivia y Primitivo Díaz
% Se define un vector de datos
VD = [59 58 48 51 55 91 64 63 50 95];
% Se procesa el vector DS para la detección de valores atípicos
[AD] = isoutlier(VD);
% Se eliminan los valores atípicos
VD(AD)=[]
VD = 59 58 48 51 55 64 63 50
Cuando se cuenta con suficientes observaciones es posible eliminar observaciones con valores atípicos; sin embargo, cuando las observaciones son reducidas, los datos atípicos deben ser transformados para evitar reducir el conjunto de observaciones. Dentro del entorno de MATLAB, se puede encontrar la función filloutliers, la cual toma como argumento a D, que puede ser una tabla, matriz o vector, además de un parámetro llamado 'MetododeLlenado',con el que se especifica qué método se utilizará para sustituir los valores atípicos encontrados bajo el criterio DAM:
[F,Ui,Us,C] = filloutliers(D,'MetododeLlenado');
Con la función filloutliers se buscan los valores atípicos existentes en D bajo el criterio DAM, y se reemplazan los valores atípicos empleando una metodología de llenado que especifica el usuario. A continuación, en la tabla 1.2, se presentan los posibles valores que puede tomar el 'MetododeLlenado'.
Escalar | Llena los datos atípicos con un dato escalar |
'center' | Llena los datos atípicos con el centro del criterio DAM |
'clip' | Llena los datos atípicos con el valor umbral inferior para elementos más pequeños que el umbral inferior determinado por el criterio DAM Llena con el valor de umbral superior para elementos mayores que el límite superior determinado por el criterio DAM |
'previous' | Llena los datos atípicos con el valor anterior no atípico |
'next' | Llena los datos atípicos con el valor siguiente no atípico |
'nearest' | Llena los datos atípicos con el valor más cercano no atípico |
'linear' | Llena los datos atípicos empleando la interpolación lineal de los valores no atípicos vecinos |
'spline' | Llena los datos atípicos empleando la interpolación de spline cúbico por parte de los valores no atípicos vecinos |
'pchip' | Llena los datos atípicos empleando la interpolación cúbica polinomial de los valores no atípicos vecinos |
Tabla 1.2. Posibles valores que toma el método de llenado.
La función filloutliers retornará cuatro valores: F es el vector resultante sin valores atípicos; Ui, el umbral inferior del criterio DAM; Us, el umbral superior del criterio DAM; y C, el centro del criterio DAM, que corresponde a la mediana de los datos.
A continuación, en el algoritmo 1.4, se muestra un ejemplo para rellenar datos atípicos empleando la función filloutliers, donde se aplica el parámetro ‘linear’, para que los datos atípicos sean reemplazados por valores generados de una interpolación lineal de los valores vecinos que no sean atípicos. De forma adicional, se grafican los umbrales del criterio DAM y del centro de las observaciones:
% Autores: Erik Cuevas, Omar Avalos, Arturo Valdivia y Primitivo Díaz
% Vector de observaciones
D = [59 58 48 51 55 101 64 63 50 20];
% Se contabiliza cuántos elementos tiene el vector D
N=numel(D);
% Se define el vector del eje x
x = 1:N;
% Se rellenan los avalores atípicas del vector D
[F,TF,Ui,Us,C] = filloutliers(D,'linear');
% Se grafica de forma comparativa los datos originales contra los
% datos generados por filloutliers del vector D
plot(x,D,x,F,'o',x,Ui*ones(1,N),x,Us*ones(1,N),x,C*ones(1,N))
legend('Datos originales','Datos transformados','Umbral...
inferior','Umbral superior','Centro de los datos')
Algoritmo 1.4. Ejemplo del uso de la función filloutliers en MATLAB.
En la figura 1.6 se puede visualizar el gráfico generado por el algoritmo 1.4. La línea azul representa los datos originales, mientras que los datos procesados se muestran por medio de los círculos naranjas. Además, el color morado indica el umbral superior; el color amarillo se encuentra el umbral inferior, y el interlineado verde representa el centro de las observaciones.
Figura 1.6. Procesamiento de datos atípicos por filloutliers.