Geo Experiment 的實務經驗

lavinalu
twdsmeetup
Published in
24 min readJan 20, 2024

--

講者 Tino 在 Houzz 的職位是 Data Scientist,工作涵蓋建 Dashboard 到 Product Feature 的 Deep Dive、建立與維護 Pipeline,但最多的時間還是投入在「實驗」上。

Geo Experiment 比較常在技術部落格或是書上看到,講者今年剛好有機會實作,因此今天的主題會以實務經驗進行分享:

  1. 什麼是 Geo Experiment?
  2. 如何設計 Geo-based Experiment?
  3. 實驗後如何分析?

什麼是 Geo Experiment?

Geo Experiment 與平常常聽到的實驗,最主要的差別在於使用什麼樣的 Randomization Unit,一般在講 Experiment 或是 AB Testing 時,其實隱含 Randomization Unit 是以 User 為單位。

舉例來說,Houzz 的網站有很多不同房屋的照片,使用者可以在裡面找靈感,並且在照片中穿插 Entry Point 讓使用者可以有跟網站上的 Professional(提供房屋服務的專業人士) 做互動。

此時可以設計一個 AB testing,測試間隔不同照片數量跳出 Entry Point,哪個間隔數量可以提高使用者與 Professional 的互動?

這樣的實驗設計就是 User-Based Experiment,使用者 A 看到的測試內容,跟隔壁鄰居 B 看到可能完全不一樣。但如果 Randomize 的基準是 Geo-Based,產生結果會是身處台北的使用者 A 跟身處高雄的使用者 B,會看到不同實驗內容。

AB Testing 或是 User-Based Experiment 已經有很多方法,Foundation 也做的很好,為什麼需要換成 Geo-Based?

最主要原因是在做實驗時,有個重要的假設:Stable Unit Treatment Value Assumption (SUTVA) ,這個假設雖然聽起來很學術,但其實概念很簡單,就是希望實驗中不同群的使用者不要有任何直接或間接的互動,影響實驗結果。舉例 User A 被指派到 Treatment 組後所產生的行為,不希望受到另一個 User B 被指派到Control 組影響。

Photo by Adem AY on Unsplash

最常見會產生使用者群體互相影響的例子就是社群媒體,像是 Instagram 若想要推一個新 Feature 來促使大家使用 Direct Message,假設我在 Treatment 組,朋友在 Control 組,但當我使用 Treatment 組推出的新功能與我的朋友對話時,我的朋友使用 Direct Message 的行為就受到我的影響。這樣就看不出新 Feature 帶來的影響。

因此在設計實驗時,要注意產品/服務是 One-Sided Market 或是 Two-Sided Market。One-Sided Market 比較單純就是使用者跟網站本身互動,沒有牽涉到另外一個網站使用者,而 Houzz 則是 Two-Sided Market 的情境,屋主可以在網站上找 Professional 互動或是配對,舉例:屋主 A,有裝潢需求在 Houzz 上找設計師,屋主 A 可能配對到 1~2 個設計師進行互動,這就是 Two-Sided Market 的情境。

Photo by Resume Genius on Unsplash

如果在 Two-Sided Market 使用 User-Based 實驗設計,會有什麼問題呢?

講者用一個假設性實驗來說明,實驗假設是:當屋主在 Houzz 上找設計時,如果提供更多資訊,就會有更高回覆率,對屋主與設計師都有好處。

理想情況是在 Control Group 裡,4 個屋主可能跟 2 個設計師互動,上面的設計師跟 1、3屋主配對,下面設計師跟 2、4 屋主配對,理想上的另一個平行宇宙中,所有屋主都有多寫資訊,然後比較兩個世界的互動率差異。

但因為設計師時間有限,在 Control Group 世界裡,設計師收到 2 個屋主來訊,只會回覆 1 個屋主,回覆率是 1/2,平行世界的 Treatment Group 裡,即便每個屋主都有提供較多資訊,設計師的回覆率也是 1/2,無法看出互動率的差別。

不過因為無法提供平行宇宙,在現實生活中只能把 4 個屋主做 User-Based Randomize ,第 1、4 個屋主有提供資訊,上下兩個設計師,都會選擇回覆有較多資訊的屋主,結果就是 Treatment Group 回覆率 100%,Control Group 回覆率 0%,這就是個在 Two-Sided Market 如果以 User-Based 方式進行實驗,會產生的問題。

因此可以用 Geo Experiment 去解決這個問題,試圖模擬平行宇宙的世界:將美國東岸紐約與西岸洛杉磯分別作為 Treatment 與 Control Group,兩地的屋主與 Professopnal 不會有互動,就類似平行宇宙,因此可以比較兩個 Group ,進而驗證增加資訊,對於回覆率提升的效果。

Photo by freestocks on Unsplash

不過這樣做法有兩個需要注意的重點,首先最明顯的就是可實驗的樣本數,會從幾百萬個使用者降低到一兩百個 Geo units ,因此實驗期間就需要花比較長的時間,才能減少數據量變少與不平均資料集對實驗結果造成的影響。

第二個注意重點是樣本數的分佈,有可能會 Highly skewed distribution(高度偏態分佈),舉例來說紐約跟洛杉磯都是較大的市場,若是挑選其一,與其他較小市場一起做 Randomize 就會有樣本偏差,造成實驗結論沒有足夠代表性,無法在主要市場上產生效果。

舉例將紐約、洛杉磯放到 Control Group,其他小市場放到 Treatment Group,就算 Trearment Group 的結果驗證屋主增加資訊可以提昇回覆率,但可能因為小市場的資料量沒有足夠代表性,無法將結論推及到大市場產生岀相同效果。(講者QA1)

如何設計 Geo-based Experiment(2 Steps)?

Step1:選擇不同的 Geo Candidate

在 Houzz 裡有不同的 Geo Candidate,這邊用美國來舉例,從最小到最大,分別是:Zip、Sub Metro、DMA、Metro、State ,分類越大數量越少,State 的數量最少,Zip 的數量最多。

Photo by KOBU Agency on Unsplash

其中 DMA 有些人比較不熟悉,DMA 全名是 Designated Market Area,當初被設計出來,是用於廣告或是行銷用途,在 Google 文獻或是行銷相關文章,可以看到 DMA 被用於 Geo Experiment。

挑選適用的 Geo Candidate 需要根據擁有的資料類型跟實驗情境

在 Houzz,Professional 會跟 House 購買受眾包(想接觸到的 Homeowner),會以 Sub Metro level 提供,因此第一直覺會認為用 Sub Metro 做實驗最好,但其實每個 Professional 會有多個 Sub Metro 或是 Package 購買服務,如果這個 Professional 在 Sub Metro A 分到 Control Group,在 Sub Metro B 分到 Treatment Group,就會產生第一階段分享提及的問題:Professional 同時會看到有實驗的功能跟沒有實驗的功能。

而下一件事情就是要考慮如何 Trade-off。

如果把 Geo 範圍放大 Spillover(外溢效果)理論上會減少,可以想像一個極端例子,當我們用 State 當案例,不管 Professional 買幾個 Sub Metro 都會被分到同一個 Group,只會看到有實驗的功能或是沒有實驗的功能;而另外一個作法是把 Geo 分得越細,代表 Randomination Unit 會變多,更容易讓 Metric 有 Balance 結果,但是相對應會造成 Spillover(外溢效果)增加。

以 Houzz 來說,發現使用 Sub Metro 與 DMA 是主要比較標的,使用 Sub Metro 會有 Spillovers 的問題,而使用 DMA 可以減少 Spillovers ,但同時也要觀察 Geo Candidate 數量減少後會影響多少 Power Analysis(統計檢定力)。

在 Houzz 的產業實例中發現,使用 DMA 只減少一點 Statistical Power(統計效力)但可以避免很多的 Spillovers,因此會選擇 DMA 作為 Randomization 的 Geo Unit。

Photo by Towfiqu barbhuiya on Unsplash

Step2:如何 Randomize Geo units?

講者分享幾個從今年開始接觸 Geo Experiment,從各家公司公開分享的文章中整理出的 Optimize 方法,不確定是否實際使用情況,但這些方法都是試圖去緩解使用 Geo Unit 進行 Randomize 會遇到個問題。

  1. Repeated Randomization(Neiflix):這個做法很直觀,就是不斷重複做到想達到的結果,前面的舉例目標是使大小城市被平均分散在 Control Group 與 Treatment Group 之間。
  2. 如果 Randomize 後發現大城市都在 Treatment Group,所有的小城市都在 Control Group,那就繼續 Randomize,使用 Objective Function 來確定 Randomize 的效果最好或是超過某個 Threshold 才停止。
  3. Clustering (Expedia, Google):這個作法先把要 Randomize 的 Unit 分群後再去做 Randomize。上述大小城市的問題可以用此方式很好地被解決,作法是大型城市一組、中型城市一組、小型城市一組,用這三組分別去做 Randomize,可以減少 Variance(變異性)。
  4. 從 Google 文獻中看到,如果依照城市大小分群後做 Randomize 可以減少 Variance,在主要追蹤的 Metric:ROAS(Return On Ad Spend)上,減少 10% 甚至更多的 Confidence interval。
  5. Synthetic control (Wayfair):把分配到 Control 的 Geo Uit 加上一個 Weight(權重),即便一開始分配 Control Group 跟 Treatment Group 結果不平均,但經過 Weighting 後就可以讓 Control Group 更像 Treatment Group,讓後續推論的結果會比較好。
  6. Greedy algorithm, Hill climbing algorithm (Instacart, Google, and ASOS): 不使用 Randomize 方法,而是使用演算法,讓 Control Group 與 Treatment Group 越像越好。
Photo by Tolga Ulkan on Unsplash

Google 最新的文獻裡有提到這個作法,主要是分兩個階段:

階段一 Matching:去找一個跟 Treatment Group 最 Match 的 Unit 加入 Control Group。

階段二 Augmentation:找到一個跟 Control Group 最接近的 Unit 加入 Treatment Group。

一直重複兩個階段,直到找到最好的組合讓 Treatment Group 與 Control Group 最相似。

講者分享 2 個在 Houzz 裡嘗試過的作法

  1. Clustering + Repeated Randomization

Source: Market Segmentation for Geo-Testing as Scale (by Jasmine Holdsworth, 2023)

根據 Geo 的特性去分成四組,再用 Randomize 方式分成 3 個 Segment,作法分成三步。

第一步:挑選適合的 Feature 去分 Cluster,判斷 Metric 會因為哪些 Feature 而改變的,就需要被納入,另一個是哪些特性是在 Geo 裡面被控制的,例如:城市的大小或是產業的特性。

第二步:K-means Clustering,也有很多可以嘗試的地方,像是要分幾組?這個更多是根據經驗或是依據 Experimental Context 做的判斷。

第三步:Bucketing,也就是圖片裡箭頭裡做的事,講者在這一步是使用 Repeated Randomization,因為就算前面步驟有做 Clustering 但 Randomize 的結果也不一定能達到滿意的結果,因此還是需要 Repeated Randomization 方式來做出想要的結果。

補充:在第二步做 Cluster 時並未決定 Geo Unit 要被指派到哪個 Group 裡,因此要在第三部 Repeated Randomization 裡決定每個 Geo Unit 要被派到 Control Group 或是 Treatment Group。

Photo by Kier in Sight Archives on Unsplash

2. Synthetic Control:第一步做 Geo Randomization,或是根據某些特性去做分層的 Randomization。

第二步找一組 Weighting,讓 Control Group 跟 Treatment Group 可以最相近,這就是一個 Optimize 的目標,要最小化 Control Group 跟 Treatment Group 的差異。

其中一個限制是:Weight 要大於等於 0,因為小於 0 的 Weight,無法被解釋在 Synthetic Control 裡的意義是什麼,因為不會有一個城市會負的效果。

下圖提供給大家參考,就是 Wayfair 文章裡提及,除了 Synthetic Control 之外也可以考慮 Synthetic Treatment。

Source: Using Geographic Splitting & Optimization Techniques to Measure Marketing Performance (By Emma Ma, 2017)

講者在 Houzz 嘗試只有做 Synthetic Control,就是只有在 Control Group 裡把每個 Geo Unit 分配 Weight,但 Wayfair 做的事情是 Treatment Group 裡也分配 Weight,讓兩組可以變得更像整體美國市場的狀況。

但是,上述講者講不同公司的作法與講者的嘗試,最後 Houzz 都沒有採用,原因是:每間公司實驗成熟度不同

Houzz 對於 Geo Experiment 的使用沒有太頻繁,目前最好的實驗方法是選擇一個比較容易理解、方法比較透明,可以去讓 Stakeholder 相信的方法。

如何說服 Stakeholder 是很重要的,如果使用很複雜的 Algorithm,第一:不好解釋,第二:不確定到底因為什麼原因得到結果,Stakeholder 也不太會相信最後實驗產生的結果。

Photo by Андрей Сизов on Unsplash

最後快速介紹 Houzz 目前使用的方法 Outline: Matching and Stratified Randomization

選用可以代表 Supply and Demand 市場的 Metric:

  • Metric of Supply:多少 Professional在這個市場。
  • Metric of Demand:多少 Homeowner 在這個市場。

就用這兩個 Metric 去做 Randomize。最主要用於驗證結果的 Primary Metric 就是 Control Group 與 Treatment 有多相似。

以下說明整個 Ramdomize 的過程:

  1. 選一個 DMA 能得到最多的 Supply,選定一個適合的 Metric 代表 Supply。
  2. 從剩下的清單裡挑一個 DMA 去計算與 Supply 與 Demand 的 Euclidean distance
  3. 選擇距離最小的 DMA,代表這個 DMA 的 Supply 與 Demand 跟第一步選出的 DMA 最像,因此會被分配到同一個 Group裡。
  4. 把第一步、第三步選到的 DMA 從清單裡剔除,不斷重複第一步~第四步直到所有 DMA 都從 Matching List 拿掉
  5. 最後做 Stratified randomize
Photo by Andrew Measham on Unsplash

這個過程就是一直兩兩配對,一直到所有 DMA 都被配對完為止,而被配對的 DMA 都是與 Supply 與 Demand 最相近的 DMA,就可以確保最相近的 DMA 一個被分配到 Treatment Group、一個被分配到 Control Group 裡,使 Treatment Group 與 Control Group 相近。但這是理論,最後還是需要做驗證。

講者分享了 2 種驗證方式

  1. 是不是有 Balanced (or common) Historical Trend:在實驗開始前,希望 Control Group 跟 Treatment Group 能盡量的這個重合,但其實也不一定要 Balance,只要做到 Common Trend 的話也可以。

除了畫圖以外,講者團隊也會做一些統計檢定去看 Control Group 跟 Treatment Group 是否有吻合。

2. Bucket 是否有 Visually Spread:會稍微畫圖去看 Treatment Group 裡的 Unit 都集中到西岸?或是集中到東岸?會不會有不夠 Spread 的問題。這個就是根據每個 Business Context 決定。

實驗後如何分析?

講者分享 2 個常見的分析架構

  1. Difference in Difference:下方提供的範例圖代表實驗結果是很好的。

Source: Geo-based AB Testing and Difference-in-Difference Analysis in Instacart Catalog (By Xiaoding Krause, 2022)

灰線直線區分實驗前後,在實驗前(灰線左側)可以看出Treatment Group 跟 Control Group 有一段差距(這段差異的產生,可能跟城市的大小、城市特性…等有些想得到的因素,或是想不到的因素都會被包含在此差異內),但整個趨勢是一樣的。

實驗後(灰線右側) Treatment Group 開始往上升,假設橘色虛線是假設沒有 Treatement 應該要有的結果,而實際實驗結果是綠線,綠線與橘線的差距就是實驗的效果。

Difference in Difference 可以直接從名字去理解,第1個是 Pre-treatment 的 Difference,就是綠色減灰線;第 2 個 Difference 是 Post-treatment 的 Difference,也是綠線減灰線的。

Difference in Difference,就是第 2 個Difference — 第 1 個 Difference,可得到 Treatment Effect。

在做推論時,很重要的是要假設橘色這一條線是 Parallel Trend,如何做這個假設呢?

就是要觀察 Pre-treatment 時 Treatment 跟 Control 的趨勢是相同的,才能說實行這個實驗後可以用 Control 趨勢去推算 Treatment 趨勢。

2. Time-based Regression:雖然看起來複雜但解釋起來也滿直觀,首先要做的是 Pretest estimation。

Source: Estimating Ad Effectiveness using Geo Experiments in a Time-Based Regression Framework (By Jouni Kerman, Peng Wang, and Jon Vaver, 2022)

比如可以用最簡單的 Regression Model,Y=α+βX+ε(誤差項),用這個 Regression Model 去估算每個 Parameter。

Y 就是每個階段 Treatment 的數字,X 就是每個階段 Control 的數字,白話來說就是希望在 Pre-treatment Feb-05 跟 Apr-01 階段去訓練一個 Regression Model,讓 Control 結果可以推算出 Treatement 的結果。

在實驗期間就可以用剛剛估算的參數去預測 Counterfactual,代表實驗期間,沒有 Treatment的那個 Trend 會長什麼樣子?

有了 Counterfactual 的 Y 跟實際觀察到的 Y=Treatment Metric 後,兩個相減就可以得到第二的 Panel 呈現的 Pointwise Difference

以上圖提供的例子,Feb-05 到 Apr-01 中間Control 跟 Treatment 差異不大,但是開始跑實驗後,會發現「觀察的 Treatment Y」 跟「Counterfactual Y」有所差異,當實驗結束 Apr-28 後差異又恢復到之前 0 的水準。最後一個 Panel 則是呈現 Cumulative Effect,也就是 Pointwise Difference 的效果加總,所以隨著實驗時間越長,Cumulative Effect 也越大。

Photo by Briana Tozour on Unsplash

3 Takes Away

  1. 在使用各種方法時都要注意假設,以 User-Based Experiment 來說,就是希望這兩個 Variance 中間 User 不要有任何互動或影響,Geo Experiment 可以解決這件事情,或是相對減少負面的影響。
  2. 挑選適合的方法去減少 Geo Experiment 的一些缺點,但同時也要符合 Business Context。
  3. 在設計實驗時要考慮到分析架構,舉例如果要使用 Difference in Difference的話,不需要 Treatment 跟 Control 完全重疊也可以做。

Q&A

Q1:如何定義有代表性的大城市,是首都或是大城市嗎?

A1:通常會是比較大的城市,但還是要根據 Business Context 決定,像我剛剛舉的例子,假設我們的主要的市場就是紐約跟洛杉磯,當然會希望其中一個被放到 Treatment Group,才能在 Treatment Group 做出有影響的結果時,可以去推論到主要市場上。

所以在做 Geo-Based Experiment 時,第一要確定 Business Context,去了解業務上的主要市場是什麼樣子,第二是這個有代表性的市場要被均勻分散到 Treatment Group 與 Control Group。

Photo by Philipp Henzler on Unsplash

Q2:想詢問實驗目的,當時這個實驗主要目是想測試新功能上線是否會影響 Business Metric,請問這個 Metric 是什麼?

A2:不同商業模式都會有不同的 Metric,對於 Houzz 而言,有一個重要的目標是:如何讓 Professional 更願意使用 Houzz 推出的產品/服務,舉例:因為 Houzz 可以配對品質更好的 Homeowner,Professional 會更願意使用 Houzz 的服務,像是購買受眾包或是續約,從這個面向去提出相關的 Matric。

Q3:會使用 Randomization 的原因是能得到比較 Robust 的結果,比較不受 Potential的 Confounding variables影響,如果使用比較複雜的 Optimize 的方法,雖然可能在城市的大小等等比較有可比性,但會不會造成潛在的 bias或者是variable更大?

A3:如果我們要純粹做 Optimization 的話,有些方法就已經完全捨棄 Randomization,就會像剛剛那個問題所講的,有些 Potential 的 Confounding 我們其實就可能沒有辦法控制。

Photo by Lucas Santos on Unsplash

即便我們現在 Geo 的數量不多,但是我們還是希望保留 Randomization 這件事情,所以以我的經驗來說,一開始也有做完全捨棄 Randomization,其實 Repeated Randomization 已經某種程度不算是在做Randomization,因為一直去找最好的組合。

這件事情其實在我提案時有被公司其他人挑戰過,經過一些改善才會先做 Clustering,再做Randomization,可以保持 Optimize 的結果,同時又保有 Randomization 一定的好處。

Q4:請問一般的 Pre-treatment 跟 Post-treatment 會有多長?

A4:這個取決於 Experiment Contact,比如說以 Post-treatment 想要多長來說會跟想要觀察到的 Metric 有多 Sensitive 有關。

比如說我想要觀察的是這個 Professional 會不會續約,這個時間太短就看不到結果,但如如果是要看 Marketing Content 會不會促使購買行為,這個短期看得到結果,可以跑 1 個月就好。

剛剛舉過的例子,Google 的 Paper上面做 Advertising,其實就只跑了1個月,就是從4月初到4月底,Pre-treatment 時間大概兩個月。

Photo by Aron Visuals on Unsplash

回到剛剛這個問題,Post-treatement 也是針對想要的 Metric 做決定,Pre-treatment 要放多長,也需要看 Control 以 Time-based Regression 來說的話,要去看 Control 能推算出 Treatement 的能力需要多長時間,如果 1 個月的資料就可以預測的很好,那就跑 1 個月,如果需要更多資料就需要拉長時間。

Q5: 請問 Geo Experiment有推薦的書籍或課程嗎?

A5:我覺得線上資源比較少,大部分是用關鍵字慢慢找,因為會有很多的不同的關鍵字,可能是 Marking Segmentation 或是 Geo Testing,每篇的關鍵字不太一樣,就有點像在做文獻回顧,會越找越發現跟這個主題有關的關鍵字,我的經驗是沒有統一的方法,就是從關鍵字開始一步步搜尋。

Photo by Patrick Tomasso on Unsplash

Q6:想知道除了Geo Based Experiment以外有考慮過其他實驗方法嗎?

A6:其實就是在書本上看到很多不同的分析的方法,不過都不太算有真的考慮跟真的有用過,沒有什麼更多可以分享。

不過這是個蠻好的問題,就是我們還有什麼方法可以去嘗試改善剛才提到的 User-Based Experiment 問題,如果有什麼好的建議的話,也可以跟我分享。

筆記手:盧姵吟 Lavina Lu
校稿:Tino Cheng、Ting Yu
👉 歡迎加入台灣資料科學社群,有豐富的新知分享以及最新活動資訊喔!
https://www.facebook.com/groups/datasciencemeetup

--

--

lavinalu
twdsmeetup

軟體 PM |商業智能分析 BA|增長專案 Growth Project|策展與媒體行銷 Curation Marketing|數位媒體編輯 ft. 瑜珈老師。email: dance3022@gmail.com