文章段落
什麼是BigQuery ML?
今天Cloud Ace的部落格,要帶大家體驗Google雲端服務的一個機器學習工具BigQuery ML。什麼是BigQuery ML,它是一個建立在BigQuery之上,一個方便產生跟執行機器學習的工具,目的是要讓使用者可以透過SQL指令,加速他們對既有資料的處理速度,而非透過複雜的程式產生、訓練模型,再對資料做預測分析。
故事內容
以下我們使用一個涵蓋四十個年頭的美國新生兒資料集,來製作一個預測新生兒體重的模型。此模型會根據嬰兒的性別、新生兒母親懷孕週期的長度,以及一些關於新生兒母親的統計資料來預測新生兒的出生體重。
步驟一:創建資料集
首先第一步,是要創建一個資料集來儲存模型。
我們打開GCP的使用者介面,在左上角的目錄中點選BigQuery服務;接著在左邊工作列中,找到我們自己的專案名稱。
接著在專案中產生一個資料集,方便我們儲存預測新生兒體重的模型。
在資料料集名稱上面,請寫上bqml_tutorial。
資料位置,請選擇美國(US)。最後按下建立資料集。
步驟二:產生模型
我們透過SQL語法,利用一個範例的新生兒資料表產生一個線性迴歸模型。這個模型將會被我們用來預測新生兒的體重。我們使用CREATE MODEL這個功能來產生模型。
建模的SQL指令如下:
standardSQL
CREATE MODEL
bqml_tutorial.natality_modelOPTIONS
(model_type='linear_reg', input_label_cols=['weight_pounds'])
AS SELECT weight_pounds, is_male, gestation_weeks, mother_age, CAST(mother_race AS string)
AS mother_raceFROM bigquery-public-data.samples.natalityWHERE weight_pounds IS NOT NULL AND RAND() < 0.001
把這個指令貼上到執行SQL指令編輯區後按下執行。
執行完建模指令後,就會看到模型的相關資訊(像是訓練像是模型訓練統計資料等等)出現在UI介面的相關資料當中。
補充說明:我們利用線性迴歸模型,可以把嬰兒體重這種數值型的預測結果透過我們提供的特徵進行預測 |
步驟三:評估模型
在產生好模型以後,我們需要使用ML.EVALUATE這個功能來評估分類器(label)的表現。而這個過程我們會去檢視模型預測出的結果跟真實資料所呈現的數值差異。
以下是執行ML.EVALUATE的SQL指令:
#standardSQL
SELECT * FROM ML.EVALUATE(MODEL `bqml_tutorial.natality_model`,
(SELECT weight_pounds, is_male, gestation_weeks, mother_age, CAST(mother_race AS STRING)
AS mother_race
FROM `bigquery-public-data.samples.natality`
WHERE weight_pounds IS NOT NULL))
一樣把指令貼上SQL指令編輯區,並按下執行,結束後你會看到類似下方圖片的結果
在這些指標中,有個指標很重要,叫做R2 score。簡單來說,我們可以透過這個統計肚量單位來判斷模型解釋跟平均數之間的距離分佈關係。
步驟四:使用模型進行新生兒體重預測。
在這一步當中,我們要做的就是,透過評估完的模型,來預測新生兒資料中來自Wyoming這個地區的新生兒體重。Wyoming是一個美國西部州的名字。
以下,我們使用ML.PREDICT的功能來進行模型預測,以下是完整的預測SQL指令:
#standardSQLSELECT predicted_weight_poundsFROM
ML.PREDICT(MODEL `bqml_tutorial.natality_model`,
( SELECT is_male, gestation_weeks, mother_age, CAST(mother_race AS STRING)
AS mother_race
FROM `bigquery-public-data.samples.natality`
WHERE state = "WY"))
貼上以上指令,並且在BigQuery UI的SQL指令編輯器執行完成後,執行結過大致就會如下圖:
以上就是針對GCP BigQuery ML的一個介紹以及建模預測的流程,歡迎大家在底下留言,提供你的想法或是問題。
原始文章來自Google Cloud教學課程:https://cloud.google.com/bigquery-ml/docs/bigqueryml-natality