『PageRankの数理』

This entry was posted by on Tuesday, 3 November, 2009

Google PageRankの数理 ―最強検索エンジンのランキング手法を求めて―

良書だと思う。先だって『Googleを支える技術』という本が出たが、それにおとらぬ良書だ。

『Googleを支える技術』はMapReduceやGFSなどGoogleが整備するインフラ面に着目して、それがどういったものであるかを解説していた。言ってみれば本書はそのランキング版というべきかもしれない。ただ、『Googleを支える技術』と決定的に異なる点があり、それはなにかというと、この本では「Googleは実際どういう事をしているか?」ということにあまり重きをおいていないという点にある。

ページランクは1998年に論文として報告されているのだが、その背景的な数学はなかなか面白い。それも、単に数学というだけでなく、「いかに効率的に計算するか?」という課題が別に存在し、それも本書の重要なトピックになっている。そのあたりは実はいろんな大学のいろんな研究者によって研究されていた。この本はそれらの成果を集め、まとめたものである。つまり、ページランクというアイディアはGoogleによるものだが、そこから得られる知見や一般的な数学的な事実、または関連する様々な研究アイディアというものはGoogleとは無関係に存在するわけで、本書はもっぱらそちらについて取り扱っているのだ。また、ほかにもHITSのような、ページランク以外にウェブページのリンク構造を利用したランキングシステムについてもそれなりにページを割いて説明している。したがって、ページランクは本書の主要な内容ではあるけれど、単に野次馬的にGoogleのページランクを解説した凡百な本とは一線を画す。それがこの本の原題であるGoogle’s PageRank and Beyondに込められた思いだろう。

もしあなたがGoogleのランキングシステムについて……とくにその裏をかいてランキングを操作しようと考えているのだとすると、この本は何も役に立たない。そもそもGoogleのランキングだってページランクが全てではないし、本書で述べられているように、”ページランク”というのは実際には単独の数値ではなく様々なパラメータによって挙動を変えるのだ。Googleがどのようなパラメータを用い、どのように計算しているかは基本的に非公開なので正直どうしようもないだろう。

それから、この本はもっぱらウェブページのリンク構造にしか注目していないという弱点もある。実際、たとえばPageRank は、Google がウェブページのランク付けを行ううえで用いる 200 以上の技術のひとつに過ぎないわけだし、現実のランキングにおいてリンク構造だけっていうのは今やありえないだろう。

しかし本書はそれでも役に立つし、何より面白い。

すでに書いてしまったけれども、本書はGoogleが実際に使っているページランクという数値ではなく、ページランクという概念、もしくはウェブページのリンク構造から何らかの意味のある情報を抽出するにはどうしたらいいのか?という課題を説明した本だということになる。たとえば「ページランクは実際にはどのように計算すればいいのか?」「その計算は収束するのか?」といった疑問に本書は答える。それだけではなくて、大規模計算がどうしたら可能になるかとか、楽をする方法はないか、といった現実的な問題も議論される。もっとも、基本的には数学で語られるので(たまにMATLABのサンプルコードが載っているが、MATLABというあたりに著者のお里が知れるよな)、本書で語られる内容を実地に「下ろす」作業は読者の責任となるわけだが。逆に言えば、ある計算法が本書に紹介されるとき、それが正しい答えとなることは理論的にわかるし、正しくないとしてもどれぐらいの誤差がどう出てくるかは理論的に示される。だからこの本は強い。

軽い本じゃない。線形代数に関する知識がある程度必要になるので、その辺が欠如していると読むのはけっこう大変だろう(ぼくも線形代数は得意ではないので、読むのに時間がかかった)。でも面白かった。大学生やこの手のトピックに興味のある技術者に一読を勧める。

ところで、上では理論ばっかり強調したが、本書の著者はもうちょっと「実用」寄りのことを考えていて、たとえばクローラーをMATLABで実装したというサンプルコードがあったりする。が、正直なところこれは蛇足だったように思う。

追記: MATLAB 使うとなにかいけないことがあるのでしょうか? いや、いい悪いはべつにないんですけど、MATLABってある種の研究コミュニティでは非常に愛されているけれど、それ以外の世界ではあまり使われない、みたいな存在だと思っているので、著者はそういう人だよな、と思った次第。ページランクの行列計算はともあれ、クローラーのサンプルコードですらMATLABっていうのはちょっと珍しいなかと。そういう著者なので中身もバリバリ線形代数ですよ、というあたりまで含意したかったけれど、まあそれはさすがに。

Comments are closed.