RSSリーダ・サービスが更新チェックするフィードを選択するアルゴリズム(修正版)

先日、はてなは理系の会社? - higepon blogのエントリに触発されて、RSSリーダ・サービスが更新チェックするフィードを選択する戦略を考えた。(更新をチェックするRSSフィードの賢い選択方法 - llameradaの日記

一応の結果を得たものも、先日の計算で求めた式には不満があった。それはフィードの更新頻度が反映されていない点である。計算間違いかと思い、何度か計算をチェックしたが、計算自体は問題ないようであった。

そこで改めて考え直してみると、フィードの更新モデルが不適切であった。フィードが更新される間隔に指数分布を仮定していたが、この仮定は明らかにおかしい。指数分布ではフィードの更新間隔が0である確率が0ではない。指数分布ではなくベータ分布を仮定すべきであった。(指数分布もベータ分布の一種ではあるが。)

そこで、フィードの更新間隔にベータ分布を仮定して、再計算しようとしたが、ベータ分布の累積密度関数の計算が面倒であった。そのため、フィードの更新間隔に単純な分布を仮定して再計算してみた。興味のある人はこちらのpdfをダウンロードしてください。

計算結果は次のようになった。フィードの購読者数を r, フィードが最後に更新された時刻を t、フィードの更新間隔の平均をλとして、次の値を最大にするフィードを選択する戦略である。

 \frac{r t^4}{ \lambda}

以上より、購読しているユーザ数が多く、更新時刻が古く、更新間隔の短いフィードを優先してチェックすべきなのが分かる。なお、del.icio.usのコメントにもあったが、このような式の計算機による計算では、対数を取った形で計算した方が精度・効率が良いことが多い。また、tやλを何乗するかは、チューニングパラメータにすることが出来る。このモデルだと更新の止まったブログでも何度も更新チェックすることになるので、そのあたりを調整する必要があると思う。