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

K-Means

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

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

fit kmeans 
    [num=<num>] 
    [distance=<distance>] 
    [max_iter=<max_iter>] 
    [seed=<seed>] 
    [tol=<tol>] 
from <features> [into <modelname>]

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

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

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

  • num - количество кластеров, которое должно быть сформировано, задается целым положительным числом. Обязательный параметр. Может задаваться диапазоном, из которого будет вычислено лучшее количество кластеров для данного датасета. Пример: num=2-10; num=5.
  • distance - метрика, которая используется для расчета расстояний между точками, задается строкой. Значение по умолчанию dist_type=euclidian. Доступные метрики: euclidian, cosine.
  • max_iter - максимальное число итераций алгоритма, задается целым положительным числом. По умолчанию max_iter=300.
  • seed - параметр для случайной инициализации кластеров, задается целым положительным числом. Значение по умолчанию seed=0.
  • tol - Допустимая максимальная разница между положениями центров кластеров в двух соседних итерациях, чтобы считать расчёт сходящимся. Значение по умолчанию tol=0.0001.
  • modelname — название модели, с которым она будет сохранена в кэше. Чтобы сохранить модель в постоянное хранилище моделей для дальнейшего использования, используйте команду save.

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

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

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

| 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
| fit kmeans num=3 from debit into kmeans_model
| fields - kmeans
| head 100

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

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

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

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

kmeans

К началу