Goolge Bigquery๋ ์๋นํ ๋ง์ ๊ธฐ๋ฅ์ ์ง์ํ๋ค. SQL๋ถํฐ ML, ์ค์ผ์ค๋ง, ๋ฐ์ดํฐ ๋ถ์ ๋ฑ ๋ฐ์ดํฐ๊ฐ ๋ค์ด๊ฐ๋ ์ง๊ตฐ์ ์ข ์ฌ ํ๋ค๋ฉด ๋ชจ๋ฅผ ์๊ฐ ์๋ค. ๊ทธ๋งํผ ํธํ๊ณ ์ฝ๋ค. ์ฒ์ ์ ํ๋ค๊ณ ์ด๋ ต๊ฒ ์๊ฐ ํ๋๊ฒ ๋ถ๋๋ฌ์ธ ์ ๋๋ก ์๋๋ ๊ฒ๋ณด๋ค ๋๋ ๊ฒ์ด ๋ง๋ค.
Bigquery๋?
BigQuery๋ ๋ฐ์ดํฐ๋ฅผ ๋ถ์ํ๋ Compute Engine์ ์คํ ๋ฆฌ์ง ์ต์ ๊ณผ ๊ตฌ๋ถํจ์ผ๋ก์จ ์ ์ฐ์ฑ์ ๊ทน๋ํํฉ๋๋ค. BigQuery ๋ด์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ ๋ฐ ๋ถ์ํ๊ฑฐ๋ BigQuery๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ฅ๋ ์์น์์ ๋ฐ์ดํฐ์ ์ก์ธ์คํ ์ ์์ต๋๋ค. ํตํฉ ์ฟผ๋ฆฌ๋ฅผ ํตํด ์ธ๋ถ ์์ค์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ์คํธ๋ฆฌ๋ฐ์ผ๋ก ์ฐ์ ๋ฐ์ดํฐ ์ ๋ฐ์ดํธ๋ฅผ ์ง์ํฉ๋๋ค. BigQuery ML ๋ฐ BI Engine๊ณผ ๊ฐ์ ๊ฐ๋ ฅํ ๋๊ตฌ๋ฅผ ์ฌ์ฉํด์ ํด๋น ๋ฐ์ดํฐ๋ฅผ ๋ถ์ํ๊ณ ์ดํดํ ์ ์์ต๋๋ค.
BigQuery ์ธํฐํ์ด์ค์๋ Google Cloud ์ฝ์ ์ธํฐํ์ด์ค ๋ฐ BigQuery ๋ช ๋ น์ค ๋๊ตฌ๊ฐ ํฌํจ๋ฉ๋๋ค. ๊ฐ๋ฐ์ ๋ฐ ๋ฐ์ดํฐ ๊ณผํ์๋ Python, ์๋ฐ, ์๋ฐ์คํฌ๋ฆฝํธ, Go๋ ๋ฌผ๋ก BigQuery์ REST API ๋ฐ RPC API์ ๊ฐ์ ์ต์ํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๋ณํ ๋ฐ ๊ด๋ฆฌํ ์ ์์ต๋๋ค. ODBC ๋ฐ JDBC ๋๋ผ์ด๋ฒ๋ ํ์ฌ ๋๊ตฌ ๋ฐ ์ ํธ๋ฆฌํฐ๋ฅผ ํฌํจํ์ฌ ๊ธฐ์กด ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ์ํธ์์ฉํ ์ ์์ต๋๋ค.
๋ฐ์ดํฐ ๋ถ์๊ฐ, ๋ฐ์ดํฐ ์์ง๋์ด, ๋ฐ์ดํฐ ์จ์ดํ์ฐ์ค ๊ด๋ฆฌ์, ๋ฐ์ดํฐ ๊ณผํ์๋ BigQuery ML ๋ฌธ์๋ฅผ ํตํด ๋ฐ์ดํฐ ๋๊ตฌ๋ฅผ ๊ฒ์, ๊ตฌํ, ๊ด๋ฆฌํ์ฌ ์ค์ํ ๋น์ฆ๋์ค ์์ฌ๊ฒฐ์ ์ ๋ด๋ฆด ์ ์์ต๋๋ค. #google
Bigquery ML์ด๋?
์ง์ํ๋ ๋ชจ๋ธ์ ์ ํํ๊ท, ๋ก์ง์คํฑ ํ๊ท, K-means clustering, PCA ๋ฑ ๋ค์ํ Machine Learning ํจ์๋ฅผ ์ฌ์ฉํ ์ ์๋ค. ๋ํ Google์์ ๋ฐ๊ณ ์๋ VERTEX AI๋ฅผ ์ผ๋ถ REMOTE๋ก ์ฌ์ฉ ๊ฐ๋ฅํ๋ค. ๋ฌด์๋ณด๋ค SQL๋ก ๊ตฌํ์ด ๊ฐ๋ฅํ๊ธฐ์ ๊ธฐ์กด์ ๋ฐ์ดํฐ ์ข ์ฌ์๊ฐ ๋ฌด๋ฆฌ ์์ด ์ฝ๊ฒ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค. (๋์ด ๋ง๋ค๋ฉด)
BigQuery ML์์๋ GoogleSQL ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋จธ์ ๋ฌ๋ ๋ชจ๋ธ์ ๋ง๋ค๊ณ ์คํํ ์ ์์ต๋๋ค. BigQuery ML์ SQL ์ค๋ฌด์๊ฐ ๊ธฐ์กด SQL ๋๊ตฌ์ ๊ธฐ์ ์ ์ฌ์ฉํ์ฌ ๋ชจ๋ธ์ ๋น๋ํ ์ ์๊ฒ ํ์ฌ ๋จธ์ ๋ฌ๋์ ๋ฒ์ฉํํฉ๋๋ค. BigQuery ML์ ์ฌ์ฉํ๋ฉด ๋ฐ์ดํฐ๋ฅผ ์ด๋ํ ํ์๊ฐ ์์ด ๊ฐ๋ฐ ์๋๊ฐ ํฅ์๋ฉ๋๋ค.
๋ค์์ ์ฌ์ฉํ์ฌ BigQuery ML ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- Google Cloud Console
- bq ๋ช ๋ น์ค ๋๊ตฌ
- BigQuery REST API
- Jupyter ๋ ธํธ๋ถ ๋๋ ๋น์ฆ๋์ค ์ธํ ๋ฆฌ์ ์ค ํ๋ซํผ๊ณผ ๊ฐ์ ์ธ๋ถ ๋๊ตฌ
๋๊ท๋ชจ ๋ฐ์ดํฐ ์ธํธ์ ๋จธ์ ๋ฌ๋์๋ ML ํ๋ ์์ํฌ์ ๋ํ ๊ด๋ฒ์ํ ํ๋ก๊ทธ๋๋ฐ๊ณผ ์ง์์ด ํ์ํฉ๋๋ค. ์ด๋ฌํ ์๊ตฌ์ฌํญ ๋๋ฌธ์ ๊ฐ ํ์ฌ ๋ด ๊ทน์์ ์ง์๋ง ์๋ฃจ์ ๊ฐ๋ฐ์ ๋ด๋นํ ์ ์์ผ๋ฉฐ, ๋ฐ์ดํฐ๋ฅผ ์ดํดํ์ง๋ง ๋จธ์ ๋ฌ๋๊ณผ ํ๋ก๊ทธ๋๋ฐ ์ ๋ฌธ ์ง์์ด ๋ณ๋ก ์๋ ๋ฐ์ดํฐ ๋ถ์๊ฐ๋ ๊ฐ๋ฐ์ ์ฐธ์ฌํ์ง ๋ชปํฉ๋๋ค.
BigQuery ML์ ์ฌ์ฉํ๋ฉด ๋ฐ์ดํฐ ๋ถ์๊ฐ๊ฐ ๊ธฐ์กด SQL ๋๊ตฌ์ ๊ธฐ์ ์ ํตํด ๋จธ์ ๋ฌ๋์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ถ์๊ฐ๋ BigQuery ML์ ์ฌ์ฉํ์ฌ BigQuery์์ ML ๋ชจ๋ธ์ ๋น๋ํ๊ณ ํ๊ฐํ ์ ์์ต๋๋ค. ๋ถ์๊ฐ๋ ์๋์ ๋ฐ์ดํฐ๋ฅผ ์คํ๋ ๋์ํธ ๋๋ ๋ค๋ฅธ ์ ํ๋ฆฌ์ผ์ด์ ์ผ๋ก ๋ด๋ณด๋ด๊ฑฐ๋ ๋ฐ์ดํฐ ๊ณผํ์ ํ์ ์ ํ๋ ๋ฆฌ์์ค๋ฅผ ๊ธฐ๋ค๋ฆด ํ์๊ฐ ์์ต๋๋ค.
[ ๊ฐ๊ฒฉ์ ์ฑ
]
storage๋ ๋ณ๋์ ๊ธ์ก์ ๋ฐ์ง๋ง ์ฌ์ฉ๋์ ๋ฐ๋ผ ์๋ ๊ฐ๊ฒฉ(์ฃผ๋ฌธ์ )๊ณผ ๊ฐ๊ณ ์ข
๋์ ๋ 1TB๋จ์๋ก ๋ฐ๋๋ค. ๋งค์ 1TB ๊น์ง ๋ฌด๋ฃ์ด๋ค.(1TB๋ ์ฃผ๋ ๊ตฌ๋ ์ข์ํ์ง๋ง Test ํด๋ณด๋ ๋ง์ด ์ง์๋๋ ํธ์ ์๋๋ค. ์์ฆ ๊ธฐ์
์์ ๋ค๋ฃจ๋ ๋ฐ์ดํฐ ํฌ๊ธฐ๋ ๊ธฐ๋ณธ GB์ด์์ด ๋๋ถ๋ถ์์ ๊ฐ์ํ๋ฉด ,,)
[Train ๋น์ฉ]
Bigquery์์ ์ง์ํ๋ ML์ ํ์ฉํด๋ณด์ (ARIMA)
Train
(1) ๋ชจ๋ธ Table ์ ์ธ(๋ชจ๋ธ์ด ์ ์ฅ๋ ๊ณต๊ฐ)
CREATE OR REPLACE MODEL bigquery_ml.arima_model
(2) model configure - ARIMA, ๊ฐ parameter์ ํ์ ์ ์ง์ผ์ผํ๋ค.
OPTIONS(
MODEL_TYPE='ARIMA',
TIME_SERIES_TIMESTAMP_COL=[DATE],
TIME_SERIES_DATA_COL=[INPUT_COL],
TIME_SERIES_ID_COL=[INDEX_COL],
HOLIDAY_REGION='KR'
)
{CREATE MODEL | CREATE MODEL IF NOT EXISTS | CREATE OR REPLACE MODEL}
model_name
OPTIONS(MODEL_TYPE = 'ARIMA'
[, TIME_SERIES_TIMESTAMP_COL = string_value ]
[, TIME_SERIES_DATA_COL = string_value ]
[, TIME_SERIES_ID_COL = string_value ]
[, HORIZON = int64_value ]
[, AUTO_ARIMA = { TRUE | FALSE } ]
[, AUTO_ARIMA_MAX_ORDER = int64_value ]
[, NON_SEASONAL_ORDER = (int64_value, int64_value, int64_value) ]
[, DATA_FREQUENCY = { 'AUTO_FREQUENCY' | 'HOURLY' | 'DAILY' | 'WEEKLY' | 'MONTHLY' | 'QUARTERLY' | 'YEARLY' } ]
[, INCLUDE_DRIFT = { TRUE | FALSE } ]
[, HOLIDAY_REGION = { 'GLOBAL' | 'NA' | 'JAPAC' | 'EMEA' | 'LAC' | 'AE' | ... } ])
AS query_statement
AUTO_ARIMA ๋ํ ์ง์ํ๋ค. AUTO_ARIMA์ p, d, q๋ฅผ ๋ฐ๊ฟ๊ฐ๋ฉด์ ์ํํ๊ธฐ ๋๋ฌธ์ ์ํ ํ์์ ์ฌ์ฉ ๋ฐ์ดํฐ ํฌ๊ธฐ๋ฅผ ๊ณฑํ ๋งํผ ๊ฐ๊ฒฉ์ด ์ธก์ ๋๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ์ ์ฃผ์ ํด์ผํ๋ค.
* ์๊ณ์ด model์ ํ์ฌ ARIMA์ ์ ํํ๊ท ARIMA_PLUS Multi Variables๋ง์ ์ง์
(3) ์ ์ฒด ํ๋ฆ์ CTE(Common Table Expressions)์ ๊ฐ๋ค.
CREATE OR REPLACE MODEL bigquery_ml.arima_model
OPTIONS(
MODEL_TYPE='ARIMA',
TIME_SERIES_TIMESTAMP_COL='dt',
TIME_SERIES_DATA_COL='count',
TIME_SERIES_ID_COL='name',
HOLIDAY_REGION='KR'
) AS
WITH
SELECT dt
, name
, count
FROM example_table
;
Predict
์์ธกํ ๊ธฐ๊ฐ๊ณผ ์ ๋ขฐ ๊ตฌ๊ฐ(confidence level), ์์ธก ๋ฒ์(horizon)์ ์ค์ ํ ARIMA Model์ ์ฌ์ฉํด ์์ธก์ ์ํํ๋ค.
SELECT *
FROM ML.FORECAST(MODEL `bigquery_ml.arima_model`, STRUCT(30 AS horizon, 0.5 AS confidence_level))
;
Scheduling ์๋ํ
Bigquery์์ ์์ฑํ ์ฟผ๋ฆฌ๋ฅผ [์ผ์ ]์ ๋ฑ๋ก์์ผ ์ค์ผ์ค๋ง์ผ๋ก ๊ด๋ฆฌ ๊ฐ๋ฅํ๋ค. (๋ฐฐ์น ์์ )
๋ฑ๋ก๋ ์ฟผ๋ฆฌ๋ [์์ฝ๋ ์ฟผ๋ฆฌ]๋ฅผ ๋ณด๋ฉด ์์ฝ๋ ์๊ฐ๊ณผ ์ผ์ ์ ํ์ธ ํ ์ ์๋ค.
Bigqueryํ๋๋ง์ผ๋ก pipeline๊ณผ ๊ฐ์ ์์ ์ ํ๋ฒ์ ํด๊ฒฐ๋์๋ค. ๋นจ๋ฆฌ ๋ค๋ฅธ ์ข์ ๋ชจ๋ธ๋ ์ถ๊ฐ๋์์ผ๋ฉด ํ๋ ๋ฐ๋์ด ์๋ค. ์์ฆ ๋ฅ๋ฌ๋๊ณผ ๊ฐ์ high-level์ model์ ์ฌ์ฉํด ์์ธก์ ๋ง์ด ์ํํ๋๋ฐ ๊ฒฝ์ฐ์ ๋ง์ง ์๊ฒ ์ฌ์ฉ๋๋ ์ผ์ด ๋ง๋ค. ๊ฒฌ๋ฌธ๋ฐ๊ฒํ์ง ๋ง๊ณ ๊ฐ์ฅ ๋จ์ํ ๋ฐฉ๋ฒ์ผ๋ก ์ถฉ๋ถํ ์ ์ฉํ๊ณ ํ๋จ๊ณ์ฉ ์ฌ๋ ค๊ฐ๋ ๊ฒ์ ์ถ์ฒํ๋ค.
๊ณผ๊ฑฐ์ SQL์ ์ ๋ค๋ฃจ๊ธฐ ๊บผ๋ คํ ๋๋ python์ด๋ R๋ถํฐ ํค๊ณ ๋ชจํ ๋๋ฆฌ๊ณ csv๋ก ์ ์ฅํ๊ณ ์ฎ๊ธฐ๋ ์์์ ์ ๋ฐ๋ณตํ์ ๊ฒ์ด๋ค. Cloud๊ฐ ์ด๋๋ ๋ ์๋ ์ง๊ธ์ ๋๋ถ๋ถ์ ์ผ์ด ์๋ํ ๋์ด ๊ฐ๋ค. ํ๊ฐ์ง ๋ฐฉ๋ฒ๋ง ๊ณ ์ํ์ง ๋ง๊ณ ์ง๋ฆ๊ธธ์ ์ ์ ํ ์ฌ์ฉํด์ผ ํ๋ ์๋์ ๋ฐ๋ผ๊ฐ๋ ค๋ฉด ์๋ํ์ ๊ด๋ฆฌ๋ฅผ ํญ์ ์ผ๋ํ์.
'๐ Statistics' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
SOFTS: Efficient Multivariate Time Series Forecasting with Series-Core Fusion (0) | 2024.10.29 |
---|---|
Chapter 2. ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ดํดํ๋ ๋ฐฉ๋ฒ (0) | 2024.08.30 |
Chapter 1. ์ธ๊ณผ - ํ๋ ํ๋ ์ ์ํฌ (0) | 2024.08.29 |
Auto ARIMA Summary ์ค๋ช (0) | 2023.09.01 |
๊ณ ์ฐจ์์์ ๊ตญ์์ ๋ฐฉ๋ฒ(interpolate->extrapolate) (0) | 2022.08.04 |