shyaginuma / papers Goto Github PK
View Code? Open in Web Editor NEWPapers I read
Papers I read
Booking.comでどのようにA/Bテストが活用されているかを紹介する
PMだけでなく誰もがA/Bテストのアイデアを思いつくためには過去のA/Bテストの知見がまとまっている必要がある。
必要な要素は以下
検索可能にするというのが難しい。例えば、「what were the findings related to improving the clarity of the cancellation policies in the past year」のような問いに答えること。タグでの運用はうまくいかなかったとのこと。
クロスプラットフォームでのユーザー追跡を可能にするロジックがある。(tracking method
と呼ばれている)
Adding a new tracking method can be done by any developer and we now have more than a dozen ways to identify visitors across all our products.
Booking.comのようなアプリもWebも使われる可能性のあるプロダクトでは重要になってくるそう。
A/Bテストでは意図しない結果となることが多くあるため、数字が信頼できるものであるということがとても重要。
データが正しいということのチェックに、二つの全く別のログから計算された数値があっているかをチェックしている。
We monitor the validity of the data used for decision making by computing a set of common metrics in two entirely separate data pipelines maintained by different engineers who do not review each other’s code, one doing near real-time aggregations (less than a five minutes’ delay) and one doing daily batch updates.
計算方法が正しいことの保証に、A/Aテストを行ったいくつかのケースを使ってテストを行っている。
Finally, we also monitor the statistical framework used for decision making by maintaining a pool of AAs (experiments whose treatment does not introduce any sort of change) which allow to validate its theoretical properties (e.g. false positive rates or the statistical distribution of metrics).
selective attrition: 解放後にその変更を目にする機会があるユーザーが集計に入っていない状態を指す。
特になし
Sample Ratio Mismatch(SRM)というABテストの結果の信頼性を著しく侵害する現象の定義をし、そのパターン化や検出方法、事前に回避する方法をまとめること
この図にこの論文の全てが凝縮されている。
一言で言うと、各variantに割り当てられるunitの割合が想定とずれることを指す。
例:以下のようなシンプルなABテストを想定する。
ここで、各variantに割り当てられるunit数の比( # in treatment / # in control )が1であることが期待されている。実際に計測を行った際、0.9など離れた値が確認され、適合度のカイ二乗検定などの統計的手法によって有意性が確認された時、SRMが起こっていると確認できる。
SRMはABテストのvariant割当以外でも発生する。例えば、分析の段階で特定のアクションをとったuser_idを分母にした指標で評価を行うとする。(Triggered Analysis)この時、分母となるuser_id数に不均衡が発生していればSRMが起こっていると見做され、分析結果の信頼性は低下する。
例:検索エンジンの検索結果の広告効果測定
この場合、検索結果の文言を変更したことによってtreatment群において広告ページへの流入増加が期待される。一方でtreatment群においてページの内容に変更はないので、購入数においては変化がないと仮定すると、分母となる訪問数が増えたことによってCVRは低下する。ここでは訪問数と言う評価指標の分母にSRMが生じており、これによって分析結果が全く当てにならなくなってしまうことが確認できる。
それぞれのSRMに対して有効な対処法、検知方法があるがまとめると以下のようになると感じた。
null
今まで自分がABテストを設計、分析していく中で遭遇したあの現象はSRMと呼び、またそれがSRMのほんの一部であることを知った。システマティックにできる部分はシステムに実装してExperimentationの信頼性を高めて行きたい。
大きくPerformant, Extensibleがコアだと感じた
Performant
Extensible
Next frontiersとして三点挙げられている
中でも Adaptive experiments がとても興味深い
Webサービスで測定するべきメトリクスを作成するフレームワークの提供(HEART)
従来からよく見られていた指標としてPALSE metricsがあった。これらはシステムやビジネス面のみカバーしたものだったが、新たにHEART metricsというユーザー行動に焦点を当てたフレームワークを提供しているところ。
HEART metricsの分解そのもの。その前に従来からあるPULSE metricsについての説明から
プロダクトの全体的な健康状態のチェックに使用される。とても重要なメトリクス群だが、解釈が難しい場面もある。例えば下記引用。
A change that brings in more revenue in the short term may result in a poorer user experience that drives away users in the longer term.
It is not always appropriate to employ metrics from every category, but referring to the framework helps to make an explicit decision about including or excluding a particular category
常に全種類網羅しなければならないわけではない。以下で一つ一つについてメモ
に相当するもの。定期的なsurveyでとるケースが多いみたい。(NPSとか)
に相当するもの。
例としてGmailでは元々WAUをengagementのメトリクスとしておいていたが、一週間で5日以上Gmailを使った人の割合をEngagement metricsにおいた。long-termなリテンションへの説明性も証明されたとのこと。
With the reasoning that engaged users should check their email account regularly, as part of their daily routine, our chosen metric was the percentage of active users who visited the product on five or more days during the last week. We also found that this was strongly predictive of longer-term retention, and therefore could be used as a bellwether for that metric.
新規 / 既存 のこと。Adoptionはプロダクトや機能の新規利用者数、Retentionは既存の継続率。何を持って継続と見なすのかはプロダクトや機能による。
taskが成功したかどうかはログベースで定義しても良いし、UERでも良いとのこと。
No matter how user-centered a metric is, it is unlikely to be useful in practice unless it explicitly relates to a goal, and can be used to track progress towards that goal.
ただメトリクスを決めるだけでなく、きちんとゴールに沿ったものにするためにはどうすれば良いのか?
複数の統計的仮説検定におけるp値を統合した値がカイ二乗分布に従うことを使って元々の帰無仮説を検定する方法。
最終的に以下の方法をベンチマークとして使用する。
Hは下の形で定義される誤差。Hによってlambdaが決定できることが示唆されている。
シミュレーションによって検証した。
本来の効果が0であり、複数のvariantを持つテストをシミュレーションした。
一旦なし
長期間A/Bテストを走らせるときのプラクティス共有
Long-termなA/Bの評価を行いたいケースはあるが、実際に気をつけるべきポイントなどがまとまっているものがあまりなかった。
3章から実際にPitfallについての説明となっている。
それと、この論文の中でFLT Paperと略されているGoogleの論文(#5) がこの論文の中で多分に引用されており、そちらを読んだ上でこちらを読まないとかなり理解が難しい部分が多い。
ログインを必須としないWebアプリケーションにおいては、A/Bテストのrandomizationにcookieを用いることがほとんどだが、そこまでstableじゃないので注意が必要。(1ヶ月の間に31%のcookieが破棄されるというリサーチがある)
例えばuserのchurnを促すような施策だった場合、long-termになればなるほどtreatment群に残るユーザーはヘビーに偏る。そこでchurnの様子を噛みできないような指標を用いていた場合、上振れした指標で間違った判断を下してしまうことにつながるので注意が必要。
TBD
線が引いてあるのを見ると、何かトレンドを見出したくなるけど実際はそこまで単純ではない。
例えばtreaement群において広告のクオリティを高くする実験を行ったとする。このとき、treatment郡ではより広告がクリックされるようになり、さらにアルゴリズムの学習が進む。なので実際の効果以上に効果が現れてしまうことがある。
期間中に、片方のvariantだけに影響を与える何かしらのイベントがあった時、効果が歪んでしまう可能性がある。
そしてこれはLong-termになればなるほど起こる確率が高くなる。
N/A
他にもSensitivityには2種類(検出力と動く確率)があり、動く確率がそもそも低い(例えばサービスに費やせる時間的制約を受けるなど)の場合はそのメトリクスで成功を判断するのは難しく、検出力が問題であれば打ち手があるといった切り分けは勉強になった。
A/Bテストにおけるメトリクスの設定について、そのプロセスや役割など
3種類のメトリクスを設定する
プロダクトの変更による長期的なインパクトを短期的に測定できる指標から予測すること
SpotifyのHome最上部にあるShortcutについて、どのように開発を行ったか
まず最初にユーザー行動の把握をしてどのようなものをショートカットに表示すれば便利に使ってもらえるのかを理解した。
Our analysis showed that, over the course of a week, for a given user, a meaningful amount of listening on Spotify comes from a relatively small number of entities.
とても少ないentity(プレイリストやアルバムのこと)から意味のある再生は生成されていることがわかった。
However eclectic our musical taste, once we have discovered a new song or a new album that we really like, most of us have a tendency to play it over and over again.
一度気に入ったものに出会うと、それを何度も聞く行動があることもわかった。
our initial hypothesis was: by creating a dedicated space on the top of Home and populating it with a user’s favorite content, we can reduce the effort needed to find and play the content they want to listen to, right now.
最初の時点で持っていた仮説をA/B testで検証し、モジュールの改善に集中できた。
最初からMLありきで開発するのではなく、まずヒューリスティクスを元にモジュールの改善を行った。
以下のような理由がある。
特に三つ目の理由が大事で、MLモデルのプロダクション実装には多大なコストがかかる。なのでヒューリスティクスでも良いのであればヒューリスティクスでやるに越したことはない。
Models are significantly harder to maintain, monitor, and debug in comparison to heuristics. What’s more, if we found that the model didn’t perform better than the baseline heuristic, there would be a good reason to keep a heuristic in production.
また、クイックにA/B testを回すことによってオンラインメトリクスとオフラインメトリクスの相関を取れ、集中するべきオフラインメトリクスを明らかにできた。
メトリクスに使用したのはショートカット経由での意味のある再生(時間か本数なのかは詳しく述べられていない)
ヒューリスティクスのものよりもMLを用いたものの方が 26.7% メトリクスを改善することができた。
AirbnbでのSummar intern報告
AirbnbがA/Bテストを行う中で踏んできた避けるべき落とし穴についての記事
A/Bテストで事前の想定よりも早い段階で判断すると間違った意思決定になるリスクがある
最もこの項目がコアだと感じた。
全体の指標のみ見ると実際に何がうまくいっていて、何がうまくいかなかったのかというところまで理解できない
ブレークダウンをすることによって、起こったことの解像度が上がる一方でブレークダウンをすることによって、偶然検出された差分を解釈してしまう可能性も高くなってしまうこと
ebayのようなA/B test実施時にSUTVAの侵害を避けられないプロダクトでどのように効果検証を行っていくのか、という一例を示したブログ
手法間で標準偏差を比較して、回帰分析が最良だとわかった
よって、上で挙げたConsを解消できれば、プロダクト改善を加速できる。
Meta analysisによって、該当するテストがSeasonalityを受けるのかどうかを判断する
個人的にmeta analysisを勉強できてないので時が来たらする。(fixed-effect modelとrandom-effect modelがある)
p-hackingにならないように経時的なテストをする科学的方法はいくつかある。
中でも3番目のGSTが最も良かったと。
この辺も全然知らないので時が来たらインプットするぞ。
検索クエリの前後関係を使ってクエリに対する満足/不満足を単純なClick情報よりも精度よく判別しようとしたもの
Query reformulation: 前のクエリでは辿り着けなかった情報へ辿り着こうとしてクエリを再構築すること。
0.895
→ 結果、全ての特徴セットを使うのが最も精度が良かった。
Click情報とQuery reformulationの情報を用いて予測モデルを作る
Query level success: 投げたクエリの目的を達成できること(欲しかった情報にたどり着くようなこと)
結果、Reformulation + Click classifierが最も精度が良かった。
タイトルの通り。A/Bテストで評価指標を決めるときに知っておくべきこと
よくConversionの予測モデルを作って、寄与度の大きな指標を評価指標に置こうとするアプローチがあるが、必ずしも効果的ではない。(First stepとしては良いとの言及もあるが)
メトリクスの良し悪しを客観的に判断するために、experiment corpusを作るのも効果的。experiment corpusとは、成否に確信が持てるA/Bテストのセットであり、教師あり学習の教師データのように使える。
様々な角度から起こったことがわかるようにmetrics setを作るべきである。一方で多すぎるメトリクスには次のような問題もあるので注意
例えば同じページの要素別など、簡単に分解できるようになっていると良い。MLモデルによって計算されたメトリクスなどは解釈が難しい。
NetflixでどのようにExperimentsが使われているのかについての記事
Experimentはこのプロセスを繰り返すのに不可欠な手法である。
Experimentでは以下の質問に興味がある。
Netflixでは再生体験の質(QoE)を上げることを目的にプロダクト改善を行っている。
causal impactの論文
OnlineサービスにおいてA/B testを行う時のRules of thumbの共有(タイトルの通りだけど)
小さな変更でも、Key metricsに大きなインパクトを産むこともあるという話。ただし、やはりこれが起こることは稀であって小さな変更だけを行ってしまうようなことには注意が必要。大胆な変更と上手くバランスを取っていく必要がある。
Key metricsに大きなインパクトがもたらされるのは稀なので、Twyman's Lawに則ってそのような変化が起こった時は再現性を取るとか成功/失敗要因を特定するなど信頼性に注意するべきという話。大きな変化が起こった時だけではなく、期待に反する変化が起こった時もそうするべきとなっていた。
この式が良くて、元々動く確率が低いmetricsが統計的有意に動いた時、本当にそれが改善している確率は低いという直感をベイズの定理を用いて示している。
mileage の意味を捉えられなかった。(有用性とかそういう意味なんだろうか?)
他で成功したA/Bテストは注意を持って見るべきという話。細かな前提条件が違ったり、有意水準が違ったりするとのこと。
特にWebサービスにおいて、performanceはkey metricへのインパクトが大きいよという話。その上、単なるレイテンシなどではなくperceived performance(近くされるパフォーマンス)をどう測定するのかが課題となっている。例えば、サービスの全く使われていない要素の読み込み時の表示速度が激しく悪化してもおそらくユーザーへの影響は軽微なことが予想される。
BingではTTS(Time To Success)が使われているらしい。Successは、ページ上から何かしらのクリッカブルなものを踏んで30s以上滞在すること。Clickが発生しないものに対しては課題が残っているとのこと。
タイトルにはAbandonmentとかClicksとかなっているけれど、実際はサイト全体の指標を改善するのは難しく、機能単体の指標を改善するのは簡単という話だった。
実験デザインを複雑にすると、デバッグが大変だし真の効果も測定しづらいのでなるべくシンプルにした方が良いという話。
中心極限定理を根拠に平均値が正規分布に従うとして仮説検定や信頼区間算出が行われるケースが多いけれど、実際に用いられる指標としては遥かにskewness(歪度)が大きくてサンプルをかなり大きく取らないと正規近似ができないものもあるよという話。確かに、サンプルサイズの計算等は正規性を仮定して行っているので上限が無い指標を用いる時は気をつけるべきかもしれない。
ずっと積んであったけれどいろんな論文で良く参照されているのを見かけるのでGWの機会に読んでみた。当初の期待よりも良くて、特にRule of thumbだけではなく実例が豊富なのが良かった。
N/A
Experimentでバイアスをもたらすいくつかの現象についての解説とそれを検知するためのアルゴリズムを導入した
Linkedinにおける過去の実験から、SRMのroot causeを知るための筋の良い分析方針であったり、Novelty Effect, Trigger-day Effectの検知のためのアルゴリズムが考案されている。
Single day impactとcross day impactが全く違うものになること。Treatmentに触れる日と触れない日の評価指標の値が異なることによって起こる。
以下の式でモデル化される
最初のうちだけ大きな効果が出て時間がたつに連れて効果が収束すること。
以下のような変更で起こりやすい
線形回帰を行い、以下の条件を満たす場合、Novelty Effectと認める。
MicrosoftのA/B testの中での直観に反した結果が出た実験の根本原因とそこからの学びで一般化可能な部分をまとめた
Best Practiceの共有といった内容なので技術的なポイントはほとんどなかった。
Best Practiceの共有といった内容なので検証的なポイントもほとんどなかった。
Carry over effectについて、示されている例ではその持続期間がネガティブなものの方が長いなど興味深い。
A/Bテストを行う中で遭遇するmetricsの誤った解釈についての12のパターンとその検知、軽減策をまとめたもの
先行研究では長期的な効果の予測やexperimentation platform, 新しい統計手法によってメトリクスのSensitivityを向上させるなど理論、技術的なテーマが多かったのに対して、メトリクスの解釈という極めてプラクティカルな観点で過去の実験結果からの学びを構造化している
発生するタイミングが違うだけでSample Ratio Mismatchによって説明できるものが多かったように感じた。
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.