Компонент обнаружения аномалий на основе PCA

В этой статье описывается, как использовать компонент обнаружения аномалий на основе PCA в конструкторе машинного обучения Azure для создания модели обнаружения аномалий на основе анализа основных компонентов (PCA).

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

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

Подробнее об анализе главных компонент

PCA — это признанный метод машинного обучения. Он часто используется в исследовательском анализе данных, поскольку раскрывает внутреннюю структуру данных и объясняет различия в данных.

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

Для обнаружения аномалии каждый новый вход анализируется. Алгоритм обнаружения аномалии вычисляет ее проекцию на собственные векторы вместе с нормализованной ошибкой восстановления. Нормализованная ошибка используется в качестве оценки аномалии. Чем больше значение ошибки, тем больше аномалий в экземпляре.

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

Как настроить обнаружение аномалий на основе PCA

  1. Добавьте компонент Обнаружения аномалий на основе PCA в свой конвейер в конструкторе. Вы можете найти этот компонент в категории Обнаружение аномалий.

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

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

  3. В поле Число компонентов для использования в PCA укажите необходимое количество выходных функций или компонентов.

    Решение о том, сколько компонентов включить, является важной частью плана эксперимента, в котором используется PCA. Общее руководство состоит в том, что вы не должны включать столько же компонентов PCA, сколько существует переменных. Вместо этого вам следует начать с меньшего количества компонентов и увеличивать их, пока не будет достигнут определенный критерий.

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

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

    Если указать 1, передискретизация не выполняется. Если вы укажете любое значение больше 1, будут созданы дополнительные образцы для использования при обучении модели.

    Есть два варианта, в зависимости от того, используете ли вы развертку параметра или нет:

    • Параметр передискретизации для рандомизированного PCA: введите одно целое число, которое представляет соотношение передискретизации класса меньшинства по сравнению с нормальным классом. (Этот параметр доступен при использовании метода обучения с Одним параметром.)

    Примечание

    Невозможно просмотреть набор данных с перевыборкой. Для получения дополнительной информации о том, как передискретизация используется с PCA, см. Технические примечания.

  5. Выберите параметр Включить функцию ввода среднего значения, чтобы нормализовать все функции ввода до нулевого среднего. Обычно для PCA рекомендуется нормализация или масштабирование до нуля, поскольку цель PCA — максимизировать дисперсию между переменными.

    Этот параметр установлен по умолчанию. Снимите этот флажок, если значения уже были нормализованы с помощью другого метода или шкалы.

  6. Подключите помеченный набор обучающих данных и один из обучающих компонентов.

    Если для параметра Создать режим учителя задано значение Одиночный параметр, используйте компонент Обучение модели обнаружения аномалий.

  7. Отправьте конвейер.

Результаты

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

Чтобы оценить результаты модели обнаружения аномалий:

  1. Убедитесь, что столбец оценки доступен в обоих наборах данных.

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

  2. Убедитесь, что столбцы меток отмечены.

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

    Вы можете избежать этих ошибок, добавив компонент Изменить метаданные перед компонентом Анализ модели. Используйте селектор столбца, чтобы выбрать столбец класса, и в списке Поля выберите Метка.

  3. Используйте компонент Выполнить сценарий Python, чтобы настроить категории столбцов меток на 1 (положительный, нормальный) и 0 (отрицательный, ненормальный).

    label_column_name = 'XXX'
    anomaly_label_category = YY
    dataframe1[label_column_name] = dataframe1[label_column_name].apply(lambda x: 0 if x == anomaly_label_category else 1)
    

Технические примечания

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

Для каждого нового входа детектор аномалий сначала вычисляет его проекцию на собственные векторы, а затем вычисляет нормированную ошибку восстановления. Эта ошибка является оценкой аномалии. Чем выше ошибка, тем более аномален экземпляр. Подробнее о том, как вычисляется нормальное пространство, см. в Википедии: Анализ главных компонентов.

Дальнейшие действия

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

См. Исключения и коды ошибок для конструктора для получения списка ошибок, характерных для компонентов конструктора.