표준 SQL 쿼리를 사용하여 머신러닝 모델을 만들고 실행할 수 있다.
대규모 데이터 세트의 머신러닝에는 ML 프레임워크에 대한 광범위한 프로그래밍과 지식이 필요하지만 BQML을 사용하면 간단한 SQL문을 사용하여 ML 모델을 빌드하고 평가할 수 있다.
가장 큰 장점은 DW에서 다른 곳으로 데이터를 내보내지 않아도 된다는 것
이로인해 모델 개발 및 혁신 속도가 향상된다.
모델이 훈련된 위치에 따라 두 가지로 분류될 수 있다.
프로젝트 단위로 할당량을 적용한다.
BigQuery에서 SQL문으로 작업하는 것이기 때문에 BigQuery 쿼리 작업 및 할당량 및 한도가 적용되고 CREATE MODEL에는 다음의 한도가 적용된다.
서울 리전은 모든 ML모델이 지원되고 멀티 리전은 EU와 US만 지원된다.
모델 생성
US 멀티 리전에 bqml_tutorial 데이터 세트 생성
(여기서 사용하는 public dataset이 US에 위치하기 때문)
bigquery-public-data.ml_datasets.penguins
CREATE OR REPLACE MODEL `bqml_tutorial.penguins_model`
OPTIONS
(model_type='linear_reg',
input_label_cols=['body_mass_g']) AS
SELECT
*
FROM
`bigquery-public-data.ml_datasets.penguins`
WHERE
body_mass_g IS NOT NULL
CREATE MODEL과 OPTIONS만 입력해서 모델을 생성할 수 있고 콘솔에서 각종 지표들을 확인할 수 있다.
선형 회귀 모델을 평가할 때 초점은 예측 수치의 정확도를 평가하는 것이므로 '평가'에선 아래와 같이 평균 절대 오차(MAE), 평균 제곱 오차(MSE) 및 예측 값과 실제 값 간의 편차를 측정하는 결정계수(R^2)가 나온다.
로직스틱 회귀 분석을 하게 되면 '평가'에선 confusion matrix, ROC Curve 및 accuracy, precision, Recall, F1 score의 값들이 나온다.
예측 생성
모델을 사용하여 Biscoe에 있는 모든 펭귄의 체질량을 그램 단위로 예측
SELECT
*
FROM
ML.PREDICT(MODEL `bqml_tutorial.penguins_model`,
(
SELECT
*
FROM
`bigquery-public-data.ml_datasets.penguins`
WHERE
body_mass_g IS NOT NULL
AND island = "Biscoe"))
결과 확인
[BigQuery ML 참고]
https://cloud.google.com/bigquery/docs/bqml-introduction?hl=ko