目錄
從2021年9月底開始,我規劃了一個資料科學專案,試著用機器學習模型提升簡訊行銷活動的成效。過去,這類型的行銷活動通常是由領域專家(Domain Expert)根據消費者行為、促銷主題等條件,篩選出具有消費潛力的顧客,並進行簡訊發送,這是零售業行之有年的作法。簡訊行銷看似小道,但裡面還有金礦可挖。專案以A/B測試的方式進行,以模型預測組為A組,人為篩選組為B組,兩組依照各自的方式挑選出簡訊寄送名單,並在檔期結束之後比較績效。這個專案從11月份開始執行,進行6次的測試,戰況一度殺得難分難解,我的模型也經歷了數次迭代,納入更多面向的資料。
2022年2月7日,農曆年後第一個上班日,我結算了第7次的活動成效,結果A組的投資報酬率(ROI)遙遙領先17%!當進一步計算增加的毛利額時,我再次驚訝的發現,這個金額已經超過我年薪的15倍,而這個檔期的時間僅僅8天!爾後的幾次活動,A組的ROI穩定領先20-35%,即使是規模較小的活動,簡訊的發送數量較少,毛利額也能達到我年薪的30%。
這個數字太漂亮,漂亮到甚至會讓人疑惑,「有些顧客有固定的消費周期,即使不提供促銷資訊給他們,他們還是會回購呀!」這個論點十分合理,但基於以下兩個原因,這個疑問可以直接被忽略。首先,站在廣告投放者的角度,我們本來就不可能判定顧客是自發性購物,還是看到廣告內容才購物,甚至顧客本人可能都說不清楚,無法簡單的收集資料是第一個難題。其次,持續與忠實顧客保持互動是品牌經營與CRM的重要環節,而且每封簡訊的發送費用不到1元,比起顧客的消費金額,這些費用根本不足掛齒。總結來說,上述疑慮確實存在,但沒有驗證的必要。即使將數字砍半,也還是相當讓人驕傲的績效。
這份難以言喻的成就感是催生這篇文章的主要原因,我想分享在專案規劃與數據分析技術上的經驗,並拆成為三個階段,分別為專案規劃、專案執行與成效評估,執行階段會著墨於程式設計面的分享。
另外,由於每間公司的數據團隊規模大小不一,分工較細的團隊通常會包含資料工程師、PM等職位,但為了避於文字敘述上過於混亂,這篇文章統一用資料科學家作代表,這確實也符合我在工作上的真實情況。
專案規劃階段
我在2021年10月參加SAS線上研討會時,SAS的顧問提到,有8成的預測模型在開發後都沒有落地,VentureBeat上也有一篇文章〈Why do 87% of data science projects never make it into production?〉,光看標題就可以知道,有87%的資料科學專案都無疾而終,沒能貢獻商業價值。專案夭折的原因當然綜縱複雜,不能一概而論,但可以確定的是,在討論資料清理、演算法挑選、模型建置、參數調校等技術問題之前,專案規劃的品質就能很大程度的決定是否夭折。是的,不能決定是否成功,只能決定是否夭折。那什麼樣的專案才算是一個好的專案?我認為第一個條件是能幫公司獲利,第二個條件是能用數字證明增加的利潤是歸功於這個數據分析專案。說起來容易,但過程卻是困難重重,其中又可分成三個部份:定義問題、擬定行動方案與設立績效評估指標。
定義問題
定義問題是資料科學專案的第一步,也可能是走偏開始。由於每個人的工作內容不同,工作習慣與思惟模式不同,因此,必須在反覆討論中明確的定義問題,而資料科學家像哆啦A夢,必須在定義問題後給出適合的解決方案。
舉例來說,如果你在18世紀末問任何一個人,他需要什麼樣的交通工具,所有人都會說,「給我一匹更快的馬」,卻幾乎沒有人會說「給我一部汽車」,因為當時大部份的人仍不知道汽車是什麼。資料科學家掌握了較多的科技新知與方法論,就能夠給出車子這個選項。
如果我們再往後一百年,到了19世紀末,有個人說他需要一部汽車,他需要的真的是汽車嗎?他可能是個商人,真實需求是獲得市場上的最新消息,比起汽車,他其實更需要一部電話。
資料科學家也有自己的盲點在,「如果你手上有把錘子,看什麼都像釘子」,這是資料科學家的處境。如果你掌握了機器學習與深度學習的技能,是不是就應該把這些能力應用到每一個專案上呢?即使只是一次性的專案,也需要大費周章的建置模型嗎?
在定義問題的階段,確實需要大量的溝通,有時候已經明確定義了問題,卻又覺得某個環節的邏輯怪怪的。這時,最好的方式是不停的詢問「你的行動方案是什麼?」,也就是下個步驟。
擬定行動方案
除非是研究型專案,否則絕大多數的專案都應該要能產生行動方案(Action Plan),知識傳播並非最終目的,不能產生行動方案的專案幾乎等同一個沒有價值的專案,也可能是在定義問題階段就已經走錯方向,必須回到上一個步驟重新來過。
在大部份的專案中,做行動的人往往不會是資料科學家本人,這代表一百分的專案結果可能會因為執行率不良,最後只能創造四十分的商業價值。因此,在專案規劃階段,最好就可以預想所有可行的行動方案,是否需要進行跨團隊、跨部門溝通,當涉及的人越多,後續潛在的溝通成本也越高,尤其當資料科學家必須身兼PM的角色時,可能會分散資料科學家投入在技術面的時間。
以前面提到的簡訊行銷模型為例,這個專案的行動方案單純到不能再單純,和過去一樣發送簡訊即可,不會有任何的雜訊干擾,不需花費大量斡旋於溝通協調之中,以資料科學家的角度而言,這是個近乎完美的專案情境。
以A/B測試作為績效指標
擬定行動方案後,勢必要進一步設定專案的績效指標。如何將「機器學習模型精準度」與「行動方案執行成果」這兩個指標獨立評估,是衡量資料科學家工作產值的重要關鍵,我認為最容易使用的方法即是A/B測試。
在〈如何打造一個「頂級數據科學團隊」? LinkedIn:狂用 A/B Test 就對了!〉這篇文章中,LinkedIn的全球數據科學團隊負責人許亞分享了LinkedIn數據團隊的工作流程,以及A/B測試的價值。由於專案情境相異,選用A/B測試的理由也略有不同,但殊途同歸。
同樣以我的專案來說,我設定的A組為模型預測組,B組為人為篩選組。採用A/B測試有兩大優點,第一個優點是為機器學習模型設立一個容易理解,且強而有力比較基準。資料科學家通常會以各式各樣的損失函數(Loss Funtion)評估模型成效,然而,這些指標對非技術背景的人來說就像外星人的語言。與其說模型達到多高的精準度,倒不如說模型額外創造了多少業績。不論模型的訓練分數多高多低,最終的目都是能勝過原有的工作模式,那才是導入機器學習的價值所在。即使是最簡單的線性迴歸演算法,只要能贏,它就是一個好的模型,能抓老鼠的就是好貓。
第二個優點,則是透過A/B測試移除外界因素的干擾。當一個行銷活動成功時,可能是廣告視覺夠吸引人,也可能是商品選得好,折扣殺得夠深,或是COVID-19造成前所未有的搶購潮,這每一項的成效都不容易獨立評估。然而,透過A/B測試,兩個組別就能在完全相同的環境下競爭,由於環境相同,代表可以忽略不計,進一步得出公平公正的比較結果。
如何規劃A/B測試
了解A/B測試的價值後,那我們應該如何進行實驗設計?這裡一樣將實驗組設為A組,也就是模型預測組,而對照組設為B組。實驗的第一個步驟為隨機抽樣,確保A、B兩組的組成性質相同,沒有偏坦任何一方的情況,且A、B兩組的資料量不一定是各50%,也可以是30%與70%。舉例來說,如果A、B組的資料比例為30%與70%,代表A組包含30%的高價值顧客,B組包含70%的高價值顧客,這樣才能達到均質的分配。
其次是篩選與行動,這取決於實驗的目的是取得更好的篩選方式,或是更好的行動方案。如果是精準行銷的案例,實驗的重點是怎麼挑選出精準的受眾,並提供相同的折扣優惠;相反,如果實驗的目的是廣告版位優化,則會用採用相同的篩選方式,但給予不同的廣告型式。

另外,如何設立B組也是一個重要的關鍵。在我的專案中,B組是原有的工作流程,也就是人為設定條件,並以此篩選受眾。如果不幸的,你的專案是一個全新的業務,沒有任何前例與規範可以作為對照組,那是不是就無法測試了?不是的,解決方法是先快速上線第一個版本作為B組,再將優化後的第二個版本作為A組,每個版本都與舊有的版本作比較,這也是上述LinkedIn所面臨的工作情境。
然而,快速上線與迭代說來輕鬆,實際上卻有許多的難題必須克服,我們下一篇文章見。