Подключение моделей машинного обучения

Managed Service for ClickHouse позволяет анализировать данные с помощью моделей машинного обучения CatBoost без использования дополнительных инструментов. Чтобы применить модель, подключите ее к кластеру и вызовите в SQL-запросе с помощью встроенной функции modelEvaluate(). В результате выполнения такого запроса вы получите предсказания модели для каждой строки входных данных. Подробнее о машинном обучении в ClickHouse читайте в документации.

Перед подключением модели

Managed Service for ClickHouse работает только с моделями, которые загружены в Object Storage и к которым предоставлен публичный доступ на чтение:

  1. Загрузите файл обученной модели в Object Storage.

  2. Настройте публичный доступ на чтение к файлу модели.

  3. Получите публичную ссылку на модель.

Подключить модель

  1. Выберите кластер:

    1. Перейдите на страницу каталога и выберите сервис Managed Service for ClickHouse.
    2. Нажмите на имя нужного кластера и выберите вкладку Машинное обучение на панели слева.
    3. Нажмите на кнопку Добавить модель.
  2. Настройте параметры модели:

    • Тип — тип модели. Поддерживаются только модели CatBoost: ML_MODEL_TYPE_CATBOOST.
    • Имя — имя модели. Имя модели — один из аргументов функции modelEvaluate(), которая нужна для вызова модели в ClickHouse.
    • URL — адрес модели в Object Storage.
  3. Нажмите кнопку Добавить и дождитесь окончания добавления модели.

Применить модель

Чтобы применить модель к данным, которые хранятся в кластере ClickHouse:

  1. Подключитесь к кластеру с помощью клиента ClickHouse CLI или перейдите на вкладку SQL в консоли управления кластером.

  2. Выполните SQL-запрос вида:

    SELECT 
        modelEvaluate('<имя модели>', 
                      <имя столбца 1>,
                      <имя столбца 2>,
                      ...
                      <имя столбца N>)
    FROM <имя таблицы>
    

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

Пример

Если у вас еще нет подходящего набора данных и модели для его обработки, вы можете протестировать машинное обучение в Managed Service for ClickHouse на этом примере. Для него мы подготовили файл с данными и обучили модель для их анализа. Вы сможете загрузить данные в ClickHouse и посмотреть на предсказания модели для разных строк таблицы.

Примечание

Для этого примера мы будем использовать открытые данные из Amazon Employee Access Challenge. Модель обучена предсказывать значение столбца ACTION. Те же данные и модель используются в примерах в документации ClickHouse и на GitHub.

Чтобы загрузить данные в ClickHouse и протестировать модель:

  1. Установите ClickHouse CLI и настройте подключение к кластеру как описано в документации.
  2. Скачайте файл с данными для анализа:
    $ wget https://storage.yandexcloud.net/managed-clickhouse/train.csv  
    
  3. Создайте таблицу для данных:
    $ clickhouse-client --host <FQDN хоста> \
                      --database <имя базы данных>
                      --secure \
                      --user <имя пользователя БД> \
                      --password <пароль пользователя БД> \
                      --port 9440 \
                      -q 'CREATE TABLE ml_test_table (date Date MATERIALIZED today(), ACTION UInt8, RESOURCE UInt32, MGR_ID UInt32, ROLE_ROLLUP_1 UInt32, ROLE_ROLLUP_2 UInt32, ROLE_DEPTNAME UInt32, ROLE_TITLE UInt32, ROLE_FAMILY_DESC UInt32, ROLE_FAMILY UInt32, ROLE_CODE UInt32) ENGINE = MergeTree(date, date, 8192)'
    
  4. Загрузите данные в таблицу:
    $ clickhouse-client --host <FQDN хоста> \
                      --database <имя базы данных>
                      --secure \
                      --user <имя пользователя БД> \
                      --password <пароль пользователя БД> \
                      --port 9440 \
                      -q 'INSERT INTO ml_test_table FORMAT CSVWithNames' \
                      < train.csv
    
  5. В консоли управления подключите тестовую модель:
  • ТипML_MODEL_TYPE_CATBOOST.
  • Имяml_test.
  • URLhttps://storage.yandexcloud.net/managed-clickhouse/catboost_model.bin.
  1. Протестируйте модель:
  2. Подключитесь к кластеру с помощью клиента ClickHouse CLI или перейдите на вкладку SQL в консоли управления кластером.
  3. Проверьте работу модели с помощью запросов:
    • Предсказания значения столбца ACTION для первых 10 строк таблицы:
      SELECT 
          modelEvaluate('ml_test', 
                        RESOURCE,
                        MGR_ID,
                        ROLE_ROLLUP_1,
                        ROLE_ROLLUP_2,
                        ROLE_DEPTNAME,
                        ROLE_TITLE,
                        ROLE_FAMILY_DESC,
                        ROLE_FAMILY,
                        ROLE_CODE) > 0 AS prediction, 
          ACTION AS target
      FROM ml_test_table
      LIMIT 10
      
    • Предсказанная вероятность для первых 10 строк таблицы:
      SELECT 
          modelEvaluate('ml_test', 
                        RESOURCE,
                        MGR_ID,
                        ROLE_ROLLUP_1,
                        ROLE_ROLLUP_2,
                        ROLE_DEPTNAME,
                        ROLE_TITLE,
                        ROLE_FAMILY_DESC,
                        ROLE_FAMILY,
                        ROLE_CODE) AS prediction,
          1. / (1 + exp(-prediction)) AS probability, 
          ACTION AS target
      FROM ml_test_table
      LIMIT 10