「夫子憮然曰、鳥獣不可與同羣。吾非斯人之徒與、而誰與。
「論語」微子、第十八、六

2012/06/03

A/Bテストを乗り越えろ

日曜日は家事の日。 珈琲、苺ジャム入りヨーグルト、バナナの朝食。 洗濯と紙類の片付けのあと、朝風呂。 昼食は御飯を炊いて、卵かけ御飯、焼き鮭、冷奴、蕪と胡瓜の糠漬、新玉葱と若布の味噌汁。 午後は昼寝ののち、家事のあれこれ。 主に掃除と、料理の仕込み。 夕食は作りおきのポテトサラダ、カレーライス、蕪の糠漬。 風呂上がりに、ネーブルオレンジを一つ。

二つの案のどちらかを選びたいときに、言わゆる「A/Bテスト」を使うことがある。 例えば、オンライン商店を作りたい。そのページのデザインとして A案とB案が Web 担当者からあがってきた。 どちらにしよう。多くの場合は、社長とか偉い人が「ピンと来た!Bで行こう」とか決めるのかも知れないが、 実証を重んじる場合には、両方試して比較しよう、ということになる。 Web ショップなら、ほとんどコストをかけずに同時に両方試せる。 二通りのページを作っておいて、接続してきた客を半々の確率でランダムに振り分け、 しばらく様子を見て、うまく行っている方を選べばよい。 これがA/Bテストである。 最近、これより「はるかに良い」方法が この blog 記事 で紹介されて、話題になっている。 "Multi-Armed Bandit" と呼ばれるもので、 Microsoft 研究所の プロジェクトがネタ元のようだ。

非常に易しいので、ここに紹介しておこう。 訪れた客に対して、(例えば)1 対 9 の割合でランダムに「調査モード」か「開拓モード」かを決める。 「調査モード」になった場合は通常のA/Bテストと同じく、A案とB案を半々の確率で提示する。 「開拓モード」の場合はその時点まででうまく行っている方の案を提示する。 これだけ。 この方法だと、A/Bテストに比べて、良い案の方がより多く提示される。 実際、Web コマースの言葉で言えば、常にコンバージョン率の期待値がより高い。 しかし、A/Bテストを打ち負かした、かと言うと、そうでもない。 極端なケースを少し想像してみれば(例えば、1 対 9 ではなくて、1 対 999 なら?)、 この方法は上の長所と引き換えに、二案を比較する能力そのものが劣化していることに気付く。 実際、統計的に有意な結果を得るまでに余計に時間がかかる (興味のある方には、例えば、 こちらの blog に詳しい説明がある)。 つまりこの方法には良い面もあるが、悪い面もあり、 特に統計的有意性の判断に関わるだけに判断はデリケイトである。

最初にリンクした話題の blog では、「そんなに簡単で強力ならどうして皆こちらのアルゴリズムを使わないのか」、 という疑問に対して、「ほとんどの人には統計学は理解できないし、 理解できないものも機械学習も信用しないからなんだよね」、と言った感じのことが書かれているが、 少し違うと思う。 統計学は強力ではあるが微妙なツールなので、一面だけの良い数字に飛びつくのは危険だ、 という程度のことは、(統計や数学に詳しくない)開発者も認識している、 ということなんじゃないだろうか。