Машинное обучение в среде SQL-Server
Инструментарий ML внутри SQL Server
В этой статье описаны шаги по созданию процедуры, которая использует набор данных mtcars, входящий в состав R, на основе которой создается простая обобщенная линейная модель (ОЛМ), способная прогнозировать вероятность оснащения автомобиля механической коробкой передач.
Вторая процедура предназначена для оценки — она вызывает модель, созданную в первой процедуре, для вывода набора прогнозов на основе новых данных.
Расшифровка терминов
SQL – язык структурных запросов, отправляемых в базу данных.
SQL Server – реляционная база данных от Microsoft.
Службы машинного обучения — это компонент SQL Server, который дает возможность выполнять скрипты на языках Python и R с данными.
Триггер в SQL — механизм реакции на изменение в состоянии базы данных.
Скрипты – небольшие программы, рассчитанные на узкий, чаще всего периодический круг задач.
R – язык программирования, созданный специально для обработки данных.
Причины, по которым выгодно использовать SQL Server для машинного обучения
Обсудим перечень доступных преимуществ, используя ML в SQL Server.
Одна из самых главных причин – удобство хранения SQL команд и ML кода, в общей зоне видимости, что позволяет использовать все преимущества двух технологий.
Ещё одной существенной причиной является безопасность, ведь если условный сервер базы данных находится в одном месте, а запросы на него попадают с другого места, данные можно перехватить. В случае если ядро СУБД и хранит данные и вызывает код, такую проблему возможно избежать.
Помимо прочего SQL Server обладает качественной поддержкой языка программирования R как в плане поставляемых библиотек, так и в плане производительности. По самым последним бенчмаркам, ядро базы данных способно вычислять около миллиона R прогнозов в секунду.
Проверка работоспособности SQL Server
Для начала убедимся, что служба машинного обучения и расширения для R работают корректно. Для этого выполним следующий код.
Результат:
Кратко разберём SQL команду:
Тут определяем, что ядро должно обрабатывать язык R
@script это специальная переменная, которая может обрабатываться в последующем запросе, равняется результату выполнения команды R
Используется рекурсивная операция отображения содержания @script в виде таблицы.
Пример использования ML в SQL Server
Создаем таблицу для хранения данных, которыми будем обучать модель:
Заносим в неё данные:
Результат:
Создаем и обучаем модель:
На этом этапе хотел бы акцентировать внимание на том, как принимает данные R на движке SQL Server: @input_data_1 — это столбцы таблицы, которые в коде представлены в виде переменной @input_data_1_name
Создаем таблицу под модель:
Сохраняем модель:
Результат:
SQL Server способен загружать в таблицы обученные модели, чтобы потом их можно было быстро переиспользовать.
Создаем таблицу, где будут хранится данные для анализа:
Заполняем случайными данными, входящими в нужный диапазон:
Результат:
Прогнозируем результат для новых данных:
Результат:
Чем ближе значение predicated_am к единице, тем больше шанс, что машина имеет механическую коробку передач.
Заключение
Помимо представленного примера, машинное обучение при обработке данных можно использовать для отделения полезной информации от шума, поиска зависимостей между столбцами и во многом другом.
В дополнение к представленному выше функционалу можно применить более совершенные методы предсказания и настроить триггеры срабатывающий каждый раз, когда приходит новая информация в духе (применить процедуру прогнозирования):