IsolationForest

Лес изоляции для обнаружения аномалии

    Описание

    Используйте лес изоляции (ансамбль деревьев изоляции) объект модели IsolationForest для определения выбросов и обнаружения новинки.

    • Определение выбросов (обнаруживающий аномалии в обучающих данных) — Обнаруживает аномалии в обучающих данных при помощи iforest функция. iforest функционируйте создает IsolationForest возразите и возвращает индикаторы аномалии и музыку к обучающим данным.

    • Обнаружение новинки (обнаруживающий аномалии в новых данных с незагрязненными обучающими данными) — Создает IsolationForest объект путем передачи незагрязненных обучающих данных (данные без выбросов) к iforest, и обнаружьте аномалии в новых данных путем передачи объекта и новых данных к объектной функции isanomaly. isanomaly функция возвращает индикаторы аномалии и музыку к новым данным.

    Создание

    Создайте IsolationForest объект при помощи iforest.

    Свойства

    развернуть все

    Это свойство доступно только для чтения.

    Категориальные индексы предиктора в виде вектора из положительных целых чисел. CategoricalPredictors содержит значения индекса, указывающие, что соответствующие предикторы являются категориальными. Значения индекса между 1 и p, где p количество предикторов, используемых, чтобы обучить модель. Если ни один из предикторов не является категориальным, то это свойство пусто ([]).

    Это свойство доступно только для чтения.

    Часть аномалий в обучающих данных в виде числового скаляра между 0 и 1.

    • Если ContaminationFraction значение 0, затем iforest обработки все учебные наблюдения как нормальные наблюдения, и устанавливают порог счета (ScoreThreshold значение свойства) к максимальному значению баллов аномалии обучающих данных.

    • Если ContaminationFraction значение находится в области значений (0,1то iforest определяет пороговое значение (ScoreThreshold значение свойства) так, чтобы функция обнаружила заданную часть учебных наблюдений как аномалии.

    Это свойство доступно только для чтения.

    Количество деревьев изоляции в виде положительного целочисленного скаляра.

    Это свойство доступно только для чтения.

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

    Это свойство доступно только для чтения.

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

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

    Это свойство доступно только для чтения.

    Порог для счета аномалии раньше идентифицировал аномалии в обучающих данных в виде числового скаляра между 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])

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

    Если вы хотите идентифицировать аномалии с различной частью загрязнения (например, 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

    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 аргумент значения имени. Для примера смотрите, Задают Порог Счета Аномалии.

    Больше о

    развернуть все

    Ссылки

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

    Введенный в R2021b
    Для просмотра документации необходимо авторизоваться на сайте