elsur.jpn.org >

« 読了:Soper, Milford, Rosenthal (1995) マーケティング研究者って実証性がないと知っているにも関わらずよくマズローを引き合いに出すじゃん?あれってどうなの? | メイン | 読了:Linzer & Lewis (2011) RのpoLCAパッケージ »

2017年8月28日 (月)

引き続き、6月頃にとったメモ。これは外出先のコーヒーショップでメモした覚えがある... なにかの時間待ちだったと思うのだが、全然思い出せない。

Smith, B., Linden, G. (2017) Two Decades of Recommendation Systems at Amazon.com. IEEE Internet Computing, 21(3), 12-18.

 たまたまみつけた面白い記事。
 いきさつとしては... IEEE Internet Computing誌20周年を記念して、過去の重要論文を選び表彰することにした。栄えある第一回受賞者は、2003年に掲載された"Amazon.com Recommendations", 著者はamazon.comのなかの人であるLinden, Smith, Yorkの三名。おめでとうございます。
 というわけで、著者のみなさんにその後を振り返っていただくことにしました... という主旨。受賞論文の第一著者であるLindenさんは、この論文ではMicrosoft所属になっており、時の流れを感じさせます。
 せっかくなので受賞講演風にメモ。

 どうもありがとう... ありがとう... (拍手が鳴りやむのを待つ)
 これまでの20年間に渡り、amazon.comは個々の顧客のためのお店を作って参りました。(ここで気の利いたジョークを一発かまして笑いを取る)
 amazon.comの推薦システムは、あなたの現在の文脈と過去の行動に基づき、あなたに喜んで頂けそうな少数のアイテムをピックアップします。私たちがアイテム・ベース協調フィルタリングをローンチしたのが1998年。IEEE Internet Computing誌でアルゴリズムを紹介したのが2003年。このアルゴリズムはいまやWebにあまねく広がっております。

 90年代中期の協調フィルタリングは基本的にユーザ・ベースでした。つまり、まずあなたと関心が類似している人を探し、次にその人たちが買っていてあなたが買っていないアイテムを探すというものでした。
 それに対して私たちのアルゴリズムはこうでした。あらかじめ、カタログ上の個々のアイテムについてそれと関連したアイテムを探しておきます。ここで「関連している」というのは、とりあえずは、いっぽうを買った人は他方も買いやすい、ということだとお考えください。この表を参照して、個々の顧客へのお勧めを素早く生成します。このアルゴリズムなら、ほとんどの計算をオフラインで済ますことができます。こうして得られるお勧めは高品質かつ有用、サンプリングなどの手法を使わなくても大規模データに対応できます。

 2003年の出版の時点で、アイテム・ベース協調フィルタリングはamazon.comで広く採用されていました。ホームページ、検索結果、ショッピングカート、注文終了後画面、eメール、商品明細ページ、などなど。amazon.com以外にも広がりました。2010年にはYouTubeが採用したと伝えられております。オープン・ソースやサード・パーティ・ベンダーの推薦システムにも広く採用されました... [ちょっと中略]
 ではここからは、私たちが行ったアルゴリズム改善についてお話ししましょう。

 推薦システムは、突き詰めていえば統計学の応用です。人間の行動はノイジーであり、ランダム性のなかから有用なパターンを見つけるというのがここでの課題です。
 アイテム$X$と$Y$の両方を買う顧客の人数$N_{XY}$を推定するという問題について考えてみましょう。ひとつの自然なやり方は、$X$の購入者が$Y$を買う確率は一般の母集団のそれに等しい、すなわち
 $P(Y) = $(Yの購入者数)/(全購入者数)
と考えて、
 $E_{XY}=$ (Xの購入者) x $P(Y)$
を推定値とすることです。
 しかし興味深いことに、たいていの$X$と$Y$において、$X$の購入者が$Y$を買う程度は、一般の母集団のそれよりも高くなります。ヘビー・バイヤーがいるからです。いいかえると、購買を無作為に抽出すると、顧客の抽出確率は一様にならないわけです。
 そこで私たちはこう考えました。商品$X$を購入した顧客$c$について(これを$c \in X$と書くことにします)、その人が$Y$を買う確率は $1-(1-P_Y)^{|c|}$ だと考えます。ここで$P_Y$=(Y購入)/(全購入), $|c|$は$c$が$X$以外のなにかを買った回数です。たとえば$c$さんが20回買い物したら、$Y$を買う独立なチャンスが20回あったと考えるわけです。ここから
 $E_{XY} = \sum_{c \in X} \left( 1-(1-P_Y)^{|c|} \right)$
ここから次式が得られます:
 $E_{XY} = \sum_{k=1}^{\infty} \left( P^k_Y \sum_{c \in X} (-1)^{k+1} \binom{|c|}{k} \right)$
ここで$P_Y$は小さいですから、有界の$k$で近似できます。$P_Y$と$\sum_{c \in X} (-1)^{k+1} \binom{|c|}{k}$はあらかじめアイテムごとに算出しておくことができます。これを組み合わせて$E_{XY}$を素早く算出できるわけです。

 さて、この$E_{XY}$を実際の併買者数$N_{XY}$と比べれば、2商品間の類似性スコア$S(X, Y)$をつくることができます。たとえば非ランダム共起数$N_{XY}-E_{XY}$を使うという手もありますが、$Y$がハリーポッターだったりすると高くなるという難点があります。$(N_{XY}-E_{XY})/E_{XY}$とする手もありますが、今度は販売量が低いアイテムがどんどんお勧めされることになりますね。うまくバランスを取ってやる必要があります。たとえばカイ二乗スコア$(N_{XY}-E_{XY})/\sqrt{E_{XY}}$を使うとか。
 他にもいろいろ方法はあります。私たちの経験に基づいていえば、あらゆる場面において最良なスコアは存在しません。場面ごとに、機械学習や統制実験によってパラメータの最適化を図ります。

 [関連性の指標が良くてデータが十分なら、関連アイテムの意味づけはデータから創発する、という話。デジタルカメラのメモリカードの互換性が関連アイテムで表現されるとか。さいでございますか。中略]

 推薦の品質を向上するためには...

 未来の推薦システムはどのようなものになるでしょうか?
 私たちはこう想像しています。それは買い物をまるで会話のように簡単なものとしてくれる知的なインタラクティブ・サービスになる。あたかも、あなたのことをよく知っている友達とおしゃべりしているかのような。
 すべてのインタラクションがあなたの好みを反映する。もしあきらかにあなた向きでないものがおすすめされたら、まったくもう、あなたはまだ私のことがわかってないのね? という気持ちになる(場内笑い)。ひとことでいえば、どこでも人工知能、ですね。
 こういう未来を実現するためには発想の転換が必要です。推薦システムの特徴やエンジンを改善するという問題ではありません。あなたを理解し、他者を理解し、いまなにが利用可能かを理解することが、すべての相互作用における必須の部分となります。

 およそ20年前にamazon.comがローンチした推薦システムは、いまではWebのいたるところで用いられています。アイテム・ベース協調フィルタリングはいまでももっとも一般的な推薦アルゴリズムのひとつです。
 この領域はいまだ広く開かれており、多くのチャンスが残されています。推薦は発見であり、驚きと喜びを提供します。推薦、それはインタラクションそのものです。(キメ顔)
 御清聴ありがとうございました。(拍手)

 ...あーあ。推薦するアイテムの多様性をどうやってチューニングしているのかに関心があったけど、やっぱし、あんまし詳しいことは説明してくれないんだなあ。そりゃまあ、企業秘密だよなあ...

論文:データ解析(2015-) - 読了:Smith & Linden (2017) amazon.com推薦システムの20年

rebuilt: 2020年4月20日 18:54
validate this page