
Содержание
- Введение
- Что такое DataRobot?
- Как подготовить набор данных для обучения и тестирования модели?
- Описание набора данных
- Загрузка набора данных IDA
- Как структурировать базу данных
- Как использовать Exasol JDBC с DataRobot
- Импорт наборов данных в DataRobot
- Построение модели машинного обучения с помощью DataRobot
- Что дальше?
Введение
В этом посте вы узнаете, как:
- построить прогностическую модель машинного обучения с помощью DataRobot
- интегрировать DataRobot с Exasol
Что такое DataRobot?
DataRobot – это платформа, которая позволяет бизнес-аналитикам построить прогнозную аналитику без знания машинного обучения или программирования. Платформа автоматизирует сквозной процесс создания, развертывания и поддержки машинного обучения (ML) и искусственного интеллекта (AI).
Платформа предоставляет множество продуктов, чтобы автоматизировать машинное обучение, преодолевая разрыв между инженерией данных и наукой о данных. Продукт обладает множеством алгоритмов ML и AI, которые быстро позволяют проанализировать суть ваших данных. Кроме того, DataRobot помогает повысить производительность за счет поддержки передовых методов работы с данными.
Как подготовить набор данных для обучения и тестирования модели?
Прежде чем использовать DataRobot для построения моделей машинного обучения, мы подготовим собственный набор данных в базе данных Exasol.
Для данного примера, мы будем использовать в открытом доступе набор данных IDA 2016 Challenge Dataset с Индустриального хакатона в рамках 15th International Symposium on Intelligent Data Analysis (IDA) 2016 года. Основная цель задачи – наилучшим образом предсказать, какие отказы связаны с конкретным компонентом системы воздушного давления (APS) грузовиков, в отличие от отказов, не связанных с APS.
Ниже приводится метрика затрат, которые необходимо минимизировать:
cost_total = cost_fp * FP + cost_fn * FN
Где:
- FP – это количество ложных срабатываний (предсказанный отказ APS, но на самом деле не произошел),
- FN – это количество ложноотрицательных результатов (предсказанный отказ без АПС, но на самом деле являющийся таковым),
- cost_fp = 10 – это стоимость ненужной проверки механиком
- cost_fn = 500 – это стоимость отказа от проверки неисправного грузовика и возможной поломки.
Из метрики затрат видно, что ненужная профилактическая проверка обходится гораздо дешевле (в 50 раз), чем пропуск неисправного грузовика, что вполне логично.
Описание набора данных
Набор данных был предоставлен Scania CV AB и состоит из реальных данных, полученных от с большегрузных грузовиков Scania во время их нормальной работы. Ниже приводится краткое описание данных:
Количество атрибутов: 171
- Набор данных для обучения:
- Общее число экземпляров: 60,000
- o Положительные случаи (отказы APS): 1000 (1.7% от общего числа)
- Тестовые данные:
- Общее число экземпляров 16,000
- o Положительные случаи (отказы APS): 375 (2.3% от общего числа)
Для получения более подробной информации, пожалуйста, обратитесь к файлу описания данных, прилагаемому к данным. Кроме того, перед началом работы ознакомьтесь с информацией об авторских правах и лицензии, содержащейся в файлах данных.
Загрузка набора данных IDA
Справа приступим к загрузке набора данных – IDA 2016 Challenge Dataset fс UC Irvine Machine Learning Repository в локальную файловую систему. Это zip-файл размером 20 МБ. Распакуйте файл и извлеките тренировочный и тестовый наборы данных.
wget https://archive.ics.uci.edu/ml/machine-learning-databases/00414/to_uci.zip
unzip to_uci.zip
cd to_uci/
Считывая и проверяя файлы данных, мы видим, что:
- Первые 20 строк используются для лицензии
- Первый столбец – метка класса
- Остальные столбцы – это все числовые характеристики
Мы можем хранить атрибут класса как VARCHAR(3), а другие столбцы как тип DECIMAL(18, 2).
Теперь давайте определим наши таблицы в базе данных Exasol.
Как структурировать базу данных
Сначала мы создадим схему, в которой будут храниться наши таблицы. В производственных средах обычно создаются две отдельные схемы: для хранения и производства. В этой статье мы создадим только одну:
CREATE SCHEMA IDA_DATASET;
Затем создайте таблицу набора данных для обучения:
CREATE OR REPLACE TABLE IDA_DATASET.IDA_TRAINING (
CLASS VARCHAR(3),
AA_000 DECIMAL(18,2),
AB_000 DECIMAL(18,2),
AC_000 DECIMAL(18,2),
AD_000 DECIMAL(18,2),
AE_000 DECIMAL(18,2),
AF_000 DECIMAL(18,2),
AG_000 DECIMAL(18,2),
AG_001 DECIMAL(18,2),
AG_002 DECIMAL(18,2),
AG_003 DECIMAL(18,2),
AG_004 DECIMAL(18,2),
AG_005 DECIMAL(18,2),
AG_006 DECIMAL(18,2),
AG_007 DECIMAL(18,2),
AG_008 DECIMAL(18,2),
AG_009 DECIMAL(18,2),
AH_000 DECIMAL(18,2),
AI_000 DECIMAL(18,2),
AJ_000 DECIMAL(18,2),
AK_000 DECIMAL(18,2),
AL_000 DECIMAL(18,2),
AM_0 DECIMAL(18,2),
AN_000 DECIMAL(18,2),
AO_000 DECIMAL(18,2),
AP_000 DECIMAL(18,2),
AQ_000 DECIMAL(18,2),
AR_000 DECIMAL(18,2),
AS_000 DECIMAL(18,2),
AT_000 DECIMAL(18,2),
AU_000 DECIMAL(18,2),
AV_000 DECIMAL(18,2),
AX_000 DECIMAL(18,2),
AY_000 DECIMAL(18,2),
AY_001 DECIMAL(18,2),
AY_002 DECIMAL(18,2),
AY_003 DECIMAL(18,2),
AY_004 DECIMAL(18,2),
AY_005 DECIMAL(18,2),
AY_006 DECIMAL(18,2),
AY_007 DECIMAL(18,2),
AY_008 DECIMAL(18,2),
AY_009 DECIMAL(18,2),
AZ_000 DECIMAL(18,2),
AZ_001 DECIMAL(18,2),
AZ_002 DECIMAL(18,2),
AZ_003 DECIMAL(18,2),
AZ_004 DECIMAL(18,2),
AZ_005 DECIMAL(18,2),
AZ_006 DECIMAL(18,2),
AZ_007 DECIMAL(18,2),
AZ_008 DECIMAL(18,2),
AZ_009 DECIMAL(18,2),
BA_000 DECIMAL(18,2),
BA_001 DECIMAL(18,2),
BA_002 DECIMAL(18,2),
BA_003 DECIMAL(18,2),
BA_004 DECIMAL(18,2),
BA_005 DECIMAL(18,2),
BA_006 DECIMAL(18,2),
BA_007 DECIMAL(18,2),
BA_008 DECIMAL(18,2),
BA_009 DECIMAL(18,2),
BB_000 DECIMAL(18,2),
BC_000 DECIMAL(18,2),
BD_000 DECIMAL(18,2),
BE_000 DECIMAL(18,2),
BF_000 DECIMAL(18,2),
BG_000 DECIMAL(18,2),
BH_000 DECIMAL(18,2),
BI_000 DECIMAL(18,2),
BJ_000 DECIMAL(18,2),
BK_000 DECIMAL(18,2),
BL_000 DECIMAL(18,2),
BM_000 DECIMAL(18,2),
BN_000 DECIMAL(18,2),
BO_000 DECIMAL(18,2),
BP_000 DECIMAL(18,2),
BQ_000 DECIMAL(18,2),
BR_000 DECIMAL(18,2),
BS_000 DECIMAL(18,2),
BT_000 DECIMAL(18,2),
BU_000 DECIMAL(18,2),
BV_000 DECIMAL(18,2),
BX_000 DECIMAL(18,2),
BY_000 DECIMAL(18,2),
BZ_000 DECIMAL(18,2),
CA_000 DECIMAL(18,2),
CB_000 DECIMAL(18,2),
CC_000 DECIMAL(18,2),
CD_000 DECIMAL(18,2),
CE_000 DECIMAL(18,2),
CF_000 DECIMAL(18,2),
CG_000 DECIMAL(18,2),
CH_000 DECIMAL(18,2),
CI_000 DECIMAL(18,2),
CJ_000 DECIMAL(18,2),
CK_000 DECIMAL(18,2),
CL_000 DECIMAL(18,2),
CM_000 DECIMAL(18,2),
CN_000 DECIMAL(18,2),
CN_001 DECIMAL(18,2),
CN_002 DECIMAL(18,2),
CN_003 DECIMAL(18,2),
CN_004 DECIMAL(18,2),
CN_005 DECIMAL(18,2),
CN_006 DECIMAL(18,2),
CN_007 DECIMAL(18,2),
CN_008 DECIMAL(18,2),
CN_009 DECIMAL(18,2),
CO_000 DECIMAL(18,2),
CP_000 DECIMAL(18,2),
CQ_000 DECIMAL(18,2),
CR_000 DECIMAL(18,2),
CS_000 DECIMAL(18,2),
CS_001 DECIMAL(18,2),
CS_002 DECIMAL(18,2),
CS_003 DECIMAL(18,2),
CS_004 DECIMAL(18,2),
CS_005 DECIMAL(18,2),
CS_006 DECIMAL(18,2),
CS_007 DECIMAL(18,2),
CS_008 DECIMAL(18,2),
CS_009 DECIMAL(18,2),
CT_000 DECIMAL(18,2),
CU_000 DECIMAL(18,2),
CV_000 DECIMAL(18,2),
CX_000 DECIMAL(18,2),
CY_000 DECIMAL(18,2),
CZ_000 DECIMAL(18,2),
DA_000 DECIMAL(18,2),
DB_000 DECIMAL(18,2),
DC_000 DECIMAL(18,2),
DD_000 DECIMAL(18,2),
DE_000 DECIMAL(18,2),
DF_000 DECIMAL(18,2),
DG_000 DECIMAL(18,2),
DH_000 DECIMAL(18,2),
DI_000 DECIMAL(18,2),
DJ_000 DECIMAL(18,2),
DK_000 DECIMAL(18,2),
DL_000 DECIMAL(18,2),
DM_000 DECIMAL(18,2),
DN_000 DECIMAL(18,2),
DO_000 DECIMAL(18,2),
DP_000 DECIMAL(18,2),
DQ_000 DECIMAL(18,2),
DR_000 DECIMAL(18,2),
DS_000 DECIMAL(18,2),
DT_000 DECIMAL(18,2),
DU_000 DECIMAL(18,2),
DV_000 DECIMAL(18,2),
DX_000 DECIMAL(18,2),
DY_000 DECIMAL(18,2),
DZ_000 DECIMAL(18,2),
EA_000 DECIMAL(18,2),
EB_000 DECIMAL(18,2),
EC_00 DECIMAL(18,2),
ED_000 DECIMAL(18,2),
EE_000 DECIMAL(18,2),
EE_001 DECIMAL(18,2),
EE_002 DECIMAL(18,2),
EE_003 DECIMAL(18,2),
EE_004 DECIMAL(18,2),
EE_005 DECIMAL(18,2),
EE_006 DECIMAL(18,2),
EE_007 DECIMAL(18,2),
EE_008 DECIMAL(18,2),
EE_009 DECIMAL(18,2),
EF_000 DECIMAL(18,2),
EG_000 DECIMAL(18,2)
);
COMMENT ON TABLE IDA_TRAINING IS ‘Training data from https://archive.ics.uci.edu/ml/datasets/IDA2016Challenge’;
Similarly, create a test table structure.
CREATE OR REPLACE TABLE IDA_DATASET.IDA_TEST LIKE IDA_DATASET.IDA_TRAINING;
Loading the Data Into Tables
Let’s now import both training and test datasets into the tables.
IMPORT INTO IDA_DATASET.IDA_TRAINING
FROM LOCAL CSV FILE ‘~/to_uci/aps_failure_training_set.csv’
COLUMN SEPARATOR=’,’
SKIP=21;
IMPORT INTO IDA_DATASET.IDA_TEST
FROM LOCAL CSV FILE ‘~/to_uci/aps_failure_test_set.csv’
COLUMN SEPARATOR=’,’
SKIP=21;
Обе команды импортируют файл из локальной файловой системы в таблицу. Проверьте
документацю по импорту для получения дополнительной информации об импорте CSV. Параметр SKIP=21 удаляет строки заголовков из набора данных. В реальном сценарии вам потребуется больше времени для анализа атрибутов данных, очистки, нормализации и преобразования характеристик. В данном учебном посте мы будем использовать данные в необработанном виде.
Теперь у нас есть набор данных в таблице Exasol, как теперь его использовать вместе с DataRobot?
Как использовать Exasol JDBC с DataRobot
В этом разделе мы соединим DataRobot и Exasol с помощью Exasol JDBC драйвера. И мы загрузим таблицу Exasol в DataRobot для построения прогностической модели на основе содержимого таблицы.
Установка Exasol JDBC драйвера
- Войдите в свою учетную запись DataRobot
- Перейдите в свой профиль:
- Выберите Data Connections
- Выберите JDBC Drivers
- Нажмите “Add new driver”
- Выберите Data Connections
Прежде чем заполнять необходимые поля, загрузите последнюю версию Exasol JDBC драйвера:
Вам понадобится:
- Задайте имя драйвера, например, Exasol-7.0.0
- Добавьте имя класса com.exasol.jdbc.EXADriver
- Загрузите скачанный jar-файл Exasol JDBC Driver
- Затем нажмите кнопку create a driver
Создание соединения между DataRobot и Exasol
- Откройте пользовательский интерфейс DataRobot и перейдите в каталог AI Catalog
- Нажмите кнопку “Add to Catalog”
- Выберите “New Data Connection”
- Выберите “My Drivers”
Определите соединение
- Дайте описательное имя, например, ExasolConnection
- Выберите Exasol JDBC Driver в разделе Driver.
- Далее укажите URL подключения JDBC для базы данных Exasol. В данном примере мы будем использовать базу данных Exasol Demo Database с URL подключения jdbc:exa:demodb.exasol.com:8563.
- Выберите “Add Data Connection”
После нажатия на кнопку Add Data Connection DataRobot запросит ваши учетные данные для подключения к базе данных. Пожалуйста, заполните поля Имя пользователя и Пароль.
Наконец, нажмите на кнопку Sign in, чтобы можно было выбрать наш набор данных и продолжить создание проекта DataRobot с его помощью.
Более подробно о параметрах конфигурации вы можете прочитать на сайте –Exasol JDBC documentation.
Импорт наборов данных в DataRobot
После создания соединения и входа в базу данных Exasol нужно выбрать импорт таблиц в DataRobot для построения модели.
Для этого нужно:
- Выберите вкладку Tables и найдите наборы данных, которые вы создали ранее.
- Нажмите, чтобы продолжить регистрацию.
Создание и регистрация набора данных может занять некоторое время. Как только он будет готов, нажмите на опцию «Create a project», чтобы создать новый проект.
Построение модели машинного обучения с помощью DataRobot
Теперь перейдем в панель AutoPilot. Она может автоматически проанализировать набор данных и обнаружить информативный набор фич. Для этого нужно задать цель предсказания:
- Выберите переменную “Class” в качестве цели
- А затем нажмите на кнопку “Start”, чтобы запустить AutoPilot.
AutoPilot автоматически анализирует набор данных и предоставляет подробную информацию о наборе фич. Он также автоматически начинает строить несколько моделей машинного обучения, представляя вам наиболее эффективные.
Чтобы просмотреть полный список моделей:
- Выберите “Модели”
Рейтинг этих моделей основан либо на точности, либо на производительности. У каждой модели есть документация, чтобы вы могли проверить оценку или понять, какие характеристики оказывают наибольшее влияние на прогнозирование.
Что дальше?
В этой статье мы показали, как использовать базу данных Exasol на платформе DataRobot. Таким образом пользователи напрямую могут получать доступ к данным из Exasol и преобразовывать свои данные в бесценные модели машинного обучения.
Если вы хотите узнать, как осуществлять вызовы DataRobot предсказаний из Exasol, посмотрите следующий How-To guide. Этот подход позволяет напрямую вызывать предикаты DataRobot из фронтенда BI.
Для дальнейшего ознакомления, можете посмотреть следующие материалы: DataRobot Platform и Exasol Data Science integration.