• 검색 결과가 없습니다.

실습을 통한 BigQueryML 맛보기

N/A
N/A
Protected

Academic year: 2022

Share "실습을 통한 BigQueryML 맛보기"

Copied!
51
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)

June 2, 2020

실습을 통한 BigQueryML 맛보기

(2)

● 시작하기 전에

● BigQueryML 시작하기

● K-평균 클러스터링 모델 만들기

● TRANSFORM 절을 사용하여 특성 추출

● TensorFlow 모델을 BigQueryML에서 활용하기

Agenda

(3)

시작하기 전에

(4)

시작하기 전에

(5)

시작하기 전에

(6)

BigQuery 웹 UI 왼쪽 탐색 패널의 리소스 세션에 프로젝 트 이름을 클릭합니다.

오른쪽의 세부정보 패널에서 데이터세트만들기를 클릭 합니다.

1. Dataset 만들기

(7)
(8)

#standardSQL

CREATE MODEL `bqml_tutorial.sample_model`

OPTIONS(model_type='logistic_reg') AS SELECT

IF(totals.transactions IS NULL, 0, 1) AS label, IFNULL(device.operatingSystem, "") AS os, device.isMobile AS is_mobile,

IFNULL(geoNetwork.country, "") AS country, IFNULL(totals.pageviews, 0) AS pageviews FROM

`bigquery-public-

data.google_analytics_sample.ga_sessions_*`

WHERE

_TABLE_SUFFIX BETWEEN '20160801' AND '20170630'

2. 모델 만들기

BigQuery용 Google Analytics 샘플 데이터세트를 사 용하여 로지스틱 회귀 모형을 만듭니다.

다음 표준SQL쿼리는 웹사이트 방문자의 트랜잭션 여부를 예측하기 위해 사용하는 모델을 만드는데 사 용됩니다.

(9)
(10)

3. 학습통계가져오기

모델 학습 결과를 확인하려면ML.TRAINING_INFO 함수를 사용하거나BigQuery 웹 UI에서 통계를 확인 할 수 있습니다.

(11)
(12)
(13)

학습 데이터세트에서 지정된 반복 후에 계 산된 손실 측정 항목

홀트아웃 학습 데이터세트에서 지정된 반복

후에 계산된 손실 측정 항목

(14)

training_run: 이 열의 값은 새로 만든 모델의 경우 0입니다. warm_start를 사용하여 모델을 다시 학습시키는 경우 이 값은 증가합니다.

iteration: 학습 실행의 반복 숫자입니다. 첫 번째 반복 값은 0입니다. 이 값은 학습을 추가로 실행할 때마다 증가합니다.

loss: 학습 데이터에서 반복 후 계산된 손실 통계입니다. 손실은 로지스틱 회귀의 경우 로그 손실이고 선형 회귀의 경우 평균 제곱 오차입니다 . 다중 클래스 로지스틱 회귀의 경우loss는 교차 엔트로피 로그 손실입니다.

eval_loss: 홀드아웃 데이터에서 계산된 손실 통계입니다. k-평균 모델의 경우ML.TRAINING_INFOeval_loss열을 반환하지 않습니다.

learning_rate: 이 반복의 학습률입니다.

duration_ms: 반복에 걸린 시간(밀리초)입니다.

cluster_info: centroid_id, cluster_radius, cluster_size필드가 포함된STRUCT 행렬입니다. ML.TRAINING_INFO는 표준화된 특징을 사용하여 cluster_radiuscluster_size를 계산합니다. k-평균 모델에 대해서만 반환됩니다.

* TRAINING_INFO

(15)
(16)

#standardSQL SELECT

* FROM

ML.EVALUATE(MODEL `bqml_tutorial.sample_model`, ( SELECT

IF(totals.transactions IS NULL, 0, 1) AS label,

IFNULL(device.operationgSystem, “ “) AS os,

device.isMobile AS is_mobile,

IFNULL(geoNetwork.country, “ “) AS country, IFNULL(totals.pageviews, 0) AS pageviews FROM `bigquery-public-

data.google_analytics_sample.ga_session_*`

WHERE

_TABLE_SUFFIX BETWEEN ‘20170701’ AND

‘20170801’ ))

4. 모델 평가하기

모델을 만든 후에는ML.EVALUATE 함수를 사용하여 분류 기준의 성능을 평가합니다. ML.EVALUATE 함수 는 실제 데이터를 기준으로 예측 값을 평가합니다.

(17)

#standardSQL SELECT

* FROM

ML.EVALUATE(MODEL `bqml_tutorial.sample_model`, ( SELECT

IF(totals.transactions IS NULL, 0, 1) AS label,

IFNULL(device.operationgSystem, “ “) AS os,

device.isMobile AS is_mobile,

IFNULL(geoNetwork.country, “ “) AS country, IFNULL(totals.pageviews, 0) AS pageviews FROM `bigquery-public-

data.google_analytics_sample.ga_session_*`

WHERE

_TABLE_SUFFIX BETWEEN ‘20170701’ AND

‘20170801’ ))

#standardSQL

CREATE MODEL `bqml_tutorial.sample_model`

OPTIONS(model_type='logistic_reg') AS SELECT

IF(totals.transactions IS NULL, 0, 1) AS label, IFNULL(device.operatingSystem, "") AS os, device.isMobile AS is_mobile,

IFNULL(geoNetwork.country, "") AS country, IFNULL(totals.pageviews, 0) AS pageviews FROM

`bigquery-public-

data.google_analytics_sample.ga_sessions_*`

WHERE

_TABLE_SUFFIX BETWEEN '20160801' AND '20170630'

(18)
(19)

● precision — 분류 모델의 측정항목. 정밀도는 포지티브 클래스 예측 시 모델의 정확한 빈도를 식별.

● recall — 가능한 모든 포지티브 라벨 중에서 모델이 올바르게 식별한 라벨 수라는 질문에 답하는 분류 모델의 측정항목.

● accuracy — 정확도는 분류 모델이 바르게 되었다고 예측하는 비율.

● f1_score — 모델의 정확도를 나타내는 척도. f1 점수는 정밀도와 재현율의 조화 평균.

● log_loss - 로지스틱 회귀에 사용되는 손실 함수. 모델 예측과 올바른 라벨 간의 차이 정도를 나타내는 척도.

● roc_auc - ROC 곡선 아래 영역. 분류 기준에서 임의로 선택한 양성 예시가 실제로 양성일 확률이 임의로 선택한 음성 예시 가 양성일 확률보다 높음.

(20)

#standardSQL

SELECT

country,

SUM(predicted_label) as total_predicted_purchases

FROM

ML.PREDICT(MODEL `bqml_tutorial.sample_model`, (

SELECT

IFNULL(device.operatingSystem, "") AS os, device.isMobile AS is_mobile,

IFNULL(totals.pageviews, 0) AS pageviews, IFNULL(geoNetwork.country, "") AS country

FROM

`bigquery-public-

data.google_analytics_sample.ga_sessions_*`

WHERE

_TABLE_SUFFIX BETWEEN

'20170701'AND'20170801')) GROUP BY

country

ORDER BY

total_predicted_purchases DESC LIMIT 10

5. 모델을 사용하여 결과 예측

모델을 평가했으므로 다음 단계는 이 모델을 사용하 여 결과를 예측하는 것입니다. 모델을 사용하여 각 국 가의 웹사이트 방문자수가 수행한 트랜잭션 수를 예 측합니다.

(21)
(22)

#standardSQL

SELECT

fullVisitorId,

SUM(predicted_label) as total_predicted_purchases

FROM

ML.PREDICT(MODEL `bqml_tutorial.sample_model`, (

SELECT

IFNULL(device.operatingSystem, "") AS os, device.isMobile AS is_mobile,

IFNULL(totals.pageviews, 0) AS pageviews, IFNULL(geoNetwork.country, "") AS country, fullVisitorId

FROM

`bigquery-public-data.google_analytics_sample.ga_sessions_*`

WHERE

_TABLE_SUFFIX BETWEEN

'20170701'AND'20170801')) GROUP BY

fullVisitorId

ORDER BY

total_predicted_purchases DESC LIMIT 10

5. 모델을 사용하여 결과 예측

모델을 평가했으므로 다음 단계는 이 모델을 사용하 여 결과를 예측하는 것입니다. 이 예시에서는 웹사이 트 방문자가 수행할 트랜잭션 수를 예측하고자 합니 다.

(23)
(24)

BigQuery 웹 UI 왼쪽 탐색 패널의 리소스 세션에 프로젝트 이름을 클릭합니다.

오른쪽의 세부정보 패널에서 데이터세트만들기를 클릭합 니다.

1. Dataset 만들기

(25)
(26)

2. 학습데이터 검사

WITH hs AS( SELECT

h.start_station_name ASstation_name,

IF (EXTRACT(DAYOFWEEK FROM h.start_date) = 1 OREXTRACT(DAYOFWEEK FROM h.start_date) = 7,

"weekend", "weekday") ASisweekday, h.duration,

ST_DISTANCE(ST_GEOGPOINT(s.longitude, s.latitude),

ST_GEOGPOINT(-0.1, 51.5))/1000AS distance_from_city_center

FROM `bigquery-public-data.london_bicycles.cycle_hire`

ASh

JOIN `bigquery-public-data.london_bicycles.cycle_stations`

ASs ON h.start_station_id = s.id WHERE

h.start_date BETWEENCAST('2015-01-01 00:00:00'AS TIMESTAMP) ANDCAST('2016-01-01 00:00:00'AS TIMESTAMP) ), stationstats AS(

SELECT station_name,

AVG(duration) ASduration, COUNT(duration) ASnum_trips, MAX(distance_from_city_center) AS distance_from_city_center

FROM hs

GROUP BY station_name )

SELECT * FROM stationstats ORDER BY distance_from_city_center ASC

(27)
(28)

3. K-평균 모델 만들기

CREATE ORREPLACE MODEL

bqml_tutorial.london_station_clusters OPTIONS(model_type='kmeans',

num_clusters=4) AS WITH hs AS(

SELECT

h.start_station_name ASstation_name, IF

(EXTRACT(DAYOFWEEK FROM h.start_date) = 1 OREXTRACT(DAYOFWEEK FROM h.start_date) = 7,

"weekend",

"weekday") ASisweekday, h.duration,

ST_DISTANCE(ST_GEOGPOINT(s.longitude, s.latitude),

ST_GEOGPOINT(-0.1,

51.5))/1000ASdistance_from_city_center FROM

`bigquery-public-data.london_bicycles.cycle_hire` ASh

JOIN

`bigquery-public-data.london_bicycles.cycle_stations` ASs ON

h.start_station_id = s.id WHERE

h.start_date BETWEENCAST('2015-01-01 00:00:00'AS TIMESTAMP)

ANDCAST('2016-01-01 00:00:00'ASTIMESTAMP) ), stationstats AS(

SELECT

station_name, isweekday, AVG(duration) ASduration, COUNT(duration) ASnum_trips, MAX(distance_from_city_center) AS distance_from_city_center

FROM hs GROUP BY

station_name, isweekday)

SELECT * EXCEPT(station_name, isweekday) FROM stationstats

(29)
(30)
(31)

4. ML.PREDICT 함수를 사용하여 정거장의 클러스터 예측

WITH hs AS( SELECT

h.start_station_name ASstation_name, h.duration,

ST_DISTANCE(ST_GEOGPOINT(s.longitude, s.latitude),

ST_GEOGPOINT(-0.1,

51.5))/1000ASdistance_from_city_center FROM

`bigquery-public-data.london_bicycles.cycle_hire` ASh JOIN

`bigquery-public-data.london_bicycles.cycle_stations` ASs ON

h.start_station_id = s.id WHERE

h.start_date BETWEENCAST('2015-01-01 00:00:00'AS TIMESTAMP)

ANDCAST('2016-01-01 00:00:00'ASTIMESTAMP) ),

stationstats AS( SELECT

station_name,

AVG(duration) ASduration, COUNT(duration) ASnum_trips, MAX(distance_from_city_center) AS distance_from_city_center

FROM hs GROUP BY

station_name ) SELECT

* EXCEPT(nearest_centroids_distance) FROM

ML.PREDICT( MODEL bqml_tutorial.london_station_clusters, (

SELECT

* FROM

stationstats WHERE

REGEXP_CONTAINS(station_name, 'Kennington')))

(32)
(33)

5. 모델을 사용하여 데이터에 근거한 의사 결정 내리기

(34)

TRANSFORM 절을 사용하여 특성 추출

BigQuery 웹 UI 왼쪽 탐색 패널의 리소스 세션에 프로젝트 이름을 클릭합니다.

오른쪽의 세부정보 패널에서 데이터세트만들기를 클릭합 니다.

1. Dataset 만들기

(35)

TRANSFORM 절을 사용하여 특성 추출

(36)

TRANSFORM 절을 사용하여 특성 추출

#standardSQL

CREATEMODEL `bqml_tutorial.natality_model`

TRANSFORM(weight_pounds, is_male,

gestation_weeks,

ML.QUANTILE_BUCKETIZE(mother_age, 5) OVER() ASbucketized_mother_age, CAST(mother_race ASstring) ASmother_race, ML.FEATURE_CROSS(STRUCT(is_male,

CAST(mother_race ASSTRING) ASmother_race)) is_male_mother_race)

OPTIONS

(model_type='linear_reg',

input_label_cols=['weight_pounds']) AS SELECT

* FROM

`bigquery-public-data.samples.natality`

WHERE

weight_pounds IS NOT NULL ANDRAND() < 0.001

2. 모델만들기

BigQuery용 출생률 샘플 테이블을 사용하여 선형 회 귀 모델을 만듭니다. 다음 표준 SQL 쿼리는 아이의 출 생 시 체중 예측에 사용하는 모델을 만드는 데 사용됩 니다.

(37)

TRANSFORM 절을 사용하여 특성 추출

(38)

TRANSFORM 절을 사용하여 특성 추출

3. 학습 통계 가져오기

(39)

TRANSFORM 절을 사용하여 특성 추출

(40)

TRANSFORM 절을 사용하여 특성 추출

#standardSQL SELECT

* FROM

ML.EVALUATE(MODEL

`bqml_tutorial.natality_model`, (

SELECT

* FROM

`bigquery-public-data.samples.natality`

WHERE

weight_pounds IS NOT NULL))

4. 모델 평가

모델을 만든 후에는ML.EVALUATE 함수를 사용하여 분류 기준의 성능을 평가합니다. ML.EVALUAtE 함수 는 실제 데이터를 기준으로 예측 값을 평가합니다.

(41)

TRANSFORM 절을 사용하여 특성 추출

(42)

TRANSFORM 절을 사용하여 특성 추출

#standardSQL SELECT

predicted_weight_pounds FROM

ML.PREDICT(MODEL

`bqml_tutorial.natality_model`, (

SELECT

* FROM

`bigquery-public-data.samples.natality`

WHERE

state = "WY"))

5. 모델을 사용하여 결과 예측

모델을 사용하여 와이오밍 주에서 태어난 모든 아기 의 출생 시 체중을 예측할 수 있습니다.

(43)

TRANSFORM 절을 사용하여 특성 추출

(44)

TensorFlow 모델을 BigQueryML에서 활용하기

CREATE OR REPLACE MODEL example_dataset.imported_tf_model OPTIONS (MODEL_TYPE='TENSORFLOW',

MODEL_PATH='gs://cloud-training-demos/txtclass/export/exporter/1549825580/*')

위 쿼리는

gs://cloud-training-demos/txtclass/export/exporter/1549825580/*

에 위치한 모델을

imported_tf_model

이라는BigQuery ML 모델로 가져옵니다. Cloud Storage URI는 와일드카드 문자 (*)로 끝나므로 BigQuery ML은 이 모델과 연결된 모든 애셋도 가져옵니다. 가져온 모델은 지정된 문서 제목을 게시한 웹사이트를 예측하는TensorFlow 텍스트 분류 기능 모델입니다.

1. TensorFlow 모델 가져오기

(45)

TensorFlow 모델을 BigQueryML에서 활용하기

(46)

SELECT *

FROM ML.PREDICT(MODEL example_dataset.imported_tf_model, (

SELECT title AS input

FROM `bigquery-public-data.hacker_news.stories`

) )

위 쿼리는 현재 프로젝트의

example_dataset

데이터세트에 있는

imported_tf_model이라는 모델을

사용하여

bigquery-public-data

프로젝트의

hacker_news

데이터세트에서 공개 테이블

stories

의 입 력 데이터로부터 예측을 수행합니다. 이 경우 TensorFlow 모델의

serving_input_fn

함수는 모델이 'input'이라는 단일 입력 문자열을 예상하도록 지정하므로 서브 쿼리는 서브 쿼리

SELECT

문의 열 에 별칭

input

을 할당합니다.

2. 가져온 TensorFlow 모델로 예측

TensorFlow 모델을 BigQueryML에서 활용하기

(47)

TensorFlow 모델을 BigQueryML에서 활용하기

(48)

TensorFlow 유형 지원됨 BigQuery ML type

tf.int8, tf.int16, tf.int32, tf.int64, tf.uint8, tf.uint16, tf.uint32, tf.uint64

지원됨 INT64

tf.float16, tf.float32, tf.float64, tf.bfloat16

지원됨 FLOAT64

tf.complex64, tf.complex128

지원되지 않음 해당 없음

tf.qint8, tf.quint8, tf.qint16, tf.quint16, tf.qint32

지원되지 않음 해당 없음

tf.bool

지원됨 BOOL

tf.string

지원됨 STRING

tf.resource

지원되지 않음 해당 없음

tf.variant

지원되지 않음 해당 없음

3. TensorFlow 모델 입력 및 출력이 지원되는 데이터 유형

TensorFlow 모델을 BigQueryML에서 활용하기

(49)

4. 제한사항

TensorFlow 모델을 BigQuery ML로 가져오려면 이미 해당 모델이 있어야 합니다.

모델은Cloud Storage에 저장되어야 합니다.

모델은 모델 생성 시점에 고정됩니다.

TensorFlow 모델은저장된 모델 형식이어야 합니다.

현재ML.CONFUSION, ML.EVALUATE, ML.FEATURE, ML.ROC_CURVE, ML.TRAINING_INFO, ML.WEIGHTS 함수는 TensorFlow 모델을 지원하지 않습니다.

모델 크기는250MB로 제한됩니다.

GraphDef 버전 20 미만을 사용하여 학습된 모델은 지원되지 않습니다.

출시되지 않은TensorFlow 버전을 사용하여 학습된 모델은 지원되지 않습니다.

핵심TensorFlow 작업만 지원됩니다. 커스텀 또는 tf.contrib 작업을 사용하는 모델은 지원되지 않습 니다.

TensorFlow 모델을 BigQueryML에서 활용하기

(50)

Machine Learning을 시작하고자 한다면…?

Don’t Start With Theory

Don’t Study All of Machine Learning Don’t Fiddle Around With Algorithms

Don’t Implement Everything From Scratch

Don’t Change Tools All The Time

(51)

Thank You!

참조

관련 문서

Credit expired Late shipment Late presentation 서류관련 서류에

2.1.15 &#34;ITS&#34; or &#34;Intelligent Transport Systems&#34; means the integration of information and communication technologies (ICTs) and applications that

Dism /Capture-Image /ImageFile:C:\system-partition.wim /CaptureDir:D:\ /Name:&#34;system partition&#34;. Dism /Apply-Image /ImageFile:C:\system-partition.wim

&#34;Policy Analytical Capacity as a Source of Policy Failure.&#34; Paper Prepared for the Workshop on Policy Failure, Annual Meeting of the Canadian

○ The organizing committee of the Gangwon International Biennale said &#34;We are surprised at the visitors' enthusiastic reactions&#34; and added &#34;the main reason

Canham, &#34;Visible light emission due to quantum size effects in highly porous crystalline silicon &#34;, Nature, vol. Herino, &#34;Exchange mechanism responsible for

K., &#34;Hydrogen production by catalytic decomposition of methane over activated carbons: kinetic study&#34;, International Journal of Hydrogen Energy, Vol...

In this review, an overview is given on the last development of catalytic methods for the preparation of substituted furans from carbohydrates and ensuing polymers.. The