なんちゃって協調フィルタリング@pixiv-08-

pixivのイラストに対して協調フィルタリングっぽい何かを用いて、指定したイラストに傾向や内容の近いイラストを抽出、レコメンドしようとする試み。色々出して結果を見てみようかと。
オフィシャルにそういう機能があったら嬉しいという下心も込みで。

2008/12/31時点で、ブクマの多寡を問わずそれなりの性能を発揮する優秀な計算法ができたので、実装し、結果をpixivにてブックマークグループとして公開中。
標準偏差最大化足切り法は、同時ブクマ数が、上に行くほど増量が増す数列になっていたため、却下。要するに、同時ブクマ数に対する閾値を上げれば上げるほど分散が上がる、という状態だった。

第五回「暫定最終版:二重シグモイド関数信頼度法」

シグモイド関数などの、y(信頼度)= 1 に漸近する関数を信頼度に用いることを考えた際、主な問題点は、「同時ブクマ数と全体ブクマ数、どちらについて信頼度を計算するか」だった。
結論から言うと、どちらでも大した性能は出なかった。そこで、どっちも使ったらどうだろうと考えたのが、今回の手法となる。

計算法その5
基本的に計算法その3を用いる。ただし、関連度に対して、同時ブクマ数・全体ブクマ数それぞれについて変形シグモイド関数シグモイド関数に × 2 - 1 して、x = 0の時 y = 0 を通るようにした上、xが閾値の時に0.95を取るように係数 a を設定した関数。閾値については後述)を用いて計算した2つの信頼度を掛け合わせる。閾値は、同時ブクマ数が20、全体ブクマ数が50とした。

要するに、同時ブクマ数が20、または全体ブクマ数が50になるまでは、信頼度が0.00→0.95まで大きく変化するため影響力が大きく、このラインを超えると、信頼度の変化が0.95→1.00の緩やかな上昇になるため影響力が極小になる、という挙動をしている、はず。データ数が少ないイラストに関してもそこそこの性能を発揮し、データ数が十分なら計算法その3とほぼ同じ挙動をする、割と理想に近い関数になっているはず。
ただし、閾値に根拠がないのがアレ。とりあえず、適当に動かしてそこそこ性能がよかったので採用した。