isanomaly

Найдите аномалии в данных с помощью леса изоляции

    Описание

    пример

    tf = isanomaly(forest,Tbl) находит аномалии в таблице Tbl использование IsolationForest объект forest и возвращает логический массив tf, чьими элементами является true когда аномалия обнаруживается в соответствующей строке Tbl. Необходимо использовать этот синтаксис, если вы создаете forest путем передачи таблицы iforest функция.

    tf = isanomaly(forest,X) находит аномалии в матричном X. Необходимо использовать этот синтаксис, если вы создаете forest путем передачи матрицы iforest функция.

    пример

    tf = isanomaly(___,Name=Value) задает опции с помощью одной или нескольких комбинаций аргументов значения имени в дополнение к любому из входных параметров в предыдущих синтаксисах. Например, установите ScoreThreshold=0.5 идентифицировать наблюдения с баллами выше 0.5 как аномалии.

    [tf,scores] = isanomaly(___) также возвращает счет аномалии в области значений [0,1] для каждого наблюдения в Tbl или X. Значение баллов близко к 0 указывает на нормальное наблюдение, и значение близко к 1 указывает на аномалию.

    Примеры

    свернуть все

    Создайте 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

    Figure contains an axes object. The axes object contains 3 objects of type histogram, constantline. These objects represent Training Data, Test Data.

    Отобразите индекс наблюдения аномалий в тестовых данных.

    find(tf_test)
    ans = 15655
    

    Распределение счета аномалии тестовых данных похоже на те из обучающих данных, таким образом, isanomaly обнаруживает небольшое количество аномалий в тестовых данных с пороговым значением по умолчанию. Можно задать различное пороговое значение при помощи ScoreThreshold аргумент значения имени. Для примера смотрите, Задают Порог Счета Аномалии.

    Задайте пороговое значение на баллах аномалии при помощи ScoreThreshold аргумент значения имени isanomaly.

    Загрузите 1 994 данных о переписи, хранимых в census1994.mat. Набор данных состоит из демографических данных Бюро переписи США, чтобы предсказать, передает ли индивидуум 50 000$ в год.

    load census1994

    census1994 содержит обучающий набор данных adultdata и тестовые данные устанавливают adulttest.

    Обучите лесную модель изоляции adultdata.

    rng("default") % For reproducibility
    [Mdl,tf,scores] = iforest(adultdata);

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

    histogram(scores,Normalization="probability");
    xline(Mdl.ScoreThreshold,"r-",join(["Threshold" Mdl.ScoreThreshold]))

    Figure contains an axes object. The axes object contains 2 objects of type histogram, constantline.

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

    Определите порог счета при помощи isoutlier функция.

    [~,~,U] = isoutlier(scores)
    U = 0.7449
    

    Задайте ScoreThreshold аргумент имя-значение как U.

    [tf_test,scores_test] = isanomaly(Mdl,adulttest,ScoreThreshold=U);
    histogram(scores_test,Normalization="probability")
    xline(U,"r-",join(["Threshold" U]))

    Figure contains an axes object. The axes object contains 2 objects of type histogram, constantline.

    Входные параметры

    свернуть все

    Обученная лесная модель изоляции в виде IsolationForest объект.

    Данные о предикторе в виде таблицы. Каждая строка Tbl соответствует одному наблюдению, и каждый столбец соответствует одному переменному предиктору. Многостолбцовые переменные и массивы ячеек кроме массивов ячеек из символьных векторов не позволены.

    Если вы обучаете forest с помощью таблицы затем необходимо обеспечить данные о предикторе при помощи Tbl, не X. Все переменные предикторы в Tbl должен иметь те же имена переменных и типы данных как те в обучающих данных. Однако порядок следования столбцов в Tbl не должен соответствовать порядку следования столбцов обучающих данных.

    Типы данных: table

    Данные о предикторе в виде числовой матрицы. Каждая строка X соответствует одному наблюдению, и каждый столбец соответствует одному переменному предиктору.

    Если вы обучаете forest с помощью матрицы затем необходимо обеспечить данные о предикторе при помощи X, не Tbl. Переменные, которые составляют столбцы X должен иметь тот же порядок как обучающие данные.

    Типы данных: single | double

    Аргументы name-value

    Задайте дополнительные пары аргументов как Name1=Value1,...,NameN=ValueN, где Name имя аргумента и Value соответствующее значение. Аргументы name-value должны появиться после других аргументов, но порядок пар не имеет значения.

    Пример: ScoreThreshold=0.75,UseParallel=true устанавливает порог для счета аномалии к 0,75 и дает функции команду запускать расчеты параллельно.

    Порог для аномалии выигрывает в виде числового скаляра между 0 и 1. isanomaly идентифицирует наблюдения с баллами выше порога как аномалии.

    Значением по умолчанию является ScoreThreshold значение свойства forest.

    Пример: ScoreThreshold=0.5

    Типы данных: single | double

    Отметьте, чтобы запуститься параллельно в виде true или false. Если вы задаете UseParallel=true, isanomaly функция выполняет обработки в цикле параллельно при помощи parfor. Эта опция требует Parallel Computing Toolbox™.

    Пример: UseParallel=true

    Типы данных: логический

    Выходные аргументы

    свернуть все

    Индикаторы аномалии, возвращенные как логический вектор-столбец. Элемент tf true когда наблюдение в соответствующей строке Tbl или X аномалия и false в противном случае. tf имеет ту же длину как Tbl или X.

    isanomaly идентифицирует наблюдения с scores выше порога (ScoreThreshold значение) как аномалии.

    Баллы аномалии, возвращенные как числовой вектор-столбец, значения которого между 0 и 1. scores имеет ту же длину как Tbl или X, и каждый элемент scores содержит оценку аномалии для наблюдения в соответствующей строке Tbl или X. Значение баллов близко к 0 указывает на нормальное наблюдение, и значение близко к 1 указывает на аномалию.

    Больше о

    свернуть все

    Лес изоляции

    Лесной алгоритм изоляции [1] обнаруживает аномалии путем изоляции аномалий от нормальных точек с помощью ансамбля деревьев изоляции.

    iforest функционируйте создает лес изоляции (ансамбль деревьев изоляции) для учебных наблюдений и обнаруживает выбросы (аномалии в обучающих данных). Каждое дерево изоляции обучено подмножеству учебных наблюдений, произведенных без замен. iforest выращивает дерево изоляции путем выбора переменной разделения и положения разделения наугад, пока каждое наблюдение в подмножестве не приземляется в отдельной вершине. Аномалии - немногие и отличающийся; поэтому, аномалия приземляется в отдельной вершине ближе к корневому узлу и имеет более короткую длину пути (расстояние от корневого узла до вершины), чем нормальные точки. Функция идентифицирует выбросы с помощью баллов аномалии, заданных на основе средних длин пути по всем деревьям изоляции.

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

    Для получения дополнительной информации смотрите Обнаружение Аномалии с Лесом Изоляции.

    Баллы аномалии

    Лесной алгоритм изоляции вычисляет счет аномалии s (x) наблюдения x путем нормализации длины пути h (x):

    s(x)=2E[h(x)]c(n),

    где 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, указывает на нормальную точку.

    Алгоритмы

    isanomaly рассматривает NaN, '' (пустой символьный вектор), "" (пустая строка), <missing>, и <undefined> значения в Tbl и NaN значения в X быть отсутствующими значениями.

    • isanomaly не использует наблюдения со всеми отсутствующими значениями и присваивает счет аномалии 1 к наблюдениям.

    • isanomaly наблюдения использования с некоторыми отсутствующими значениями, чтобы найти разделения на переменных, для которых эти наблюдения имеют допустимые значения.

    Ссылки

    [1] Лю, F. T. К. М. Тинг и Цз. Чжоу. "Лес изоляции", 2 008 Восьмых Международных конференций IEEE по вопросам Анализа данных. Пиза, Италия, 2008, стр 413-422.

    Расширенные возможности

    Введенный в R2021b