Функции машинного обучения#
Плагин машинного обучения предоставляет функциональность машинного обучения в виде агрегатных функций. Он позволяет обучать классификаторы и регрессоры на основе метода опорных векторов (SVM) для задач обучения с учителем.
Примечание
Функции машинного обучения не оптимизированы для распределенной обработки. Возможность обучения на больших наборах данных ограничена тем, что финальное обучение выполняется на одном экземпляре.
Вектор признаков#
Для решения задачи методами машинного обучения, в частности, как задачи обучения с учителем,
необходимо представить набор данных в виде последовательности пар меток и векторов признаков.
Метка — это целевое значение, которое нужно предсказать на основе неизвестного признака.
Признак — это N-мерный вектор, элементами которого являются числовые значения.
В CedrusData вектор признаков представляется как значение типа map, ключом которого является индекс каждого признака, что позволяет выражать разреженные векторы.
Поскольку классификаторы и регрессоры умеют работать с вектором признаков типа map,
существует функция для формирования вектора из существующих числовых значений — features():
SELECT features(1.0, 2.0, 3.0) AS features;
features
-----------------------
{0=1.0, 1=2.0, 2=3.0}
Результат features() можно напрямую передавать в функции машинного обучения.
Классификация#
Классификация — это тип задачи обучения с учителем, в которой необходимо предсказать дискретную метку по заданному вектору признаков. Интерфейс аналогичен построению модели SVM из последовательности пар меток и признаков, реализованному в Teradata Aster или BigQuery ML. Функция для обучения модели классификации выглядит следующим образом:
SELECT
learn_classifier(
species,
features(sepal_length, sepal_width, petal_length, petal_width)
) AS model
FROM
iris
Она возвращает обученную модель в сериализованном формате.
model
-------------------------------------------------
3c 43 6c 61 73 73 69 66 69 65 72 28 76 61 72 63
68 61 72 29 3e
classify() возвращает предсказанную метку с использованием обученной модели.
Обученная модель не может быть сохранена нативно и должна передаваться в формате вложенного запроса:
SELECT
classify(features(5.9, 3, 5.1, 1.8), model) AS predicted_label
FROM (
SELECT
learn_classifier(species, features(sepal_length, sepal_width, petal_length, petal_width)) AS model
FROM
iris
) t
predicted_label
-----------------
Iris-virginica
В результате процесс обучения необходимо запускать одновременно с предсказанием значений.
Внутренне модель обучается с помощью libsvm.
Для управления внутренними параметрами модели можно использовать learn_libsvm_classifier().
Регрессия#
Регрессия — это другой тип задачи обучения с учителем, в которой предсказывается непрерывное значение, в отличие от задачи классификации.
Целевое значение должно быть числовым и описываться типом double.
Следующий код показывает создание модели, предсказывающей sepal_length по остальным 3 признакам:
SELECT
learn_regressor(sepal_length, features(sepal_width, petal_length, petal_width)) AS model
FROM
iris
Использование модели аналогично случаю классификации:
SELECT
regress(features(3, 5.1, 1.8), model) AS predicted_target
FROM (
SELECT
learn_regressor(sepal_length, features(sepal_width, petal_length, petal_width)) AS model
FROM iris
) t;
predicted_target
-------------------
6.407376822560477
Внутренне модель обучается с помощью libsvm.
learn_libsvm_regressor() позволяет управлять процессом обучения.
Функции машинного обучения#
- features(double, ...) -> map(bigint, double)#
Возвращает map, представляющий вектор признаков.
- learn_classifier(label, features) Classifier#
Возвращает модель классификатора на основе SVM, обученную на заданных наборах данных меток и признаков.
- learn_libsvm_classifier(label, features, params) Classifier#
Возвращает модель классификатора на основе SVM, обученную на заданных наборах данных меток и признаков. Позволяет управлять процессом обучения через параметры libsvm.
- classify(features, model) label#
Возвращает метку, предсказанную заданной моделью классификатора SVM.
- learn_regressor(target, features) Regressor#
Возвращает модель регрессора на основе SVM, обученную на заданных наборах данных целевых значений и признаков.
- learn_libsvm_regressor(target, features, params) Regressor#
Возвращает модель регрессора на основе SVM, обученную на заданных наборах данных целевых значений и признаков. Позволяет управлять процессом обучения через параметры libsvm.
- regress(features, model) target#
Возвращает предсказанное целевое значение с использованием заданной модели регрессора SVM.