更新於 2024/09/21閱讀時間約 2 分鐘

會 SQL 就能使用的 Machine learning 工具 - BigQuery ML

我們公司經營了一個類似 LinkedIn 的求職平台,主要的商業模式是幫助企業找到適合的人才,媒合成功後,我們會根據錄取人才的薪資比例收取服務費(類似獵頭模式)。因為我們的商業模式依賴業務人員與客戶的互動,而業務人員的時間有限,因此,能否在早期辨識出哪個客戶具有更高的合作潛力,對資源的分配至關重要。

為了解決問題,我的分析目標是:如何在客戶進行 onboarding 流程時,辨識出其潛在價值,並進行客戶分群。這樣我們可以更有效地將資源集中在更有可能成功合作的客戶身上。

而我當時進行分析的步驟是:

1. 定義「好客戶」

我們使用歷史數據,並定義那些被業務標示為「值得合作」的客戶為「好客戶」。

2. 發想有用的特徵(Feature Engineering 特徵工程)

我發想了一些可能有助於區分「好客戶」與「其他客戶」的特徵,例如客戶的地區、預算範圍、以及希望招募的職位類型等。

3. 查看 Feature 與目標的相關性

接下來,我逐一檢視每個特徵與「好客戶」的相關性,通過製作圖表來視覺化這些關係。

然而,這個過程比較耗時,因為每一個 feature 需要單獨做一個圖表。當時我分析了 10 個特徵,結果製作了 10 張圖表,效率不高

  1. 根據相關性結果給予分群建議

根據 3. 得到的相關性結果,告知 PM 讓他們知道如何在 onboarding 過程做適當的分群


機器學習提升效率

在我學習更多 Machine Learning 知識後,我意識到「3. 查看 Feature 與目標的相關性」這個步驟,其實可以使用機器學習模型來自動化,不但可以節省時間,還有機會找出更複雜的邏輯

然而,建立預測模型通常需要寫程式(例如使用 Python),而對於不熟悉 Python 的 Data Analyst 來說,這是一個障礙。為了解決這個問題,我開始尋找能夠不用寫程式就能達成的解決方案,最後我發現了 BigQuery ML(BQ ML)


BigQuery ML 的優勢

BQ ML 可以通過簡單的 SQL 指令來構建機器學習模型。這意味著即使不會 Python 的分析師,也可以通過 SQL 來訓練模型、查看特徵重要性、進行預測等

詳細做法可參考這篇文章,我這裡主要列出我認為重要的三個指令:

  1. 建立模型
CREATE OR REPLACE MODEL
`richard.lr_model`
OPTIONS
( model_type='LOGISTIC_REG',
input_label_cols=['is_hired'],
ENABLE_GLOBAL_EXPLAIN=TRUE
) AS

SELECT
request_rate, --feature
event_order, --feature
tech_stack_match_count, --feature
is_hired --label
FROM `richard.demo_table`
ORDER BY event_created_at DESC LIMIT 10000 OFFSET 1000
  1. 查看特徵重要性(Feature importance)
SELECT
*
FROM
ML.GLOBAL_EXPLAIN(MODEL `richard.lr_model`)
  1. 使用模型進行預測
SELECT
*
FROM
ML.PREDICT (MODEL `richard.lr_model`,
(
SELECT
request_rate,
event_order,
tech_stack_match_count,
is_hired
FROM `richard.demo_table`
ORDER BY event_created_at DESC LIMIT 1000
)
)

這些 SQL 指令大大簡化了過去繁瑣的步驟,讓我能夠快速分析多個特徵,提升找到 insights 的效率(回扣到 數據分析師 Data Analyst 需要的四種能力 裡提到的 inspiration-per-minute)


BQ ML 的具體應用

利用 BQ ML,我能夠更快速地進行以下三個步驟:

  1. 建立模型:放入多個可能有影響的 features
  2. 查看特徵重要性:自動告訴我們哪些特徵對預測最有幫助,省去了手動檢查每個特徵的時間。
  3. 進行預測並改進模型:分析預測錯誤的情況,思考是否有潛在的有用特徵被忽略

持續的挑戰

儘管 BQ ML 很強大,但目前還有一些小問題,例如:

  1. 複雜模型耗時較久:例如樹模型 XGBoost 在資料量較小的情況下,仍然需要較長的運行時間,因此目前只能使用較簡單的模型(如邏輯回歸 Logistic regression)。
  2. 需要一定的機器學習基礎:要選擇合適的模型仍然需要機器學習知識,但這部分可以透過工具如 ChatGPT 來彌補。


謝謝你看到這邊,如果你看完文章後有任何想法或建議,都很歡迎在留言區提出分享!或是歡迎加我的 Linkedin 與我交流

分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.