Amazonのレコメンデーションを用いた探索(『テヅカ・イズ・デッド』)
先日、『ユリイカ』の6月号(マンガ批評の号)を立ち読みしてたら、少し気になる記述があった。それは東浩紀と伊藤剛の対談の中にあったのだけど、伊藤は『テヅカ・イズ・デッド』で、東と夏目房之介を結びつける仕事をしたとか。私にとってそのこと自体はどうでもいいんだけど、その中で以前はamazonでその二人(東と夏目)を一緒に買う人はいなかったと言っていたと記憶している。うろ覚えだけど。
それを読んで、なるほどAmazonのレコメンデーションを用いて、読者というか消費者の購入履歴から批評的な立ち位置を考えられるかもしれないと考えたわけだ。要するに、ある商品からレコメンデーションを辿っていくと、どのようなものに辿りつくのか、ということである。これは批評を内容からではなく、消費のされ様から見ていこうとする試みといえるだろうか。そんなわけで、一般化のためにもここでは批評作品を「商品」と呼ぶ。
さて、簡単にアルゴリズムを示す。
- 対象とする商品のASINを取得する。
- amazon web services(API)を用いて、上で取得したASINに対して推薦する商品を求める。
- 具体的にはSimilarityLookupを用いた。この方法では10件の商品が推薦される。CartSimilaritiesを用いてSimilarProductsやSimilarViewedProductsを取得する方法も考えられる。
- 以下繰り返す。
- 探索の終了条件にはamazon距離を用いた。
amazon距離とは、ある商品からレコメンデーションを何回介して他の商品に辿りつけるかで定義する。一回で辿り着ける、言い換えればその商品のレコメンデーションに表示されている商品との距離は1となる。なお同一商品間の距離は0とする。
以下『テヅカ・イズ・デッド』からamazon距離3の範囲内の商品を記す。計測したのは2008年9月5日の21時40分から45分(JST)の間。
実装にはRubyを用いた。理論的には10枝の木構造となるためノード数は10^3+10^2+10^1+10^0=1111となるはずだが、重複があるために90程度になっている。表中の距離は最小距離。
分析するのも面倒なので、ざっと見た印象でしかないけど、マンガ表現論(?)の本が多いような気がする。
リンク構造を視覚化する技術を用いてグラフを作ってみようかとも思うけど、これも面倒なのでパス。サーバがあればウェブサービス化していろいろと調べてみたいけど、リソースがないのでどうしようもない。
上で得られた商品をスコアリングしてみた。スコアはamazon距離の逆数の和としている。ただし距離0(一番最初の商品)は1とする。例えば、ある商品が距離1に1回、距離2に3回現れた場合、スコアは1.0*1+0.5*2=3.0である。
クエリとして用いた『テヅカ・イズ・デッド』のスコアがあまり振るわないのは言わずもがな。