6

最高のエントリを見つけるために、好き/嫌いの並べ替えアルゴリズムを構築するための助けを借りたいです。その方法を考えましたが、この方法には2つの大きな欠点があり、もっと良い方法があるかどうか知りたいです。

これが私がそれをすることについてどのように考えたかです:

エントリは、l/dwherel = number of likesd = number of dislikes、で指定された比率で並べ替えられるため、比率が高いものはいいねの数が多く、比率が低いものよりも上位に値します。

この方法には2つの問題があります。

1:嫌いなものの数が0の場合、それはl/d不可能になります。したがって、エントリに1000のいいねがあり、0の嫌いなものがあっても、スコアボードには何も入りません。

2:好き嫌いの数が少ないエントリは、評価の数が少ないエントリが比率に影響を与え、エントリに良いスコアを与えるため、評価が多いエントリと比較して有利です。

どう思いますか?

編集:これが最初の問題を修正する可能な代替案です:(l + 1) / (d + 1)。これに関するフィードバックはありますか?

4

3 に答える 3

13

これは関連している可能性があります:平均評価でソートしない方法

于 2011-07-05T22:30:05.530 に答える
2

ゼロによる除算を削除するには、分子と分母に1を加算して、(l + 1)/(d + 1)を取得します。より多くのいいねでエントリをより高くランク付けしたい場合は、ランキング式にlog(いいねの数+ 1)を掛けることができます。ここでは、エントリのいいねがゼロの場合に発生する数学的エラーを削除するために1つ追加されています。以下の説明では、ログの底が10であると想定します。したがって、要件を満たすランキング式は、(likes + 1)/(dislikes + 1)* log(likes + 1)になります。

log(1)= 0であるため、いいねがない場合、この式はランク0を提供することに注意してください。投票が1つの好きな投票と1つの嫌いな投票に関連付けられているとします。log(2)= 0.3であるため、ランクは2/2 * log(2)=0.3になります。ここで、9つの好きなものと9つの嫌いなものの別のネクタイを考えてみましょう。この場合、log(10)= 1であるため、ランクは10/10 * log(10)= 1になります。つまり、log(likes)項は、いいねが少ないタイよりもいいねが多いタイをランク付けします。

于 2011-07-05T22:16:07.703 に答える
0

これは私にとって最もうまくいきました。

rank = likes * 100 / (likes + dislikes)

それは、より高い好きなもの、次に好きなものや嫌いなものの活動、そして活動なしの順に並べます。例:

likes, dislikes => rank
0, 0 => 0            //avoid /0 error
3, 3 => 50
3, 0 => 100
于 2014-04-06T18:57:57.350 に答える