빠른 시작: SQL 기계 학습에서 R 함수 사용
적용 대상: SQL Server 2016(13.x) 이상 Azure SQL Managed Instance
이 빠른 시작에서는 SQL Server Machine Learning Services 또는 빅 데이터 클러스터에서 R 수학 및 유틸리티 함수를 사용하는 방법을 알아봅니다. 통계 함수는 T-SQL에서 구현하기에 복잡한 경우가 많으며 다만 몇 줄의 코드만으로 R에서 수행할 수 있습니다.
이 빠른 시작에서는 SQL Server Machine Learning Services와 함께 R 수학 및 유틸리티 함수를 사용하는 방법에 대해 알아보겠습니다. 통계 함수는 T-SQL에서 구현하기에 복잡한 경우가 많으며 다만 몇 줄의 코드만으로 R에서 수행할 수 있습니다.
이 빠른 시작에서는 SQL Server R Services와 함께 R 수학 및 유틸리티 함수를 사용하는 방법에 대해 알아보겠습니다. 통계 함수는 T-SQL에서 구현하기에 복잡한 경우가 많으며 다만 몇 줄의 코드만으로 R에서 수행할 수 있습니다.
이 빠른 시작에서는 Azure SQL Managed Instance Machine Learning Services에서 R을 사용할 때 데이터 구조와 데이터 형식을 사용하는 방법을 알아봅니다. R과 SQL Managed Instance 사이의 데이터 이동과 일반적으로 발생할 수 있는 문제에 대해 알아봅니다.
필수 조건
이 빠른 시작을 실행하려면 다음과 같은 필수 구성 요소가 필요합니다.
- SQL Server Machine Learning Services. Machine Learning Services를 설치하려면 Windows 설치 가이드 또는 Linux 설치 가이드를 참조하세요. SQL Server 빅 데이터 클러스터에서 Machine Learning Services를 사용하도록 설정할 수도 있습니다.
- SQL Server Machine Learning Services. Machine Learning Services를 설치하려면 Windows 설치 가이드를 참조하세요.
- SQL Server 2016 R Services. R Services를 설치하려면 Windows 설치 가이드를 참조하세요.
- Azure SQL Managed Instance Machine Learning Services 자세한 내용은 Azure SQL Managed Instance Machine Learning Services 개요를 참조하세요.
- R 스크립트가 포함된 SQL 쿼리를 실행하기 위한 도구. 이 빠른 시작에서는 Azure Data Studio를 사용합니다.
난수를 생성하는 저장 프로시저 만들기
간단히 하기 위해 기본적으로 설치 및 로드되는 R stats
패키지를 사용하겠습니다. 패키지에는 일반 통계 태스크에 대한 수백 개의 함수가 포함되고, 이들 중 rnorm
함수는 표준 편차 및 평균을 고려하고 정규 분포를 사용하여 지정된 개수의 난수를 생성합니다.
예를 들어 다음 R 코드는 표준 편차 3을 고려하여 평균 50에 대한 100개의 숫자를 반환합니다.
as.data.frame(rnorm(100, mean = 50, sd = 3));
T-SQL에서 이 R 줄을 호출하려면 다음과 같이 sp_execute_external_script
의 R 스크립트 매개 변수에 R 함수를 추가합니다.
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 코드 프로파일링 함수를 사용하여 성능 향상을 참조하세요.
다음 단계
SQL 기계 학습에서 R을 사용하여 기계 학습 모델을 만들려면 다음 빠른 시작을 수행합니다.