Перейти к содержанию

DBSCAN

Алгоритм DBSCAN определяет кластеры, как участки с наибольшей плотностью объектов в пространстве, разделенные участками с низкой плотностью. Кластеры, определенные этим алгоритмом, могут иметь любую форму. Число кластеров определяется в процессе исполнения алгоритма. DBSCAN имеет два основных параметра: min_samples и eps, которые задают минимальное число объектов в кластере и максимальное расстояние между точками, которые могут считаться соседями, соответственно. Большее значение min_samples и меньшее eps требуют более плотных кластеров.

Синтаксис команды

apply dbscan 
      [min_pts=<min_pts>] 
      [eps=<eps>] 
from <features>

Обязательные параметры:

  • features — список полей, для которых требуется найти кластеры. Список задается перечислением, например: from field1 field2.

Опциональные параметры:

  • min_pts - минимальное количество соседей точки, чтобы она могла считаться центром кластера, задается целым положительным числом. Значение по умолчанию min_pts=5.
  • eps - максимальное расстояние между точками, чтобы они считались соседями внутри одного кластера, задается положительным дробным числом. Значение по умолчанию eps=10.0.

Пример использования

На демонстрационных данных с параметрами работы добывающих нефтяных скважин определим наличие аномалий в данных.

Текст запроса

| fsget path=demo_train
| sample 0.1
| fields day, well, p_plast, p_collector, density, dynamic_level, engine_freq, pump_depth, active_power, water_percent, pump_on_off, debit
| where engine_freq>40 AND engine_freq<60
| apply dbscan from p_plast, p_collector, debit
| head 100
| fields - dbscan

Описание запроса

  • Команда fsget загружает данные из хранилища признаков.
  • Команда sample 0.1 оставляет 10% от всех загруженных строк. Это сделано для ускорения обучения (всего в обучающей выборке более 40 000 строк).
  • Команда fields оставляет только поля с меткой времени, номером скважины, величиной добычи и поля, по которым будет проводиться обучение.
  • Команда where оставляет только те строки, где значение поля engine_freq находится в диапазоне от 40 до 60 (в этом поле указана частота работы погружного насоса, качающего нефть; она может быть только в этом диапазоне, остальные значения - ошибочные).
  • Команда apply применяет алгоритм DBSCAN к указанным полям.
  • Команда head 100 выводит первые 100 строк таблицы после обучения.

Результат запроса

После выполнения запроса будет создана дополнительная колонка cluster, в которой будет записан результат распределения по кластерам.

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

dbscan

К началу