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
, в которых будет записан результат работы алгоритма.
В результате выполнения запроса могут быть созданы дополнительные служебные поля с информацией об обученной модели или другими показателями.