Ქულების გაანგარიშების წესების A/B ტესტები
ქულების დადება ნებისმიერი თამაშის გულია. მოთამაშეთა ქცევა, მონაწილეობის სტრუქტურა და ეკონომიკა (ARPPU, ბონუს კოჭები) დამოკიდებულია იმაზე, თუ როგორ განიხილება ქულები. ქვემოთ მოცემულია პრაქტიკული რეცეპტი, თუ როგორ უნდა შეამოწმოთ სათვალეების ახალი წესი და დარწმუნდეთ, რომ მეტრიკის ზრდა რეალურია და არა არტეფაქტი.
1) რა არის გამოცდა
წესების მაგალითები:- განაკვეთების ოდენობით: 1 ქულა ყოველ 1 განაკვეთზე.
- Win/bet მულტიპლიკატორის მიხედვით: სათვალეები = k- ის გამაძლიერებელი, ქუდი თითო განაკვეთზე.
- ჰიბრიდი: ბრუნვისთვის + ბუჩქი „სერიისთვის“ (ზედიზედ N უკანა), ქუდები წუთში/საათში.
- მისიები: ფიქსირებული ქულა დავალებების შესრულებისთვის (T1... Tn) მზარდი სირთულეებით.
ჰიპოთეზა (მაგალითი): „მოდელი „მულტიპლიკატორი + cap“ გაზრდის participation _ net და completion rate Net ARPPU- ს გაუარესების გარეშე (პრიზების/პრემიების შემდეგ) „.
2) ექსპერიმენტული ერთეული და რანდომიზაცია
განყოფილება: მომხმარებელი (არა სესია, არა მოწყობილობა).
განაწილება: სტატიკური ჰაში (user _ id - bucket) ფიქსირებული მარილებით; აქციები 50/50 ან 33/33/33 A/B/C.
სტრატიფიკაცია (რეკომენდებულია): payer-status (ახალი გადახდა/ხელახლა გადახდა/გადაუხდელობა), პლატფორმა, გეო.
Sticky-assignment: მომხმარებელი ყოველთვის ხედავს იგივე წესს ტესტის განმავლობაში.
SRM (Sample Ratio Mismatch) შემოწმება: ყოველდღიურად შეამოწმეთ ჯგუფების ფაქტობრივი წილები მოსალოდნელი (chi მოედანი). SRM - ტრაფიკის გაჟონვის სიგნალი, მცდარი ფილტრაცია, შეცდომები.
3) მეტრიკი და „ქულების ძაბრი“
აქტივობა და მონაწილეობა
Reach: წილი, ვინც დაინახა Ivent.
Participation _ gross: შემოვიდა/eligible.
Participation _ net: დაიწყო პროგრესი/eligible.
Completion: დასრულებული/დაწყებულია.
ხარისხი და ფული
ΔDAU/WAU и stickiness (DAU/WAU).
Avg Bets per Session, Avg Bet Size.
ARPPU (net) = ARPPU − (Prize + Bonus Cost per payer).
Avg Deposit, Paying Share.
Net Uplift: (დამატებითი შემოსავალი) - (პრიზები + პრემია + ოპერაციული + ფროიდის გაჟონვა).
გარდერილი
საჩივრები/ტექნიკური დახმარება 1000 მომხმარებლისთვის, KYC- ზე უარის თქმა, განაკვეთების არანორმალური შაბლონები, RG დროშები (ლიმიტები, თვითკმაყოფილება).
4) ხანგრძლივობა, სეზონური და სიახლე
მინიმუმ 2 სრული ბიზნეს ციკლი (მაგალითად, 2 კვირა შაბათ-კვირის მოსაპოვებლად).
გაითვალისწინეთ novelty-effect: პირველი 48-72 საათის ზრდა დაფიქსირდა და გაანალიზეთ ფაზები (D0-D2, D3-D7, D8 +).
ნუ გადალახავთ დიდ პრომო ან დაგეგმეთ „თანაბარი ხმაური“ ჯგუფებად.
5) ნიმუშის სიმძლავრე და მოცულობა (გაანგარიშების მაგალითი)
მიზანი: იპოვოთ განსხვავება C საშუალო „მომხმარებლის სათვალეებში“ (ან Net ARPPU).
ორფეხა ტესტის ფორმულა (თანაბრად ჯგუფებში):[
n _ {{{text {ჯგუფზე} =\frac {2, (z _ {1-\alpha/2} + z _ {1-\beta}) <2 ,\sigma <2 }\\\\Delta = 2}
]
მაგალითი: ჩვენ გვინდა დავიჭიროთ C = 5 ქულა, = 1202, მე = 0.05 (ორმხრივი), ძალა 80% () = 0.2).
(z _ {1-s/2} = 1 {,} 96), (z _ {1-s} = 0 {, 84) - თანხა 2.8-კვადრატი 7.84.
(\sigma^2 = 14,400).
(n =\frac {2\times 7 {,} 84\times 14,400} {25 }\approx\frac {225.792} {25 }/approx 9.032) ჯგუფისთვის.
6) დისპერსიის დაქვეითება: გააკეთეთ ტესტი „იაფი“
CUPED: რეგრესიული კორექტირება წინამორბედი კოვარიატებისთვის (მაგალითად, ქულები/განაკვეთები გასული კვირის განმავლობაში).
კოვარიატები: payer დროშა, ბრუნვის ლოგიკური ტრანსფორმაციები, აქტივობა, პლატფორმა, გეო.
შეცდომების კლასტერიზაცია: მომხმარებლის დონეზე (განმეორებითი სესიები შიგნით).
7) ჩარევა და „სრუტეები“
სათვალეების წესმა შეიძლება გავლენა იქონიოს არა მხოლოდ ტესტის მონაწილეებზე:- სოციალური შედარება (ზოგადი ლიდერი) - „სპილოვერი“.
- საერთო ჯეკპოტები/ერთობლივი მისიები ჯვარედინი ეფექტი.
- ცალკეული ლიდერები ჯგუფებში ან ქულების ფარული ნორმალიზება.
- კლასტერული რანდომიზაცია ტრაფიკის/გეოს მტევნებზე (უფრო ძვირი, მაგრამ სუფთა).
- პერ პროტოკოლი (ITT) + მგრძნობიარე ტესტები.
8) ანტიფროდი და ქუდი მართავდა
ქულების ნებისმიერი ცვლილება ასტიმულირებს ოპტიმიზაციას: მიკროსქემები, მოთეთრო მოშენება, „სათვალეების მეურნეობები“.
მინიმალური დაცვა:- ქუდი წუთში/საათში/დღეში და ერთი კურსით.
- განაკვეთების მინიმალური ცვალებადობა („იდეალური“ რიგითების აკრძალვა).
- Headless/განმეორებითი fingerprints, მარიონეტული.
- ძირითადი პრიზების გადავადებული გადამოწმება + KYC.
- ანალიტიკა: შეადარეთ განაწილების „სათვალეები/ფსონები“ და „სათვალეები/წუთები“, მოძებნეთ კუდები.
9) მოვლენები და მონაცემთა სქემა (მინიმალური)
მოვლენები:- `session_start {user_id, ts, platform}`
- `event_view {user_id, event_id, ts}`
- `event_join {user_id, event_id, ts}`
- `points_awarded {user_id, event_id, rule_id, amount, source, ts}`
- `mission_progress {user_id, mission_id, step, value, ts}`
- `mission_complete {user_id, mission_id, ts}`
- `bet {user_id, game_id, bet, win, ts}`
- `deposit {user_id, amount, ts}`
- `rules {rule_id, name, params, caps_minute, caps_hour, caps_day, version}`
- `assignments {user_id, test_id, group, assigned_at}`
10) SQL ესკიზი ანალიზისთვის
SRM შემოწმება (ჯგუფებად განაწილება):sql
SELECT group, COUNT() AS users
FROM assignments
WHERE test_id =:test
GROUP BY group;
- შემდგომი chi მოედანი მოსალოდნელი წილის წინააღმდეგ
წვეულება/კომპლექსი ჯგუფებად:
sql
WITH eligible AS (
SELECT user_id FROM users
WHERE last_active_at >=:start - INTERVAL '14 day'
), joined AS (
SELECT DISTINCT user_id FROM event_join
WHERE event_id =:event AND ts BETWEEN:start AND:end
), started AS (
SELECT DISTINCT user_id FROM mission_progress
WHERE ts BETWEEN:start AND:end AND mission_id IN (:missions)
), completed AS (
SELECT DISTINCT user_id FROM mission_complete
WHERE ts BETWEEN:start AND:end AND mission_id IN (:missions)
)
SELECT a. group, COUNT(DISTINCT j. user_id)::float/COUNT(DISTINCT e. user_id) AS participation_gross, COUNT(DISTINCT s. user_id)::float/COUNT(DISTINCT e. user_id) AS participation_net, COUNT(DISTINCT c. user_id)::float/NULLIF(COUNT(DISTINCT s. user_id),0) AS completion
FROM eligible e
JOIN assignments a USING (user_id)
LEFT JOIN joined j USING (user_id)
LEFT JOIN started s USING (user_id)
LEFT JOIN completed c USING (user_id)
WHERE a. test_id =:test
GROUP BY a. group;
Net ARPU და პრიზების/პრემიების ღირებულება:
sql
WITH payors AS (
SELECT DISTINCT user_id FROM payments
WHERE ts BETWEEN:start AND:end
), rev AS (
SELECT user_id, SUM(ggr) AS ggr
FROM revenue
WHERE ts BETWEEN:start AND:end
GROUP BY user_id
), costs AS (
SELECT user_id, SUM(prize + bonus) AS cost
FROM promo_costs
WHERE ts BETWEEN:start AND:end
GROUP BY user_id
)
SELECT a. group, AVG(COALESCE(r. ggr,0) - COALESCE(c. cost,0)) FILTER (WHERE p. user_id IS NOT NULL) AS net_arppu
FROM assignments a
LEFT JOIN payors p USING (user_id)
LEFT JOIN rev r USING (user_id)
LEFT JOIN costs c USING (user_id)
WHERE a. test_id =:test
GROUP BY a. group;
CUPED (მაგალითი):
sql
- pre _ value: სათვალეები/შემოსავალი ტესტამდე; value: ტესტის დროს
SELECT group, AVG(value - theta pre_value) AS cuped_mean
FROM (
SELECT a. group, x.user_id, x.value, x.pre_value, (SELECT COVAR_SAMP(value, pre_value)/VAR_SAMP(pre_value)
FROM x) AS theta
FROM assignments a
JOIN x ON x.user_id = a. user_id
WHERE a. test_id =:test
) t
GROUP BY group;
11) პირადი ეფექტები და ჰეტეროგენულობა
შეამოწმეთ HET ეფექტები:- ახალბედა vs core, დაბალი დონის მაღალი ვალი, სხვადასხვა პლატფორმები/გეო.
- ზოგჯერ ქულების ახალი ფორმულა „ანათებს“ mid-core ვეშაპების შეცვლის გარეშე - ეს აუცილებელი შედეგია.
- გააკეთეთ წინასწარი სეგმენტების რეგისტრაცია ისე, რომ არ დაიჭიროთ „p-hacking“.
12) ხშირი ხაფანგები
1. ყველა ჯგუფის საერთო ლიდერია ჩარევა.
2. ტესტის დროს პრიზების სტრუქტურის ცვლილებამ შეუდარებლობა გამოიწვია.
3. სათვალეების ფერმა მიკროტალღებით - არასასურველი uplift.
4. SRM და „მცურავი ფილტრები“ ETL- ში გადატანილ შეფასებებს წარმოადგენს.
5. „ჭუჭყიანი“ ARPU- ს მხარდაჭერა პრიზების/პრემიების გამოკლების გარეშე.
6. ადრეული გაჩერება რყევების გამო სწორი თანმიმდევრული სტატისტიკის გარეშე.
13) Bayes vs სიხშირე და თანმიმდევრული გადაწყვეტილებები
ჩარჩო: შეგიძლიათ გამოიყენოთ ბაიესის მიდგომა (მეტრიკის პოსტერიორი განსხვავება, ალბათობა „B უკეთესია ვიდრე A“), განსაკუთრებით დროულად მონიტორინგის დროს.
ფრთხილად: ქულების წესების ბენდიტები შესაფერისია დადასტურებული uplift- ის შემდეგ - ოპერაციის ეტაპზე, არა პირველადი სავალდებულო.
14) პასუხისმგებელი თამაში და შესაბამისობა
გამჭვირვალე წესები და ქუდები: მოთამაშემ უნდა გააცნობიეროს, თუ როგორ იღებს ქულებს.
აქტივობისა და დეპოზიტების შეზღუდვები, „პაუზები“ და RG რჩევები.
არ არის ფარული „ჯარიმები“ თამაშის სტილში.
15) მინი შემთხვევა (სინთეზური)
კონტექსტი: ყოველკვირეული ivent, A = „სათვალეები 1 განაკვეთისთვის“, B = „სათვალეები მულტიპლიკატორის win/bet, cap = 50/ფსონი“.
ზომა: 2 × 10,000 მომხმარებელი, სტრატიფიკაცია პაიერის სტატუსში. SRM - ok.
შედეგები:- Participation_net: A 17,3% → B 22,1% (+4,8 п.п.).
- Completion: A 38,9% → B 44,0% (+5,1 п.п.).
- Net ARPPU: A-41.2-ის B-43.5 (+ 2.3) Prize + Bonus per payer- ით 6.4 (არ შეცვლილა).
- საჩივრები/1k: უცვლელი; ფროიდის დროშები 0.3 პროცენტული პუნქტით. ქუდის გამო.
- დასკვნა: წესი B - გამარჯვებული; ჩვენ ვაწარმოებთ პრიზების „გრძელი კუდით“ და ვიცავთ ქუდებს.
16) A/B გაშვების ჩეკის სია ქულებზე
- ერთეული = მომხმარებელი, sticky-assignment, სტრატიფიკაცია.
- ცალკეული ლიდერები/ნორმალიზაცია ჩარევის მოსაშორებლად.
- მკაფიო ქუდები სათვალეებისთვის, ანტიბიოტიკების სიგნალები, KYC მთავარი გამარჯვებულები.
- ჰიპოთეზებისა და მეტრიკის ხელახალი რეგისტრაცია (პრიმიტიული/საშუალო/guardrails).
- ძალაუფლებისა და ხანგრძლივობის გეგმა, გათვალისწინებულია სეზონური.
- CUPED/covariates დაკავშირებულია, pline SRM ალერტები.
- Дашборд «Reach → Participation → Progress → Completion → Value».
- ანგარიში: ფულადი კვალი პრიზების/პრემიების შემდეგ, ფოსტის კუდი.
ქულების გაანგარიშების წესი ქცევის ბერკეტია. სწორად შემუშავებული A/B ტესტი (SRM- ის გარეშე, ანტიფროდით და კოვარიატებით) საშუალებას გაძლევთ უსაფრთხოდ გაზარდოთ მონაწილეობა, completion და Net ARPU, შეინარჩუნოთ მოთამაშეთა ნდობა და კამპანიის ეკონომიკა.