Этот пример показывает, как обнаружить выбросы с помощью квантиля случайный лес. Квантиль случайный лес может обнаружить выбросы относительно условного распределения данный . Однако этот метод не может обнаружить выбросы в данных о предикторе. Для определения выбросов в данных о предикторе с помощью мешка деревьев решений смотрите свойство OutlierMeasure
модели TreeBagger
.
Выброс является наблюдением, которое расположено достаточно далеко от большинства других наблюдений в наборе данных и может быть рассмотрено аномальным. Причины отдаленных наблюдений включают свойственную изменчивость или погрешность измерения. Значительные оценки и вывод влияния выбросов, таким образом, важно обнаружить их и решить, удалить ли их или рассмотреть устойчивый анализ.
Программное обеспечение Statistics and Machine Learning Toolbox™ обеспечивает несколько функциональностей, чтобы обнаружить или удалить выбросы включая:
zscore
— Вычислите z множество наблюдений.
trimmean
— Оцените среднее значение данных, исключая выбросы.
boxplot
— Чертите диаграмму данных.
probplot
— Постройте график вероятности.
robustcov
— Оцените устойчивую ковариацию многомерных данных.
fitcsvm
— Соответствуйте машине вектора поддержки (SVM) одного класса, чтобы определить, какие наблюдения расположены далекие от контура решения.
Продемонстрировать определение выбросов, этот пример:
Генерирует данные из нелинейной модели с heteroscedasticity и моделирует несколько выбросов.
Выращивает квантиль случайный лес деревьев регрессии.
Оценочные условные квартили (, , и ) и межквартильный размах () в областях значений переменных прогноза.
Сравнивает наблюдения с заборами, которые являются количествами и . Любое наблюдение, которое является меньше, чем или больше, чем выброс.
Сгенерируйте 500 наблюдений из модели
равномерно распределено между 0 и , и . Храните данные в таблице.
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');
Вырастите мешок 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;
Несмотря на то, что условные средние и средние кривые близки, моделируемые выбросы могут влиять на среднюю кривую.
Вычислите условное выражение , , и .
iqr = quartiles(:,3) - quartiles(:,1); k = 1.5; f1 = quartiles(:,1) - k*iqr; f2 = quartiles(:,3) + k*iqr;
k = 1.5
означает, что все наблюдения, меньше, чем f1
или больше, чем f2
рассматриваются выбросами, но этот порог не снимает неоднозначность от экстремальных выбросов. 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
Все моделируемые выбросы идут снаружи , и некоторые наблюдения вне этого интервала также.