TechStyle專案的挑戰
在冬季學期,我們迎來第一個企業合作的專案,我們這組被分到的專案是TechStyle Media Mix,目標是優化Facebook廣告投放的效率。TechStyle是一間實施「會員訂閱制」的網路時尚服飾公司,2010創立以來,旗下有5個服飾品牌,5百萬活躍的會員,年營收7億,旨在利用電腦科技、數據科學、個人化服務打造一個增進客戶體驗的網路銷售平台。這次我們分析的是Fabletics品牌,主打女性運動服飾,熱銷的產品是運動緊身褲。
在數位行銷的領域,有一些KPI指標可以判斷廣告投放的成效,例如說: Click-through rate, CTR (點擊轉換率)可以知道每一次廣告播放有多少比例的人點擊連結;Cost per Acquisition, CPA (行動成本)可以了解每取得某事物(e.g. 新客戶)所需花的成本。在這個專案中,TechStyle主要的目標是:
- 使用CPA為指標,找出哪些是影響CPA的關鍵變數?
- 如何分配季度預算在這些不同的變數中,以達到降低CPA的目的?
相比於另外一個Palo Alto Network的專案,TechStyle給我們的問題的目標已經非常明確,所以我們的挑戰不在於開放性的尋找和定義商業的問題,而是在於如何處理和分析資料、解讀結果和說故事。第一個挑戰在於原始資料的類型,TechStyle提供給我們的資料變數包含每一個廣告的ID、廣告銷售的內容、目標群眾、投放在哪個Facebook平台、在網頁的投放位置、類型,和廣告連結的網頁、花費、點擊數、VIP數量等等,可以做為獨立變數的,除了時間以外全部都是類別型資料,而且變數的級別多元,因此若直覺的想要用直線迴歸進行分析,需轉化每一個級別的類別型資料成為1和0的變數,這個方法叫做one hot encoding,可以預想到會有非常大量的dummy variables,過多的變數會造成Dummy variable trap和Curse of dimensionality的問題,這並不適用於機器學習,也不利於解釋結果,所以如何轉化資料成為機器學習模型可以處理的形式,同時又不喪失解讀結果的能力是我們的重要挑戰。第二個挑戰在於目標變數CPA為無限,由於資料的層級是「每天的」廣告投放,通常一個廣吿會連續投放好幾天甚至好幾個月來累積它的成效,所以不見得每一天的廣告投放都會吸引潛在客戶成為VIP,這會造成CPA = Spend/ 0 = inf,當我們想要預測的目標變數CPA是無限,數學模型是無法處理的,所以我們要找到能夠分析CPA的方法。第三個挑戰是如何找到適合的方式來優化預算分配。
我們如何切入問題和處理資料
在學期期中報告之前,我們大部分都在做以下的工作:
- 資料探索Data Exploration
- 資料清理Data Cleaning
- 腦力激盪Brainstorming提出分析方法的雛形
- 和Client確認資料的內容和他們想要的方向
期中報告後,我們才真正進入分析階段,而且由於發現我們的時間緊迫,所以我們也在這個時候根據繳交報告和口頭報告的時間,將所有的預計完成時間確定下來:
- 2/18 完成資料前處理
- 2/24 確定模型的想法 & 和Advisor最後確認可行性
- 3/2 跑完模型 & 確定書面報告的架構
- 3/6 和Client最後確認商業層面的問題和方向
- 3/9 完成書面報告
- 3/15 完成口頭報告的投影片
為了能夠比較正確的使用數學模型,我們做了蠻大量的資料前處理(即Data Pre-processing),我認為這是我們這一組最後可以勝出的原因吧,因為我們和其他組別都用了相似的數學模型:Random Forest和Linear Regression,但我們前處理資料的方式可以減少一些潛在的問題。下面簡單介紹我們執行的流程和原因:
資料前處理 Data Pre-processing
流程 | 原因 |
資料層級的選擇Granularity Selection | 我們的目標是分析變數知道哪些能讓廣告成功,所以不需要精細「每天的」廣告資料,所以我們根據廣告ID和月份統合所有廣告資料,成功濃縮80%的資料量。 |
變數和級別的縮減 Dimension & Level Reduction | 跑Random forest的原理是每一次split會隨機挑選 m ≈ √p 的變數來評估,所以如果類別型變數的級別太多,被挑選的機率會比較高,為了不讓不平衡的級別數量造成模型去偏向選擇級別數多的變數,我們做了級別的縮減,根據過去消費的總額,若低於某個比例之下表示重要性較低,視為Other。另外根據變數的屬性,若有相似的變數則選擇留下最具代表性的,避免multicollinearity。 |
變數的轉換Variable Transformation | 考量有一個變數不易解讀,所以我們將它轉化成數量型的變數。另外,我們也想知道不同的influencer對CPA的影響,但我們很難去一次說明大量的influencer的影響,所以我們先做了集群分析(clustering),將相似的influencer以一些特性分類再做分析。 |
目標變數的內插Target Variable Interpolation | 即使我們做了整合資料的動作,還是有40%的目標變數是無限值,這不利於我們跑預測CPA的數學模型。所以我們決定使用內插,我們把所有的資料依照預測變數(predictors)匯總起來,把得到的CPA帶入原本的資料,前提假設是「每一個包含各種預測變數的組合」有一樣的廣告成效。當然,使用內插會「樂觀預估」CPA的表現,因為我們使用一個較小的值去取代無限。為了檢視這樣的做法對分析的影響,我們也做了Placebo testing去驗證這個方法的影響,最後發現造成的變異程度還在原始資料可以解釋的變異中。 |
接下來我們就開始跑模型了,主要使用Random forest決定變數的重要性,讓那些重要的變數跑Linear Regression,確定各個變數對目標變數的影響方向和程度。最後使用Excel的Solver協助我們做新的一年的季度預算的分配。
與組員合作的心態和過程
總體來說,我很喜歡和我的組員們一起合作,合作的過程可以感受到組員之間是「互相信任和尊重」、重視「開放討論」「和Advisor、Client密切溝通」,而且美國人真的很Chill。剛開始合作的時候,我有點擔心我們組裡面沒有一個明顯的leader,因為大家的個性是蠻隨和的,不太有人會主導會議進行的方向和節奏,也不會有任何人像個主管一樣跳出來分配工作,所有的工作的進行都需要自主性。隨著過程進行,起初的確浪費了一些時間,而且進度也不像其他組那麼快,但是大家都會自動自發的的去找工作做,所以雖然一開始看起來很鬆散,但也漸漸的把事情做完了,而且還做得不錯。
這次專案,在人際上我學到最重要的事情是:「學會去信任別人」,和「解決問題的方法無關對錯」,我以前在工作時比較屬於一肩扛起所有的事來做,因為沒辦法完全信任別人做的結果,資料都要重新再核對一次,電話也要多打一次,不僅耗時也產生一些人際的負擔,人在發現不被信任時,彼此是會有敵意的。在溝通的過程中,如果碰到「為什麼選擇這麼做,而不是那麼做」這一類的問題時,我以前會比較偏向用「是否對錯」的角度詢問,像是CPA內插我一開始是很不贊成的,這樣會導致我們低估CPA,這件事應該是「錯的」;但是隨著問題產生,持續尋找和詢問,找得了適合的方法驗證我們的疑問。所以我學到不需要「證明誰對誰錯」,資料分析的過程中沒有標準流程,一切要根據你的資料屬性和模型的特性去考量,「成功解決問題」才是最重要的。
獲得Winning Team和心得
最後,我們成功的獲得Client的青睞得到Winnig team,看到結果的當下真的超級振奮,覺得這中間的努力沒有白費!最大的takeaway應該是「從零到有的構思分析的流程」和「人際合作應該注意的事」吧,在第二次專案結束後,我會寫一篇「建構自己的資料分析流程」,希望可以掌握解決問題所需要的方法,也強化自己對量化分析和數學模型的熟悉度。