ユーザーがオブジェクトに賛成票/反対票(+1/-1)を付けることができるランキングシステムがあり、各オブジェクトには累積rating_sum
があります。これは、負、ゼロ、または正になります。オブジェクトが で評価された合計回数も記録しrating_count
ます。したがって、ちょっとした代数で賛成票と反対票の数を取得できます。
オブジェクトの評価を考慮したスコアリング アルゴリズムを実装したいと考えていますが、古いオブジェクトはペナルティを受けてスコアが低くなることも意味します。
これまでのところ、次のことがわかりました。
score=rating_sum/(age^gravity)
wheregravity
は定数です (私は を使用していますgravity=2
)。
これは問題なく機能しますが、負の値の評価を除きます。この場合、オブジェクトが古いほど、そのスコアが大きくなります (負の値が小さくなります)。これは、同じマイナスの評価 (たとえば -2) を持つ 2 つのオブジェクトが与えられた場合、古い方が若い方よりもスコアが高く、浮動小数点数が高いことを意味します。
否定的な評価でも機能する、使用できるスコアリング アルゴリズムはありますか?
(技術的な理由から (私は django ORM を使用して最適化しようとしています)、かなり単純で SQL クエリ ステートメントに入れることができるアルゴが欲しいので、POW のみ、できればログ)