#討論 自製 A/B testing 統計引擎的二三事

========== 我是分隔線 下面自我 Q&A ========== Q1: 為啥這次是用 #討論 而不是 #分享 A1: 因為這次查了很多資料但是還是沒搞懂,所以我是上來找大神的 Q2: ...... 前情提要一下:上次去北京學到的兩點: 1⃣️、A/B testing 的頻率與公司規模成正比:
megapx
2⃣️、A/B testing 需要注意均勻性、唯一性
megapx
然後因為種種需求,所以我開始自製 A/B testing 的統計引擎拉 整個流程大概是這樣: 1️⃣、實作統計引擎 2️⃣、A/A testing 確定統計引擎沒問題 3️⃣、快樂的測 A/B testing 所以在講 A/B testing 之前先插播一個觀念,A/A testing 附上原文:
A/A testing 就是把人分成兩群,但是給他們一模一樣的素材、算法然後上線去跑一下,希望測量到的數據是一模一樣的你可能會想問為啥要浪費時間側做 A/A testing 啊?看起來對公司沒任何幫助沒錯,沒有任何幫助,因為他是用來檢查你的統計引擎有沒有寫錯的 📌使用時機:剛換新的統計引擎、平台的時候,最好測一下 ⚠️注意事項: 🔺Misreporting of key performance indicators:最好有兩個以上的工具來收數據,這樣才可以做 double-check 🔺Stopping a test too early:這種情況用下面兩張圖解釋,一言以蔽之就是跑越久測出來的結果當然越準確 這是某位人兄的 A/A testing 結果,看起來是失敗了,因為出現贏家了 🙈
但是再放一陣子就發現其實效果一樣,哪招? 下次遇到 A/A testing 失敗時,確定一下你沒有 Stopping a test too early
知道 A/A testing 了,我們要朝 A/B testing 進發拉🖐 附上我覺得還行的參考文獻: 1️⃣:
2️⃣:
3️⃣:
4️⃣:
再來就是問題所在拉,前面提到過「A/B testing 需要注意均勻性、唯一性」到底均勻性具體要怎麼實作呢?假設我們今天只有一個維度,性別好了,母體會員總共有 100 人,我很輕易的就可以把 A、B 兩組的男女比例分配的一樣,最多就浪費的兩人(多出一男一女)那假設我今天希望 A、B 兩組在十個維度上都分配均勻呢? 性別、身高、年齡、學校、地區、職業...隨便舉個人: 小明, male, 162, ntu, taipei, data engineer 完全的分配均勻意思是說我要在母體中,找到另一個人假設叫小王: 小王, male, 162, ntu, taipei, data engineer 當你維度設得越高的時候,這種人就越難找到,意思是說 A/B testing 分出來的兩組人數會越來越少...人越少測起來越不准啊,關於這個問題我沒查到有人在提 我自己的想法是應該要用 z-test 去跑跑看兩邊的 distribution如果沒有達到統計顯著的話,應該就可以接受 ⚠️:問題來了,z-test 只適用於一維空間,假設我今天有 10 維,你各自跑完 10 次 z-test 之後,請問信心水準是多少?不知道,除非每個維度之間都是獨立事件,你的機率才可以相乘吧 95% * 95 ... 這樣? 翻來覆去查到了一篇論文提到高維空間的 distribution 應該用 energy statistics 衡量 📌論文:
完全看不懂 🤯,好家在他有給 code 🤪 👻:
有趣的是他的 API 用法是 mvnorm.etest(iris[1:50,1:4], R = 199)居然只丟一組資料進去算 p-value ?我以為會是像 z-test 是計算兩組資料的 p-value 捏,那A安捏 QAQ 然後PM 給我的時間就到拉 最後實作就是隨機抽樣抽個 A/A/B 組給 PM,反正 PM 也不會看到這篇文拉哈哈哈😈 而且還有 A/A test 同時檢驗這樣抽樣有沒有問題,應該不會太慘 . . . 所以有大大知道 A/B testing 在分組的時候到底要怎麼分才能確保盡量每個維度都是公平的嗎🙇♂️ ------------------------------------------------------------------------------------------------------------------------ 如果你喜歡這篇文章,請按一下喜歡以及右上角訂閱按鈕。看更多文章:
愛心
7
12
全部留言