exponenta event banner

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

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

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

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 + цин (2t) + αt.

t равномерно распределяется между 0 и , и εt∼N (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], и некоторые наблюдения также выходят за пределы этого интервала.

См. также

Классы

Функции

Связанные темы