Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.
Este ejemplo muestra cómo detectar valores atípicos mediante el bosque aleatorio cuantil. El bosque aleatorio cuantil puede detectar valores atípicos con respecto a la distribución condicional de OutlierMeasure
TreeBagger
Una es una observación que se encuentra lo suficientemente lejos de la mayoría de las otras observaciones en un conjunto de datos y puede considerarse anómala.outlier Las causas de las observaciones periféricas incluyen variabilidad inherente o error de medición. Los valores atípicos afectan significativamente a las estimaciones y a la inferencia, por lo que es importante detectarlos y decidir si eliminarlos o considerar un análisis robusto.
El software estadísticas y machine learning Toolbox™ proporciona varias funcionalidades para detectar o eliminar valores atípicos, incluidos:
— Calcular las puntuaciones de las observaciones.zscore
z
— Estimación de la media de los datos, excluyendo los valores atípicos.trimmean
— Dibujar parcela de datos.boxplot
— Dibujar gráfica de probabilidad.probplot
— Estimar la covarianza robusta de los datos multivariados.robustcov
— Ajuste una máquina de vectores de soporte (SVM) de una clase para determinar qué observaciones se encuentran lejos del límite de decisión.fitcsvm
Para demostrar la detección de valores atípicos, este ejemplo:
Genera datos de un modelo no lineal con heteroscedasticidad y simula algunos valores atípicos.
Crece un bosque aleatorio cuantil de árboles de regresión.
Estima cuarles condicionales (
Compara las observaciones con las, que son las cantidadesfences
Genere 500 observaciones del modelo
n = 500; rng('default'); % For reproducibility t = randsample(linspace(0,4*pi,1e6),n,true)'; epsilon = randn(n,1).*sqrt((t+0.01)); y = 10 + 3*t + t.*sin(2*t) + epsilon; Tbl = table(t,y);
Mueva cinco observaciones en una dirección vertical aleatoria en un 90% del valor de la respuesta.
numOut = 5; [~,idx] = datasample(Tbl,numOut); Tbl.y(idx) = Tbl.y(idx) + randsample([-1 1],numOut,true)'.*(0.9*Tbl.y(idx));
Dibuje un gráfico de dispersión de los datos e identifique los valores atípicos.
figure; plot(Tbl.t,Tbl.y,'.'); hold on plot(Tbl.t(idx),Tbl.y(idx),'*'); axis tight; ylabel('y'); xlabel('t'); title('Scatter Plot of Data'); legend('Data','Simulated outliers','Location','NorthWest');
Cultivar una bolsa de 200 árboles de regresión usando.TreeBagger
Mdl = TreeBagger(200,Tbl,'y','Method','regression');
es un conjunto.Mdl
TreeBagger
Utilizando la regresión cuantitativa, calcule los cuartil condicionales de 50 valores igualmente espaciados dentro del rango de.t
tau = [0.25 0.5 0.75]; predT = linspace(0,4*pi,50)'; quartiles = quantilePredict(Mdl,predT,'Quantile',tau);
es una matriz de 500-por-3 de cuarles condicionales.quartiles
Las filas corresponden a las observaciones y las columnas corresponden a las probabilidades en.t
tau
En el gráfico de dispersión de los datos, trace la media condicional y las respuestas de la mediana.
meanY = predict(Mdl,predT); plot(predT,[quartiles(:,2) meanY],'LineWidth',2); legend('Data','Simulated outliers','Median response','Mean response',... 'Location','NorthWest'); hold off;
Aunque la media condicional y las curvas medianas están próximas, los valores atípicos simulados pueden afectar a la curva media.
Calcule el condicional
iqr = quartiles(:,3) - quartiles(:,1); k = 1.5; f1 = quartiles(:,1) - k*iqr; f2 = quartiles(:,3) + k*iqr;
significa que todas las observaciones menores o mayores que se consideran valores atípicos, pero este umbral no elimina la ambigüedad de los valores atípicos extremos.k = 1.5
f1
f2
A de identifica valores atípicos extremos.k
3
Trazar las observaciones y las vallas.
figure; plot(Tbl.t,Tbl.y,'.'); hold on plot(Tbl.t(idx),Tbl.y(idx),'*'); plot(predT,[f1 f2]); legend('Data','Simulated outliers','F_1','F_2','Location','NorthWest'); axis tight title('Outlier Detection Using Quantile Regression') hold off
Todos los valores atípicos simulados caen fuera