Обнаружение аномалии модели специфичное

Statistics and Machine Learning Toolbox™ обеспечивает функции обнаружения аномалии модели специфичные, которые можно применить после обучения классификация, регрессия или кластеризирующаяся модель. Например, можно обнаружить аномалии при помощи этих объектных функций:

  • Матрица близости — outlierMeasure для случайного леса (CompactTreeBagger)

  • Расстояние Mahalanobis — mahal для классификатора дискриминантного анализа (ClassificationDiscriminant) и mahal для смешанной гауссовской модели (gmdistribution)

  • Безусловная плотность вероятности — logp для классификатора дискриминантного анализа (ClassificationDiscriminant), logp для наивного классификатора Байеса (ClassificationNaiveBayes), и logp для наивного классификатора Байеса для пошагового обучения (incrementalClassificationNaiveBayes)

Для получения дополнительной информации смотрите страницы ссылки на функцию.

Обнаружьте выбросы после учебного случайного леса

Обучите случайный лесной классификатор при помощи TreeBagger функция, и обнаруживает выбросы в обучающих данных при помощи объектного функционального outlierMeasure.

Обучите случайный лесной классификатор

Загрузите ionosphere набор данных, который содержит радар, возвращает качества (Y) и данные о предикторе (X) для 34 переменных. Радар возвращается, или имеют хорошее качество ('g') или плохое качество ('b').

load ionosphere

Обучите случайный лесной классификатор. Храните информацию из сумки для оценки важности предиктора.

rng("default") % For reproducibility
Mdl_TB = TreeBagger(100,X,Y,Method="classification", ...
    OOBPredictorImportance="on");

Mdl_TB TreeBagger объект модели для классификации. TreeBagger важность предиктора хранилищ оценивает в свойстве OOBPermutedPredictorDeltaError.

Обнаружьте выбросы Используя близость

Обнаружьте выбросы в обучающих данных при помощи outlierMeasure функция. Функция вычисляет меры по выбросу на основе средней близости в квадрате между одним наблюдением и другими наблюдениями в обученном случайном лесу.

CMdl_TB = compact(Mdl_TB);
s_proximity = outlierMeasure(CMdl_TB,X,Labels=Y);

Высокое значение меры по выбросу указывает, что наблюдение является выбросом. Найдите порог, соответствующий 95-й процентили, и идентифицируйте выбросы при помощи isoutlier функция.

[TF,~,U] = isoutlier(s_proximity,Percentiles=[0 95]);

Постройте гистограмму мер по выбросу. Создайте вертикальную линию в пороге выброса.

histogram(s_proximity)
xline(U,"r-",join(["Threshold =" U]))
title("Histogram of Outlier Measures")

Figure contains an axes object. The axes object with title Histogram of Outlier Measures contains 2 objects of type histogram, constantline.

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

[~,idx] = sort(Mdl_TB.OOBPermutedPredictorDeltaError,'descend');
TF_c = categorical(TF,[0 1],["Normal Points" "Anomalies"]);
gscatter(X(:,idx(1)),X(:,idx(2)),TF_c,"kr",".x",[],"on", ...
    Mdl_TB.PredictorNames(idx(1)),Mdl_TB.PredictorNames(idx(2)))

Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent Normal Points, Anomalies.

Обучите классификатор снова без выбросов и постройте гистограмму мер по выбросу.

Mdl_TB = TreeBagger(100,X(~TF,:),Y(~TF),Method="classification");
s_proximity = outlierMeasure(CMdl_TB,X(~TF,:),Labels=Y(~TF));
histogram(s_proximity)
title("Histogram of Outlier Measures After Removing Outliers")

Figure contains an axes object. The axes object with title Histogram of Outlier Measures After Removing Outliers contains an object of type histogram.

Обнаружьте выбросы после учебного классификатора дискриминантного анализа

Обучите модель дискриминантного анализа при помощи fitcdiscr функция, и обнаруживает выбросы в обучающих данных при помощи объектных функций logp и mahal.

Обучите модель дискриминантного анализа

Загрузите ирисовый набор данных Фишера. Матричный meas содержит цветочные измерения для 150 различных цветов. Переменная species перечисляет разновидности для каждого цветка.

load fisheriris

Обучите модель дискриминантного анализа использование целого набора данных.

Mdl = fitcdiscr(meas,species,PredictorNames= ...
    ["Sepal Length" "Sepal Width" "Petal Length" "Petal Width"]);

Mdl ClassificationDiscriminant модель.

Обнаружьте выбросы Используя журнал безусловная плотность вероятности

Вычислите журнал безусловные плотности вероятности обучающих данных.

s_logp = logp(Mdl,meas);

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

Определите более низкий порог плотности для выбросов при помощи isoutlier функция.

[~,L_logp] = isoutlier(s_logp);

Идентифицируйте выбросы при помощи порога.

TF_logp = s_logp < L_logp;

Постройте гистограмму значений плотности. Создайте вертикальную линию в пороге выброса.

figure
histogram(s_logp)
xline(L_logp,"r-",join(["Threshold =" L_logp]))
title("Histogram of Log Unconditional Probability Densities ")

Figure contains an axes object. The axes object with title Histogram of Log Unconditional Probability Densities contains 2 objects of type histogram, constantline.

Чтобы сравнить значения наблюдения между нормальными точками и аномалиями, создайте матрицу сгруппированных гистограмм и сгруппированных графиков рассеивания для каждой комбинации переменных при помощи gplotmatrix функция.

TF_logp_c = categorical(TF_logp,[0 1],["Normal Points" "Anomalies"]);
gplotmatrix(meas,[],TF_logp_c,"kr",".x",[],[],[],Mdl.PredictorNames)

Figure contains 16 axes objects. Axes object 1 contains 2 objects of type line. Axes object 2 contains 2 objects of type line. Axes object 3 contains 2 objects of type line. Axes object 4 contains 2 objects of type line. Axes object 5 contains 2 objects of type line. Axes object 6 contains 2 objects of type line. Axes object 7 contains 2 objects of type line. Axes object 8 contains 2 objects of type line. Axes object 9 contains 2 objects of type line. Axes object 10 contains 2 objects of type line. Axes object 11 contains 2 objects of type line. Axes object 12 contains 2 objects of type line. Axes object 13 contains 2 objects of type line. Axes object 14 contains 2 objects of type line. Axes object 15 contains 2 objects of type line. Axes object 16 contains 2 objects of type line. These objects represent Normal Points, Anomalies.

Обнаружьте выбросы Используя расстояние Mahalanobis

Найдите расстояния Mahalanobis в квадрате от обучающих данных до средних значений класса истинных меток.

s_mahal = mahal(Mdl,meas,ClassLabels=species);

Большое значение расстояния указывает, что соответствующее наблюдение является выбросом.

Определите порог, соответствующий 95-й процентили, и идентифицируйте выбросы при помощи isoutlier функция.

[TF_mahal,~,U_mahal] = isoutlier(s_mahal,Percentiles=[0 95]);

Постройте гистограмму расстояний. Создайте вертикальную линию в пороге выброса.

figure
histogram(s_mahal)
xline(U_mahal,"-r",join(["Threshold =" U_mahal]))
title("Histogram of Mahalanobis Distances")

Figure contains an axes object. The axes object with title Histogram of Mahalanobis Distances contains 2 objects of type histogram, constantline.

Сравните значения наблюдения между нормальными точками и аномалиями при помощи gplotmatrix функция.

TF_mahal_c = categorical(TF_mahal,[0 1],["Normal Points" "Anomalies"]);
gplotmatrix(meas,[],TF_mahal_c,"kr",".x",[],[],[],Mdl.PredictorNames)

Figure contains 16 axes objects. Axes object 1 contains 2 objects of type line. Axes object 2 contains 2 objects of type line. Axes object 3 contains 2 objects of type line. Axes object 4 contains 2 objects of type line. Axes object 5 contains 2 objects of type line. Axes object 6 contains 2 objects of type line. Axes object 7 contains 2 objects of type line. Axes object 8 contains 2 objects of type line. Axes object 9 contains 2 objects of type line. Axes object 10 contains 2 objects of type line. Axes object 11 contains 2 objects of type line. Axes object 12 contains 2 objects of type line. Axes object 13 contains 2 objects of type line. Axes object 14 contains 2 objects of type line. Axes object 15 contains 2 objects of type line. Axes object 16 contains 2 objects of type line. These objects represent Normal Points, Anomalies.

Смотрите также

| | | | | |

Похожие темы