Обнаружение выбросов с помощью регрессии квантиля

В этом примере показано, как обнаружить выбросы с помощью случайного леса с количеством. Случайный лес Квантиля может обнаружить выбросы относительно условного распределения Y данный X. Однако этот метод не может обнаружить выбросы в данных предиктора. Для определения выбросов в данных предиктора с помощью пакета деревьев решений, смотрите OutlierMeasure свойство TreeBagger модель.

Выбросы являются наблюдением, которое находится достаточно далеко от большинства других наблюдений в наборе данных и может считаться аномальным. Причины окружающих наблюдений включают неотъемлемую изменчивость или ошибку измерения. Выбросы, значимые, влияют на оценки и выводы, поэтому важно обнаружить их и решить, удалять ли их или рассматривать устойчивый анализ.

Statistics and Machine Learning Toolbox™ предоставляет несколько функций для обнаружения выбросов, включая:

  • zscore - Вычислите z счетов наблюдений.

  • trimmean - Оценка среднего значения данных, исключая выбросы.

  • boxplot - Рисуйте прямоугольный график данных.

  • probplot - Нарисуйте график вероятностей.

  • robustcov - Оценка устойчивой ковариации многомерных данных.

  • fitcsvm - Подгонка одноклассной машины опорных векторов (SVM), чтобы определить, какие наблюдения расположены далеко от контура принятия решения.

  • dbscan - Разбить наблюдения на кластеры и идентифицировать выбросы с помощью основанной на плотности пространственной кластеризации приложения с шумом (DBSCAN) алгоритма.

Кроме того, MATLAB ® предоставляет isoutlier функция, которая находит выбросы в данных.

Чтобы продемонстрировать определение выбросов, этот пример:

  1. Генерирует данные нелинейной модели с гетероскедастичностью и имитирует несколько выбросов.

  2. Выращивает квантильный случайный лес регрессионых деревьев.

  3. Оценивает условные квартилии (Q1, Q2, и Q3) и межквартильная область значений (IQR) в областях значений переменных предиктора.

  4. Сравнивает наблюдения с ограждениями, которые являются величинами F1=Q1-1.5IQR и F2=Q3+1.5IQR. Любое наблюдение, которое меньше F1 или больше, чем F2 - это выбросы.

Сгенерируйте данные

Сгенерируйте 500 наблюдений из модели

yt=10+3t+tsin(2t)+εt.

t равномерно распределено между 0 и 4π, и εtN(0,t+0.01). Сохраните данные в таблице.

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);

Перемещайте пять наблюдений в случайном вертикальном направлении на 90% от значения отклика.

numOut = 5;
[~,idx] = datasample(Tbl,numOut);
Tbl.y(idx) = Tbl.y(idx) + randsample([-1 1],numOut,true)'.*(0.9*Tbl.y(idx));

Нарисуйте график поля точек данных и идентифицируйте выбросы.

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');

Figure contains an axes. The axes with title Scatter Plot of Data contains 2 objects of type line. These objects represent Data, Simulated outliers.

Выращивайте случайный лес квантиля

Выращивайте сумку из 200 деревьев регрессии, используя TreeBagger.

Mdl = TreeBagger(200,Tbl,'y','Method','regression');

Mdl является TreeBagger ансамбль.

Предсказание условных квартилей и межквартильных областей значений

Используя регрессию величины, оцените условные квартили с равными интервалами 50 значений в области значений t.

tau = [0.25 0.5 0.75];
predT = linspace(0,4*pi,50)';
quartiles = quantilePredict(Mdl,predT,'Quantile',tau);

quartiles является матрицей условных квартилей 500 на 3. Строки соответствуют наблюдениям в t, и столбцы соответствуют вероятностям в tau.

На график поля точек данных постройте график условного среднего и медианного откликов.

meanY = predict(Mdl,predT);

plot(predT,[quartiles(:,2) meanY],'LineWidth',2);
legend('Data','Simulated outliers','Median response','Mean response',...
    'Location','NorthWest');
hold off;

Figure contains an axes. The axes with title Scatter Plot of Data contains 4 objects of type line. These objects represent Data, Simulated outliers, Median response, Mean response.

Несмотря на то, что условные средние и средние кривые близки, моделируемые выбросы могут повлиять на среднюю кривую.

Вычислите условное IQR, F1, и F2.

iqr = quartiles(:,3) - quartiles(:,1);
k = 1.5;
f1 = quartiles(:,1) - k*iqr;
f2 = quartiles(:,3) + k*iqr;

k = 1.5 означает, что все наблюдения меньше f1 или больше f2 считаются выбросами, но этот порог не неоднозначен из-за экстремальных выбросов. A k от 3 определяет экстремальные выбросы.

Сравнение наблюдений с ограждениями

Постройте график наблюдений и ограждений.

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

Figure contains an axes. The axes with title Outlier Detection Using Quantile Regression contains 4 objects of type line. These objects represent Data, Simulated outliers, F_1, F_2.

Все моделируемые выбросы падают наружу [F1,F2], и некоторые наблюдения также находятся вне этого интервала.

См. также

Классы

Функции

Похожие темы