Функции машинного обучения#
Плагин машинного обучения предоставляет функциональность машинного обучения в виде агрегатной функции. Он позволяет обучать классификаторы и регрессоры на основе Support Vector Machine (SVM) для задач обучения с учителем.
Note
Функции машинного обучения не оптимизированы для распределенной обработки. Возможность обучения на больших наборах данных ограничена тем, что финальное обучение выполняется на одном экземпляре.
Вектор признаков#
Чтобы решить задачу с помощью методов машинного обучения, особенно задачу
обучения с учителем, необходимо представить набор данных как последовательность
пар меток и векторов признаков. Метка — это целевое значение, которое вы хотите
предсказать по невиданному ранее признаку, а признак — это N-мерный вектор,
элементы которого являются числовыми значениями. В Trino вектор признаков
представляется значением типа map, где ключ — это индекс каждого признака,
чтобы можно было выразить разреженный вектор.
Поскольку классификаторы и регрессоры распознают вектор признаков типа map,
существует функция для построения признаков из существующих числовых значений —
features():
SELECT features(1.0, 2.0, 3.0) AS features;
features
-----------------------
{0=1.0, 1=2.0, 2=3.0}
Результат функции features() можно напрямую передавать в функции ML.
Классификация#
Классификация — это тип задачи обучения с учителем, в котором требуется предсказать дискретную метку на основе заданного вектора признаков. Интерфейс выглядит похоже на построение 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-моделью регрессора.