Обнаружение нововведений и выбросов с использованием Scikit-Learn

Machine LearningMachine LearningBeginner
Практиковаться сейчас

This tutorial is from open-source community. Access the source code

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

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

В этом контексте существуют два важных отличия:

  1. Обнаружение выбросов: В наборе обучающих данных есть выбросы, то есть наблюдения, которые находятся далеко от других. Экстремальные значения (выбросы) определяют области, в которых наиболее концентрировано обучающее множество, игнорируя отклоняющиеся наблюдения.
  2. Обнаружение новизны: В наборе обучающих данных нет выбросов, и цель заключается в определении, является ли новое наблюдение выбросом. В этом контексте выброс также называется новизной.

Проект scikit-learn предоставляет набор инструментов машинного обучения, которые можно использовать для обнаружения как новизны, так и выбросов. Эти инструменты реализованы с использованием алгоритмов обучения без учителя, что означает, что они обучаются распознавать закономерности в данных без необходимости помеченных примеров.

Советы по работе с ВМ

После запуска ВМ перейдите в левый верхний угол и переключитесь на вкладку Notebook, чтобы приступить к практике с использованием Jupyter Notebook.

Иногда может потребоваться подождать несколько секунд, пока Jupyter Notebook полностью загрузится. Валидация операций не может быть автоматизирована из-за ограничений Jupyter Notebook.

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills ml/sklearn -.-> lab-71120{{"Обнаружение нововведений и выбросов с использованием Scikit-Learn"}} end

Импортируем необходимые библиотеки

Сначала нам нужно импортировать необходимые библиотеки. В этом примере мы будем использовать модуль sklearn из scikit-learn.

from sklearn import neighbors

Загружаем набор данных

Далее нам нужно загрузить набор данных, на котором мы хотим проводить обнаружение выбросов. Вы можете использовать любой набор данных по своему выбору или создать собственный набор данных. В этом примере мы будем использовать примерный набор данных под названием X_train.

X_train = [0.5, 1.5, 2.5, 3.5, 4.5, 10.5, 11.5, 12.5, 13.5, 14.5]

Создаем оценщик для обнаружения выбросов

Теперь мы можем создать объект оценщика для обнаружения выбросов из класса neighbors.LocalOutlierFactor. Этот класс реализует алгоритм Local Outlier Factor, который является популярным методом для обнаружения выбросов.

estimator = neighbors.LocalOutlierFactor()

Настраиваем модель на обучающие данные

Далее мы можем настроить оценщик обнаружения выбросов на наших обучающих данных с использованием метода fit.

estimator.fit(X_train)

Предсказываем выбросы

После настройки модели мы можем использовать метод predict, чтобы предсказать, являются ли новые наблюдения выбросами или нет. Метод predict возвращает 1 для объектов, принадлежащих основном распределению, и -1 для выбросов.

X_test = [5.5, 8.5]
predictions = estimator.predict(X_test)
print(predictions)

Получаем оценки выбросов

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

outlier_scores = estimator.negative_outlier_factor_
print(outlier_scores)

Резюме

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