Лес изоляции для обнаружения аномалии
Используйте лес изоляции (ансамбль деревьев изоляции) объект модели IsolationForest
для определения выбросов и обнаружения новинки.
Определение выбросов (обнаруживающий аномалии в обучающих данных) — Обнаруживает аномалии в обучающих данных при помощи iforest
функция. iforest
функционируйте создает IsolationForest
возразите и возвращает индикаторы аномалии и музыку к обучающим данным.
Обнаружение новинки (обнаруживающий аномалии в новых данных с незагрязненными обучающими данными) — Создает IsolationForest
объект путем передачи незагрязненных обучающих данных (данные без выбросов) к iforest
, и обнаружьте аномалии в новых данных путем передачи объекта и новых данных к объектной функции isanomaly
. isanomaly
функция возвращает индикаторы аномалии и музыку к новым данным.
Создайте IsolationForest
объект при помощи iforest
.
CategoricalPredictors
— Категориальные индексы предиктора[]
Это свойство доступно только для чтения.
Категориальные индексы предиктора в виде вектора из положительных целых чисел. CategoricalPredictors
содержит значения индекса, указывающие, что соответствующие предикторы являются категориальными. Значения индекса между 1 и p
, где p
количество предикторов, используемых, чтобы обучить модель. Если ни один из предикторов не является категориальным, то это свойство пусто ([]
).
ContaminationFraction
— Часть аномалий в обучающих данных[0,1]
Это свойство доступно только для чтения.
Часть аномалий в обучающих данных в виде числового скаляра между 0 и 1.
Если ContaminationFraction
значение 0, затем iforest
обработки все учебные наблюдения как нормальные наблюдения, и устанавливают порог счета (ScoreThreshold
значение свойства) к максимальному значению баллов аномалии обучающих данных.
Если ContaminationFraction
значение находится в области значений (0
,1то
iforest
определяет пороговое значение (ScoreThreshold
значение свойства) так, чтобы функция обнаружила заданную часть учебных наблюдений как аномалии.
NumLearners
— Количество деревьев изоляцииЭто свойство доступно только для чтения.
Количество деревьев изоляции в виде положительного целочисленного скаляра.
NumObservationsPerLearner
— Количество наблюдений для каждого дерева изоляцииЭто свойство доступно только для чтения.
Количество наблюдений, чтобы чертить от обучающих данных без замены для каждого дерева изоляции в виде положительного целочисленного скаляра.
PredictorNames
— Имена переменного предиктораЭто свойство доступно только для чтения.
Переменный предиктор называет в виде массива ячеек из символьных векторов. Порядок элементов PredictorNames
соответствует порядку, в котором имена предиктора появляются в обучающих данных.
Типы данных: cell
ScoreThreshold
— Порог для счета аномалии[0,1]
Это свойство доступно только для чтения.
Порог для счета аномалии раньше идентифицировал аномалии в обучающих данных в виде числового скаляра между 0 и 1.
Программное обеспечение идентифицирует наблюдения с баллами аномалии выше порога как аномалии.
iforest
функция определяет пороговое значение, чтобы обнаружить заданную часть (ContaminationFraction
свойство) учебных наблюдений как аномалии.
isanomaly
возразите, что функция использует ScoreThreshold
значение свойства как значение по умолчанию ScoreThreshold
аргумент значения имени.
isanomaly | Найдите аномалии в данных с помощью леса изоляции |
Обнаружьте выбросы (аномалии в обучающих данных) при помощи iforest
функция.
Загрузите набор выборочных данных NYCHousing2015
.
load NYCHousing2015
Набор данных включает 10 переменных с информацией о продажах свойств в Нью-Йорке в 2 015. Распечатайте сводные данные набора данных
summary(NYCHousing2015)
Variables: BOROUGH: 91446x1 double Values: Min 1 Median 3 Max 5 NEIGHBORHOOD: 91446x1 cell array of character vectors BUILDINGCLASSCATEGORY: 91446x1 cell array of character vectors RESIDENTIALUNITS: 91446x1 double Values: Min 0 Median 1 Max 8759 COMMERCIALUNITS: 91446x1 double Values: Min 0 Median 0 Max 612 LANDSQUAREFEET: 91446x1 double Values: Min 0 Median 1700 Max 2.9306e+07 GROSSSQUAREFEET: 91446x1 double Values: Min 0 Median 1056 Max 8.9422e+06 YEARBUILT: 91446x1 double Values: Min 0 Median 1939 Max 2016 SALEPRICE: 91446x1 double Values: Min 0 Median 3.3333e+05 Max 4.1111e+09 SALEDATE: 91446x1 datetime Values: Min 01-Jan-2015 Median 09-Jul-2015 Max 31-Dec-2015
SALEDATE
столбцом является datetime
массив, который не поддерживается iforest
. Создайте столбцы для количеств месяца и дня datetime
значения, и удаляют SALEDATE
столбец.
[~,NYCHousing2015.MM,NYCHousing2015.DD] = ymd(NYCHousing2015.SALEDATE); NYCHousing2015.SALEDATE = [];
Столбцы BOROUGH
, NEIGHBORHOOD
, и BUILDINGCLASSCATEGORY
содержите категориальные предикторы. Отобразите количество категорий для категориальных предикторов.
length(unique(NYCHousing2015.BOROUGH))
ans = 5
length(unique(NYCHousing2015.NEIGHBORHOOD))
ans = 254
length(unique(NYCHousing2015.BUILDINGCLASSCATEGORY))
ans = 48
Для категориальной переменной больше чем с 64 категориями, iforest
функционируйте использует аппроксимированный метод разделения, который может уменьшать точность лесной модели изоляции. Удалите NEIGHBORHOOD
столбец, который содержит категориальную переменную с 254 категориями.
NYCHousing2015.NEIGHBORHOOD = [];
Обучите лесную модель изоляции NYCHousing2015
. Задайте часть аномалий в учебных наблюдениях как 0,1 и задайте первую переменную (BOROUGH
) как категориальный предиктор. Первая переменная является числовым массивом, таким образом, iforest
принимает, что это - непрерывная переменная, если вы не задаете переменную как категориальную переменную.
rng("default") % For reproducibility [Mdl,tf,scores] = iforest(NYCHousing2015,ContaminationFraction=0.1, ... CategoricalPredictors=1);
Mdl
IsolationForest
объект. iforest
также возвращает индикаторы аномалии (tf
) и баллы аномалии (scores
) для обучающих данных NYCHousing2015
.
Постройте гистограмму значений баллов. Создайте вертикальную линию в пороге счета, соответствующем заданной части.
histogram(scores) xline(Mdl.ScoreThreshold,"r-",["Threshold" Mdl.ScoreThreshold])
Если вы хотите идентифицировать аномалии с различной частью загрязнения (например, 0.01), можно переобучить лесную модель изоляции.
rng("default") % For reproducibility [newMdl,newtf,scores] = iforest(NYCHousing2015, ... ContaminationFraction=0.01,CategoricalPredictors=1);
Если вы хотите идентифицировать аномалии с различным пороговым значением счета (например, 0.65), можно передать IsolationForest
объект, обучающие данные и новое пороговое значение к isanomaly
функция.
[newtf,scores] = isanomaly(Mdl,NYCHousing2015,ScoreThreshold=0.65);
Обратите внимание на то, что изменение части загрязнения или порога счета не изменяет баллы аномалии. Поэтому, если вы не хотите вычислять баллы аномалии снова при помощи iforest
или isanomaly
, можно получить новый идентификатор аномалии с существующими значениями баллов.
Измените часть аномалий в обучающих данных к 0,01.
newContaminationFraction = 0.01;
Найдите новый порог счета при помощи quantile
функция.
newScoreThreshold = quantile(scores,1-newContaminationFraction)
newScoreThreshold = 0.6597
Получите новый идентификатор аномалии.
newtf = scores > newScoreThreshold;
Создайте IsolationForest
объект для незагрязненных учебных наблюдений при помощи iforest
функция. Затем обнаружьте новинки (аномалии в новых данных) путем передачи объекта и новых данных к объектному функциональному isanomaly
.
Загрузите 1 994 данных о переписи, хранимых в census1994.mat
. Набор данных состоит из демографических данных Бюро переписи США, чтобы предсказать, передает ли индивидуум 50 000$ в год.
load census1994
census1994
содержит обучающий набор данных adultdata
и тестовые данные устанавливают adulttest
.
Обучите лесную модель изоляции adultdata
. Примите тот adultdata
не содержит выбросы.
rng("default") % For reproducibility [Mdl,tf,s] = iforest(adultdata);
Mdl
IsolationForest
объект. iforest
также возвращает индикатор tf
аномалии и баллы аномалии
s
для обучающих данных adultdata
. Если вы не задаете ContaminationFraction
аргумент значения имени как значение, больше, чем 0, затем iforest
обработки все учебные наблюдения как нормальные наблюдения, то есть, значения в tf
весь логический ноль (false
). Функция устанавливает порог счета к максимальному значению баллов. Отобразите пороговое значение.
Mdl.ScoreThreshold
ans = 0.8600
Используйте обученную лесную модель изоляции, чтобы найти аномалии в adulttest
.
[tf_test,s_test] = isanomaly(Mdl,adulttest);
isanomaly
функция возвращает индикаторы tf_test
аномалии и баллы
s_test
для adulttest
. По умолчанию, isanomaly
идентифицирует наблюдения с баллами выше порога (Mdl.ScoreThreshold
) как аномалии.
Создайте гистограммы для баллов аномалии s
и s_test
. Создайте вертикальную линию в пороге баллов аномалии.
histogram(s,Normalization="probability") hold on histogram(s_test,Normalization="probability") xline(Mdl.ScoreThreshold,"r-",join(["Threshold" Mdl.ScoreThreshold])) legend("Training Data","Test Data",Location="northwest") hold off
Отобразите индекс наблюдения аномалий в тестовых данных.
find(tf_test)
ans = 15655
Распределение счета аномалии тестовых данных похоже на те из обучающих данных, таким образом, isanomaly
обнаруживает небольшое количество аномалий в тестовых данных с пороговым значением по умолчанию. Можно задать различное пороговое значение при помощи ScoreThreshold
аргумент значения имени. Для примера смотрите, Задают Порог Счета Аномалии.
Лесной алгоритм изоляции [1] обнаруживает аномалии путем изоляции аномалий от нормальных точек с помощью ансамбля деревьев изоляции.
iforest
функционируйте создает лес изоляции (ансамбль деревьев изоляции) для учебных наблюдений и обнаруживает выбросы (аномалии в обучающих данных). Каждое дерево изоляции обучено подмножеству учебных наблюдений, произведенных без замен. iforest
выращивает дерево изоляции путем выбора переменной разделения и положения разделения наугад, пока каждое наблюдение в подмножестве не приземляется в отдельной вершине. Аномалии - немногие и отличающийся; поэтому, аномалия приземляется в отдельной вершине ближе к корневому узлу и имеет более короткую длину пути (расстояние от корневого узла до вершины), чем нормальные точки. Функция идентифицирует выбросы с помощью баллов аномалии, заданных на основе средних длин пути по всем деревьям изоляции.
isanomaly
функционируйте использует обученный лес изоляции, чтобы обнаружить аномалии в данных. Для обнаружения новинки (обнаруживающий аномалии в новых данных с незагрязненными обучающими данными), можно обучить лес изоляции с незагрязненными обучающими данными (данные без выбросов) и использовать его, чтобы обнаружить аномалии в новых данных. Для каждого наблюдения за новыми данными функция находит, что средняя длина пути достигает вершины от корневого узла в обученном лесу изоляции и возвращает идентификатор аномалии и счет.
Для получения дополнительной информации смотрите Обнаружение Аномалии с Лесом Изоляции.
Лесной алгоритм изоляции вычисляет счет аномалии s (x) наблюдения x путем нормализации длины пути h (x):
где E [h (x)] является средней длиной пути по всем деревьям изоляции в лесу изоляции, и c (n) является средней длиной пути неудачных поисковых запросов в дереве двоичного поиска наблюдений n.
Счет приближается 1 как E [h (x)] приближается 0. Поэтому значение баллов близко к 1 указывает на аномалию.
Счет приближается 0 как E [h (x)] приближается к n – 1. Кроме того, счет приближается 0.5, когда E [h (x)] приближается к c (n). Поэтому значение баллов, меньшее, чем 0,5 и близко к 0, указывает на нормальную точку.
[1] Лю, F. T. К. М. Тинг и Цз. Чжоу. "Лес изоляции", 2 008 Восьмых Международных конференций IEEE по вопросам Анализа данных. Пиза, Италия, 2008, стр 413-422.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.