Краткое руководство. Функции R с машинным обучением SQL
Область применения: SQL Server 2016 (13.x) и более поздних версий Управляемый экземпляр SQL Azure
В этом кратком руководстве вы узнаете, как использовать математические и служебные функции R в Службах машинного обучения SQL Server или Кластерах больших данных. Зачастую статистические функции, которые сложно реализовать в T-SQL, выполняются в R всего парой строк кода.
В этом кратком руководстве вы узнаете, как использовать математические и служебные функции R в Службах машинного обучения SQL Server. Зачастую статистические функции, которые сложно реализовать в T-SQL, выполняются в R всего парой строк кода.
В этом кратком руководстве вы узнаете, как использовать математические и служебные функции R в службах SQL Server R Services. Зачастую статистические функции, которые сложно реализовать в T-SQL, выполняются в R всего парой строк кода.
В этом кратком руководстве вы узнаете, как использовать структуры и типы данных при работе с R в Службах машинного обучения управляемого экземпляра SQL Azure. Вы узнаете о том, как перемещать данные между R и Управляемым экземпляром SQL, и о типичных проблемах, возникающих при этом процессе.
Необходимые компоненты
Для работы с этим кратким руководством необходимо следующее.
- Службы машинного обучения SQL Server. Сведения об установке служб машинного обучения см. в руководстве по установке для Windows или руководстве по установке для Linux. Можно также включить Службы машинного обучения в кластерах больших данных SQL Server.
- Службы машинного обучения SQL Server. Сведения об установке служб машинного обучения см. в руководстве по установке для Windows.
- SQL Server 2016 R Services. Сведения об установке служб R Services см. в руководстве по установке для Windows.
- Службы машинного обучения в Управляемом экземпляре SQL Azure. Дополнительные сведения см. в статье Общие сведения о службах машинного обучения в управляемом экземпляре SQL Azure.
- Инструмент для выполнения SQL-запросов, содержащих сценарии R. В этом кратком руководстве используется Azure Data Studio.
Создание хранимой процедуры для формирования случайных чисел
Для простоты давайте воспользуемся пакетом R stats
, который устанавливается и загружается по умолчанию. Он содержит сотню функций для общих статистических задач, в том числе функцию rnorm
, которая формирует указанное количество случайных чисел с нормальным распределением при заданном среднем значении и стандартном отклонении.
Например, следующий код R возвращает 100 чисел со средним значением 50 и стандартным отклонением 3.
as.data.frame(rnorm(100, mean = 50, sd = 3));
Чтобы вызвать строку кода R из T-SQL, добавьте функцию R в параметр скрипта R sp_execute_external_script
, как показано ниже:
EXECUTE sp_execute_external_script
@language = N'R'
, @script = N'
OutputDataSet <- as.data.frame(rnorm(100, mean = 50, sd =3));'
, @input_data_1 = N' ;'
WITH RESULT SETS (([Density] float NOT NULL));
Как упростить формирование другого набора случайных чисел?
С помощью T-SQL это несложно. Вы определяете хранимую процедуру, которая получает предоставленные пользователем аргументы и передает их в качестве переменных в скрипт R.
CREATE PROCEDURE MyRNorm (
@param1 INT
, @param2 INT
, @param3 INT
)
AS
EXECUTE sp_execute_external_script @language = N'R'
, @script = N'
OutputDataSet <- as.data.frame(rnorm(mynumbers, mymean, mysd));'
, @input_data_1 = N' ;'
, @params = N' @mynumbers int, @mymean int, @mysd int'
, @mynumbers = @param1
, @mymean = @param2
, @mysd = @param3
WITH RESULT SETS(([Density] FLOAT NOT NULL));
В первой строке определяется каждый из входных параметров SQL, необходимых при выполнении хранимой процедуры.
Строка, начинающаяся с
@params
, определяет все переменные, используемые в коде R, и соответствующие типы данных SQL.Следующие строки сопоставляют имена параметров SQL с соответствующими именами переменных R.
Теперь, когда функция R упакована в хранимой процедуре, вы можете легко вызвать функцию и передать различные значения, как показано ниже.
EXECUTE MyRNorm @param1 = 100,@param2 = 50, @param3 = 3
Использование служебных функций R для устранения неполадок
Установленный по умолчанию пакет utils предоставляет широкий набор служебных функций для изучения текущей среды R. Они могут оказаться полезными, если вы нашли несоответствия в выполнении кода R в SQL Server и внешних средах.
Например, можно использовать функции системного времени в R, такие как system.time
и proc.time
, чтобы фиксировать время, затрачиваемое процессами R, и анализировать проблемы производительности. Например, см. руководство Создание характеристик данных, где функции времени R внедрены в решение.
EXECUTE sp_execute_external_script
@language = N'R'
, @script = N'
library(utils);
start.time <- proc.time();
# Run R processes
elapsed_time <- proc.time() - start.time;'
Сведения о других полезных функциях см. в статье Использование функций профилирования кода R для повышения производительности.
Следующие шаги
Сведения о создании модели машинного обучения с использованием R и машинного обучения SQL приведены в следующем кратком руководстве: