前言
Hi 大家好, 我是台灣 EC 資料工程經理, Vila. 很高興梅竹黑客松成員到 LINE 台灣辦公室參訪, 以下為當天與同學們分享的內容, 讓我來帶大家了解如何成為電商領域的鍊金術師😃
何謂煉金?
其實資料工程團隊很像一群擁有各種技能的鍊金術師想辦法從資料中提取黃金,
鍊金術師要發動技能時都需要有對應的鍊成陣,
這邊此分享一下我們台灣 LINE 電商資料工程團隊主要練成陣 - 推薦系統.
推薦系統在電商服務中千變萬化,
無論是禮物品牌, 個人化類似甚至於今日熱搜字都有它的身影.
如何煉成
要發動鍊成陣自然需要術師,
在此我幫大家解說資料工程領域的眾多國家級鍊金術師.
鍊金術師偏左為商業面向強; 偏右邊則是工程面向強,
為了讓團隊可以擁有多元技能,
我們從中挑選了三種職業 - 資料科學家, 資料工程師, 機器學習工程師,
這三者之間均有技能重疊, 可以互相協助, 且商業和工程面向皆有涵蓋
大致來說資料科學家任務為設計解決方案 (模型研究->實驗→試作) 與量化分析 (特徵資料 → 模型 → 成效分析)
資料工程師的任務則是專注於讓資料與平台可以穩定且有效率地運作,因此技能以軟體工程與系統架構為主要軸心,
機器學習工程師則是一個介於兩者之間的角色,演算法背景搭配工程技術讓解決方案上線服務時可以在效能達到最佳化
接著我來深入說明各角色常用 到的技術棧 (Tech Stack) 和其分類
資料工程師
- 處理資料流 (data pipeline) 有近期社群蓬勃發展的 Flyte 與 Apache 開源老牌 Airflow
- 資料庫則需要同時熟悉關聯式資料庫 (e.g. MySQL) 和 noSQL 資料庫 (e.g. MongoDB, Hive)
- 資料平台依照任務類型有平行化 in-memory 大數據平台 Spark、分散式事務平台 Kafka 與分散式多租戶的全文搜尋引擎 Elastic Search
- MLOps 中主要為 CI/CD (e.g. Github Action) 和容器化 (containerized) 管理系統 (e.g. K8S) 為主
資料科學家
- 建模方面我們可以依照模型/演算法需求挑選適合的函式庫 (library),機器學習常用到 scikit-learn,深度學習最知名則有 Tensorflow 和 PyTorch
- 模型推論方面 spark 和 pandas 提供的 dataframe 都是適合操作和運算的資料結構,通常來說會拿 pandas 使用,因為其函式 (function) 設計簡單好上手,但如果資料量到一定級數以上則需要使用 spark 才能更有效率在時間內完成運算
- 當用戶持續增加與服務設計不斷擴充,資料除了增長外也可能直接或間接會改變模型的樣態,此時我們就很需要監控模型成效,當我們希望成效提升或改善時,持續性的實驗設計就相當重要,模型與演算法不會是一次性的任務;常用到的成效評估指標種類繁多,在推薦系統其中較為常見的是 F1 Score 和 Hi Rate 此外也有偏向商業指標的 CTR;實驗最常採用 A/B 測試
機器學習工程師
- 技能樹上除了資料科學家與資料工程師部分技能外還有模型佈建,在產品級別的模型服務上我們常用 BentoML,如果希望能持續追蹤模型實驗和執行參數可以參考 mlflow
此外鍊金術師們常碰的模型種類繁多,分類大致上為
- 機器學習模型
-
-
分類問題 (classification)
-
回歸問題 (regression)
-
聚類問題 (clustering)
-
- 深度學習模型
-
- 推薦系統: 雙塔模型
- 自然語言處理 (NLP) 的語言模型: BERT 與 GPT-3
- 影像或語音辨識的卷積神經網絡 (CNN): Resnet
結語
最後想和大家分享我從事多年資料鍊金術師所看到的一些真理
第一個分享: 是否有賢者之石呢? 我的回答: 並沒有喔
第二個分享: 希望大家不要被數字欺騙了,要擁有懷疑與檢核事實的能力
最後一個分享: 數學在資料領域無論你從事哪種鍊金術師都很重要
- 資料工程師: 資料確保與檢核 (判讀統計趨勢並找出問題)
- 資料科學家: 統計分析、模型驗證、A/B 測試
- 機器學習工程師: 特徵工程、演算法或模型實作、效能優化與調參
希望這次的經驗分享能為給想成為資料鍊金術師的夥伴們一點方向,謝謝大家參與 LINE 本次企業參訪活動。