使用BigQueryML來預測新生兒體重
使用BigQueryML來預測新生兒體重

使用BigQueryML來預測新生兒體重

什麼是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

Chao Joshua

為Cloud Ace解決方案架構師。熟悉GCP雲端服務,並著力於大數據分析方法及數據管道研究。提供企業雲端架構諮詢與技術支援。

Leave a Reply